发明内容
本发明的所要解决的技术方案是提供一种基于手机的游戏遥控方法,以解决现有技术的不足。
为解决上述技术方案,本发明提供一种基于手机的游戏遥控方法,包括以下步骤:步骤A、手机响应PC机发出的蓝牙搜索信号,启动包括传感器API模块及手机蓝牙应用模块的用户进程,并根据PC机的请求向PC机发送服务记录信息,建立与PC机之间的蓝牙通信;步骤B、所述传感器API模块启动包括传感器通信模块、传感器驱动模块及传感器维护模块的传感器进程;所述传感器驱动模块通过所述传感器通信模块,以预设定的协议读取加速度传感器芯片输出的数据,并将上述数据输入所述传感器维护模块中,所述传感器维护模块能够根据所述加速度传感器芯片输出的数据进行动作判断,并将判断结果作为动作通知发出;所述传感器API模块调用所述传感器维护模块中的传感器功能接口,直接读取所述传感器驱动模块接收到的所述加速度传感器芯片输出的数据,或接收所述动作通知;所述手机蓝牙应用模块设置定时器,定时从所述传感器API模块中读取所述加速度传感器芯片输出的数据或接收所述动作通知,并向通过中断信道向所述PC机发送,以便所述PC机接收到所述加速度传感器芯片输出的数据或所述动作通知后进行进一步的操作;步骤C、手机响应所述PC机的断开请求,断开与所述PC机之间的连接。
作为本发明的优选方案之一,所述步骤A具体为:步骤A1、手机收到所述PC机发出的蓝牙设备搜索信息,手机启动所述用户进程,所述蓝牙应用模块响应所述PC机的蓝牙设备搜索信息;步骤A2、手机与PC机进行配对和鉴权;步骤A3、手机收到所述PC机的搜索手机蓝牙服务请求,向所述PC机返回服务记录信息;步骤A4、手机收到所述PC机发送的控制信道连接请求,并接受该请求;步骤A5、手机通过控制信道发送数据,告知PC机手机蓝牙设备已连接;步骤A6、手机收到所述PC机发送的中断信道连接请求,并接受该请求,则手机与PC机之间的蓝牙通信建立。
作为本发明的优选方案之一,所述步骤C具体为:步骤C1、手机通过中断信道收到PC机发送的断开事件后,通过控制信道向PC机发送表示准备断开蓝牙设备的数据;步骤C2、手机收到PC机发出的控制信道断开连接请求,并接受该请求,断开控制信道的连接;步骤C3、手机收到PC机发出的中断信道断开连接请求,并接受该请求,断开中断信道的连接。
作为本发明的优选方案之一,所述手机与所述PC机之间按照蓝牙HID协议进行连接与数 据传输。
作为本发明的优选方案之一,所述加速度传感器芯片输出的数据为反映加速度矢量在空间三维坐标x,y,z上的分量值。
作为本发明的优选方案之一,进行动作判断的方法为:对于x,y,z三个坐标轴,分别计算每一坐标轴上相邻两个极值的差,并根据所得的三个差值判断动作的方向及力度大小。
作为本发明的优选方案之一,所述进行动作并判断的方法,具体包括以下步骤:步骤1、设置F1(n)=0,F2(n)=0,并获取加速度矢量在x,y,z坐标上的分量值;步骤2、分别获取加速度矢量在x,y,z坐标上的分量值的相邻极值:步骤3、分别将x,y,z坐标上的分量值的相邻极值相减,并根据所得的三个差值判断动作的方向及力度大小;其中,步骤2具体为分别对x,y,z轴上的分量值进行以下操作:步骤21、判断分量值Vn是否到达预 定的幅度值,若没有到达,则返回步骤1,若到达,则进入步骤22;步骤22、判断F1(n)是否为零,若是,则令F1(n)=Vn,F2(n)=Vn,若否,则进入步骤23;步骤23、判断Vn是否大于F1(n),若是,则令F1(n)=Vn,F2(n)=Vn,若否,则进入步骤24;步骤24、判断Vn是否小于F2(n),若是,则令F2(n)=Vn,F2(n)=Vn,若否,则进入步骤34;步骤3具体为:在x,y,z坐标上,分别计算F1(n)-F2(n)的绝对值差值,并根据获得的三个绝对值差值判断动作的方向及力度大小;其中,n=x、y、z。
作为本发明的优选方案之一,所述传感器API模块还包括设置动作属性参数的功能,所述动作属性参数为用于手机应用动作的属性参数,包括设置需要的动作类型类型,及设置动作产生的幅度值。
作为本发明的优选方案之一,所述传感器驱动模块还包括模式设置的功能,所述模式包括默认的数据读取模式、省电模式、及中断模式。
作为本发明的优选方案之一,所述传感器通信模块采用的协议为I2C或UART。
本发明的有益效果在于:能够通过挥动手机实现对电脑游戏的操控,具有极佳的游戏代入感。
具体实施方式
下面结合附图详细说明本发明的优选实施例。
请参阅图1,本发明提供的基于手机的游戏遥控方法中,手机端主要包括用户进程及传感器进程。其中,用户进程又包括手机蓝牙HID应用模块及传感器API模块;传感器进程又包括传感器维护模块、传感器驱动模块及传感器通信模块。
手机蓝牙HID应用模块主要用于与PC机之间的蓝牙数据传输,其传输的数据来源于传感器API模块。传感器API模块提供了用户进程与传感器进程之间的功能接口,负责传感器的启动和停止,读取传感器进程输出的数据,也能够设置动作属性参数,所述动作属性参数主要为用于手机某些应用动作的属性参数,如设置需要的动作类型,设置动作产生的幅度值等。此外,传感器API模块还维护应用属性信息,并在传感器进程发出动作通知时执行通过手机蓝牙HID应用模块向PC机发送动作通知,或向手机其他进程或模块发送动作通知。
传感器通信模块主要根据预设定的协议(比如:I2C、UART等),读取安装在手机内的加速度传感器芯片输出的加速度矢量在空间三维坐标x,y,z上的分量值。加速度驱动模块能够开启或关闭加速度传感器芯片,并能够设置相应的模式,通常,开启加速度传感器芯片后即进入默认的数据读取模式。当加速度传感器芯片暂时不启用时,可进入省电模式。还包括应对突发事件的中断模式。当开启数据读取时,加速度驱动模块将传感器通信模块输出的x,y,z值输入传感器维护模块中。传感器维护模块具有供传感器API模块调用的传感器功能接口,以便与传感器API模块之间进行数据交互。传感器维护模块具有查询传感器驱动模块输出的x,y,z值,并根据预存储的动作判断算法(如旋转、甩动、计步器等)判断动作,并将判断结果作为动作通知发出的功能。传感器维护模块能够根据传感器API模块的指令直接输出x,y,z值或输出动作通知。传感器维护模块还具有应用访问冲突处理的功能,防止冲突访问造成的问题。其中,x,y,z值为:当手机产生运动时,加速度传感器芯片通过检测手机在空间坐标x,y,z三个方向的加速度,经过A/D转换,输出相应的x,y,z三个方向上的分量值并保存于寄存器中待输出。
即,手机调用传感器API模块,进而调用传感器维护模块的功能接口,进而调用传感器驱动模块的接口,最后传感器驱动模块的接口通过传感器通信模块对加速度传感器芯片进行读写操作。
若手机设置需要检测的动作,则传感器维护模块内部设置定时器读取数据并进行动作计算,如果产生动作则通知传感器API模块,传感器API模块再通知蓝牙应用模块。
请参阅图1及图2,本发明提供的基于手机的游戏遥控方法包括以下步骤:
步骤1、手机收到所述PC机发出的蓝牙设备搜索信息,手机启动用户进程,用户进程中的蓝牙应用模块响应所述PC机的蓝牙设备搜索信息;
步骤2、手机与PC机进行配对和鉴权;
步骤3、手机收到所述PC机的搜索手机蓝牙服务请求,向所述PC机返回HID服务记录信息;
步骤4、手机收到所述PC机发送的HID控制信道连接请求,并接受该请求;
步骤5、手机通过控制信道发送数据,告知PC机手机蓝牙设备已连接;
步骤6、手机收到所述PC机发送的HID中断信道连接请求,并接受该请求,则手机与PC机之间的蓝牙通信建立。
步骤7、手机启动传感器进程及加速度传感器芯片,读取位于手机内的加速度传感器芯片输出的加速度矢量在空间三维坐标x,y,z上的分量值,并通过中断信道发送该x,y,z的值至PC机;或者,手机读取加速度传感器芯片输出的加速度矢量在空间三维坐标x,y,z上的分量值后,进行动作判断,并将判断结果作为动作通知输出;
步骤8、PC机接收到所述加速度传感器芯片输出的数据或所述动作通知后进行根据当下软件的要求进一步的操作;
步骤9、当PC机不再需要手机提供数据时,PC机发送断开事件,手机通过中断信道收到PC机发送的断开事件后,通过控制信道向PC机发送表示准备断开蓝牙设备的数据;
步骤10、手机收到PC机发出的控制信道断开连接请求,并接受该请求,断开控制信道的连接;
步骤11、手机收到PC机发出的中断信道断开连接请求,并接受该请求,断开中断信道的连接,并关闭加速度传感器芯片。
其中,步骤7可具体为:所述传感器API模块启动包括传感器通信模块、传感器驱动模块及传感器维护模块的传感器进程;所述传感器驱动模块通过所述传感器通信模块,以预设定的协议读取加速度传感器芯片输出的数据,并将上述数据输入所述传感器维护模块中,所述传感器维护模块能够根据所述加速度传感器芯片输出的数据进行动作判断,并将判断结果作为动作通知发出;所述传感器API模块调用所述传感器维护模块中的传感器功能接口,直接读取所述传感器驱动模块接收到的所述加速度传感器芯片输出的数据,或接收所述动作通知;所述手机蓝牙应用模块设置定时器,定时(一较佳实施例为10ms)从所述传感器API模块中读取所述加速度传感器芯片输出的数据或接收所述动作通知,并向通过HID中断信道向所述PC机发送,以便所述PC机接收到所述加速度传感器芯片输出的数据或所述动作通知后 进行进一步的操作。通常情况下,为了达到更好的游戏效果,以直接发送所述加速度传感器芯片输出的数据为较佳方案。
步骤7中,进行动作判断的方法为:对于x,y,z三个坐标轴,分别计算每一坐标轴上相邻两个极值的差,并根据所得的三个差值判断动作的方向及力度大小。具体包括以下步骤:
步骤71、设置F1(n)=0,F2(n)=0,并获取加速度矢量在x,y,z坐标上的分量值;其中,n=x、y、z,F1(n)及F2(n)表示记录的阈值;
步骤72、分别获取加速度矢量在x,y,z坐标上的分量值的相邻极值,相邻极值为相邻的最大值与最小值:
步骤73、分别将x,y,z坐标上的分量值的相邻极值相减,并根据所得的三个差值判断动作的方向及力度大小;
其中,步骤72具体为分别对x,y,z轴上的分量值进行以下操作:
步骤721、判断分量值Vn是否到达预 定的幅度值,若没有到达,则返回步骤1,若到达,则进入步骤722;
步骤722、判断F1(n)是否为零,若是,则令F1(n)=Vn,F2(n)=Vn,若否,则进入步骤23;本步骤能够降低噪声干扰带来的影响;
步骤723、判断Vn是否大于F1(n),若是,则令F1(n)=Vn,F2(n)=Vn,若否,则进入步骤24;
步骤724、判断Vn是否小于F2(n),若是,则令F2(n)=Vn,F2(n)=Vn,若否,则进入步骤34;经过步骤723及步骤724,F1(n)记录了最大值,F2(n)记录了最小值;
步骤73具体为:在x,y,z坐标上,分别计算F1(n)-F2(n)的绝对值差值,并根据获得的三个绝对值差值判断动作的方向及力度大小。
综上所述,PC端蓝牙搜索到手机后发起HID连接(连接过程中可能提示输入密码),在建立连接之前,PC端通过蓝牙的服务发现协议(SDP),获取手机的HID服务记录信息,根据其报告描述符确定是否可以建立HID连接。连接成功后,PC为主机(Host)端,手机为设备(Device)端,双方即可实现无线通讯。手机会持续地向PC发送加速度传感器数据或动作通知,PC端算法会对数据进行处理,计算出相应的游戏动作,从而通过手机可以无线遥控PC游戏。手机端设定一个定时器每隔10ms读取x,y,z值并按照规定的数据格式发送给PC(也可发送手机按键事件,但发送手机按键事件为现有技术,在此不再详述),PC在接收到数据后进行分析并处理,转化为相应的游戏动作,从而实现手机作为游戏遥控器的功能。
其中,根据蓝牙服务发现协议(SDP),手机端需要注册HID的服务记录信息,除包含标 准的字段外,还包括一项是报告描述符(Report Descriptor),该描述符说明了手机作为HID的device端可以支持的设备类型,发送数据的格式等等。具体见下:
0x06,0x00,0xff, /*USAGE Page(Vendor defined),*/
0x09,0x01, /*USAGE(1),*/
0xa1,0x01, /*Collection(Application),*/
0x85,HID_REPORT_ID_FOR_VENDOR,/* Report ID(16),*/
0x15,0x00, /* Logical Minimum(0),*/
0x25,0xff, /* LOGICAL_AXIMUM(255),*/
0x75,0x08, /* REPORT_SIZE(8),*/
0x95,HID_REPORT_LENGTH_FOR_VENDOR,/* REPORT_COUNT(17),*/
0x09,0x01, /* USAGE(1),*/
0x81,0x00, /* INPUT(Data),*/
0x09,0x02, /* USAGE(2),*/
0x91,0x00, /* Output(Data,Variable,Absolute),*/
0x09,0x03, /* USAGE(3),*/
0xb1,0x00, /* Feature(Data,Variable,Absolute),*/
0xc0 /* End Collection */
如按下手机按键1时,手机通过蓝牙发送的数据包为:
10,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,00
如果某一时刻读取传感器x,y,z的偏移量分别为0x10,0x20,0x30,则发送的数据包为:
10,00,00,00,01,00,00,00,00,00,00,00,10,20,30,00,00
以上方案中,PC端游戏采用第三方方案。
本发明提供的方法可以通过手机遥控实现游戏的功能,由于增加了传感器,具有一般手机没有的游戏控制功能,使用户在闲暇时还能通过手机享受游戏功能。其能实现极佳的游戏效果,比如:在羽毛球游戏中,无需通过按键,而能够通过挥动手机来完成发球或回球动作,扣杀力量及方向取决于挥动手机的速度和角度;在标枪游戏中,上下挥动手机,人物开始跑动,持续快速挥动手机使人物加速,在投郑状态时挥动手机可将标枪投出,投出角度与挥动力度有关等等。具有更强的游戏代入感。
以上实施例仅用以说明而非限制本发明的技术方案。不脱离本发明精神和范围的任何修 改或局部替换,比如,采用除HID以外的本领域技术人员熟知的协议进行通信等,均应涵盖在本发明的权利要求范围当中。