抓娃娃机串口通信协议(初稿)
[if !supportLists]一、[endif]文档说明:
此文档用于PC主机(以下简称“上位机”)与抓娃娃机控制板(以下简称“下位机”)之间串口通信协议说明。
串口使用RS232标准进行通信,波特率:9600,校验位:无;数据位:8
协议使用“请求/应答”模式完成通讯任务;
输出:特指从“上位机”到“下位机”的数据传输;
输入:特指从“下位机”到“上位机”的数据传输;
校验:数据累加和方式。
数据长度:未特殊说明数据长度均为1个字节。
[if !supportLists]二、[endif]协议格式:
上位机到下位机指令格式:
数据1:开始码(0x8A)
数据2:数据长度,表示该次通讯字节个数(不包括开始码)
数据3:指令ID
数据4:指令类型
数据5:指令数据
数据6:校验位,存储指令数据累加和(数据2+数据3+数据4+。。。。数据7之累加和,不包括开始码,只保留8位)
数据7:结束码(0x55)
下位机到上位机指令格式:
数据1:开始码(0x8A)
数据2:数据长度,该次通讯字节个数(不包括开始码)
数据3:指令ID
数据4:指令类型
数据5:游戏局数数据
数据6:运行状态数据
数据7:礼物感应状态
数据8:指令数据累加和(数据2+数据3+数据4+。。。。数据8之累加和,不包括开始码,只保留8位)
数据9:结束码(0x55)
指令ID说明:
01:连接到下位机
02:游戏开始
03:向左移动抓机
04:向右移动抓机
05:向前移动抓机
06:向后移动抓机
07:停止移动抓机
08:执行抓取动作
09:悬空收拢抓机
0A:悬空张开抓机
0B:下位机发送状态
0C:上位机请求当前状态
0D:下位机发送错误码
指令类型说明:
01:上位机发送到下位机的指令
02:下位机对上位机指令的应答指令
03:下位机发送到上位机的指令
04:上位机对下位机指令的应答指令
超时异常:
1000ms
[if !supportLists]三、[endif]协议指令格式说明:
[if !supportLists]1、[endif]连接到下位机(指令ID:01)
开始码数据长度指令ID指令类型指令数据校验位结束码
8A030101无0555
示例:下位机接收到8A0301010555表示请求上位机连接到下位机
下位机应答:
开始码数据长度指令ID指令类型指令数据校验位结束码
8A0A01027位ID
(F4 06 01 55 70 62 05)
3455
示例:上位机接收到8A 0A 01 02 F4 06 01 55 70 62 05 34 55表示与下位机连接功,其中7位数据(F4 06 01 55 70 62 05)为下位机唯一码。
[if !supportLists]2、[endif]游戏开始(指令ID:02)
开始码数据长度指令ID指令类型指令数据校验位结束码
8A030201无0655
示例:下位机接收到8A 03 02 01 06 55表示开始游戏,启动游戏倒计时
下位机应答
开始码数据长度指令ID指令类型指令数据校验位结束码
8A030202无0755
示例:上位机接收到8A 03 02 02 07 55表示游戏开始成功,已开始倒计时
[if !supportLists]3、[endif]向左移动机械抓(指令ID:03)
开始码数据长度指令ID指令类型指令数据校验位结束码
8A030301无0755
示例:8A03 03 01 07 55
下位机应答:
开始码数据长度指令ID指令类型指令数据校验位结束码
8A030302无0855
示例:8A03 03 02 08 55
[if !supportLists]4、[endif]向右移动机械抓(指令ID:04)
开始码数据长度指令ID指令类型指令数据校验位结束码
8A030401无0855
示例:8A03 04 01 08 55
下位机应答:
开始码数据长度指令ID指令类型指令数据校验位结束码
8A030402无0955
示例:8A03 04 02 09 55
[if !supportLists]5、[endif]向前移动机械抓(指令ID:05)
开始码数据长度指令ID指令类型指令数据校验位结束码
8A030501无0955
示例:8A03 05 01 09 55
下位机应答:
开始码数据长度指令ID指令类型指令数据校验位结束码
8A030502无0A55
示例:8A03 05 02 0A 55
[if !supportLists]6、[endif]向后移动机械抓(指令ID:06)
开始码数据长度指令ID指令类型指令数据校验位结束码
8A030601无0A55
示例:8A03 06 01 0A 55
下位机应答:
开始码数据长度指令ID指令类型指令数据校验位结束码
8A030602无0B55
示例:8A03 06 02 0B 55
[if !supportLists]7、[endif]停止移动机械抓(指令ID:07)
开始码数据长度指令ID指令类型指令数据校验位结束码
8A030701无0B55
示例:8A03 07 01 0B 55
下位机应答:
开始码数据长度指令ID指令类型指令数据校验位结束码
8A030702无0C55
示例:8A03 07 02 0C 55
[if !supportLists]8、[endif]机械抓执行抓取(指令ID:08)
开始码数据长度指令ID指令类型指令数据校验位结束码
8A040801抓力累加和55
示例:8A04 08 01 C8D5 55表示要求机械抓执行抓力为C8(200)的抓取动作
如果抓力数据为FF表示本次抓取的抓力为机器的内部默认值
抓力:0-200之间的整数,数值越大抓力越大
下位机应答:
开始码数据长度指令ID指令类型指令数据校验位结束码
8A030802无0D55
示例:8A03 08 02 0D 55
[if !supportLists]9、[endif]悬空收拢机械抓(指令ID:09)
开始码数据长度指令ID指令类型指令数据校验位结束码
8A040901抓力0D55
示例:8A04 09 01 A0 AE 55表示要求抓机执行抓力为160(A0)的悬空抓取动作
抓力:0-200之间的整数,数值越大抓力越大
下位机应答:
开始码数据长度指令ID指令类型指令数据校验位结束码
8A030902无0E55
示例:8A03 09 02 0E 55
[if !supportLists]10、[endif]悬空张开机械抓(指令ID:0A)
开始码数据长度指令ID指令类型指令数据校验位结束码
8A030A01无0E55
示例:8A03 0A 01 0E 55
下位机应答:
开始码数据长度指令ID指令类型指令数据校验位结束码
8A030A02无0F55
示例:8A03 0A 02 0F 55
[if !supportLists]11、[endif]下位机发送状态数据(指令ID:0B)
开始码长度ID类型局数状态礼物校验结束码
8A060B03
局数:
03表示还能进行3次游戏;
00表示不可以进行游戏,需要投币
状态:
00等待游戏开始
01游戏开始
02爪子开始向下移动下抓
03爪子到达下抓限定位置
04爪子开始上移
05爪子到达上限定位置,并向礼品出口移动
06爪子到达礼品出口,并松爪
礼物:
[if !supportLists]00[endif]没有抓到礼品
[if !supportLists]01[endif]抓到一次礼品
示例:8A
06 0B 03 05 01 00 1A 55表示下位机向上位机发送了一次状态数据,告诉上位机还可以进行5次游戏,当前游戏已开始,没有抓到礼品。
上位机应答
开始码数据长度指令ID指令类型指令数据校验位结束码
8A030B04无1255
示例:
[if !supportLists]12、[endif]上位机请求当前状态(指令ID:0C)
开始码数据长度指令ID指令类型指令数据校验位结束码
8A030C01无1055
示例:8A 03 0C 01 10 55表示上位机向下位机请求状态信息
下位机应答:
开始码长度ID类型局数状态礼物校验结束码
8A060C0255
局数,状态,礼物数据参照“下位机发送状态数据”。
[if !supportLists]13、[endif]下位机发送错误码(指令ID:0D)
开始码长度ID类型错误码校验结束码
8A040D0355
示例:8A04 0D 03 01 14 55表示下位机告诉上位机发生了编码为01的错误。
[if !supportLists]14、[endif]上位机发送币数(指令ID:0F)
开始码数据长度指令ID指令类型指令数据校验位结束码
8A040F0101(币数)1555
下位机应答:
开始码数据长度指令ID指令类型指令数据校验位结束码
8A040F0201(接收到的币数)1655
备注:上位机通知设备支付的金额。举例说明:上位机先发送支
付命令,如果设备三秒内没收到设备的应答,视为这次的支付失
败,
错误码:(请电子工程师补充)
错误码:
00正常状态
01前限位故障
[if !supportLists]02[endif]后限位故障
03左限位故障
04右限位限位故障
05上限位故障
06下限位故障
07赠送错误
08爪子过热
09光眼故障
[if !supportLists]四、[endif]通讯机制
下位机在状态(局数,状态,礼物)改变时主动向上位机发送状态数据;
下位机在发生错误时主动向上位机发送错误码;
其它指令均由上位机向下位机主动发出,下位机只做应答。
添加设置查询命令
[if !supportLists]一、[endif]基础数据设置命令:(由上位机发送到控制板)
例子:8A 13 10 01 01 01
00 01 01 01 14 02 0A 00 01 01 01 01 01 01 4F 55
命令字节数据说明数据取值范围
8A开始码固定为8A
13该次通讯字节个数不包括开始码共19个字节
10指令ID固定为10
01指令类型固定为1
01语言取值范围(0-1)0为英文,1为中文
01广告音乐开关取值范围(0-1)0音乐无,1音乐有
00广告音乐间隔时间取值范围(0-30)当广告音乐开关为1有效
01币数取值范围(1-10)币数设置
01局数取值范围(1-10)局数设置
01币数保留取值范围(0-1)0关机不保留,1关机保留
14游戏时间取值范围(5-60)
02游戏模式取值范围(1-6)
0A出奖概率取值范围(1-250)
00礼品出口位置取值范围(0-1)0左后角,1左前角
01空中抓物取值范围(0-1)0为关,1为开
01背景音乐
01游戏音乐
01光眼电平取值范围(0-1)0为常开,1为常闭
01摇晃清分取值范围(0-1)
01保留取值范围(0-1)
4F累加和从通讯字节个数到赠送票币数量所有字节的累加和
55结束码
下位机基础数据如果设置成功,下位机返回命令:
8A 04 10 02 01 17 55
8A是开始码,04数据个数,10指令ID,02指令类型,01数据表示设置成功,17是累加和。
下位机如果设置失败,控制板返回命令:
8A 04 10 02 00 16 55
8A是开始码,04数据个数,10指令ID,02指令类型,00数据表示设置失败,16是累加和。
[if !supportLists]二、[endif]爪力电压设置命令:(由上位机发送到控制板)
例子:8A 13 11 01 01 0E 00 41 00 41 010E 08 08 00 0C 02 01 00 01 E5 55
命令字节数据说明数据取值范围
8A开始码固定为8A
13该次通讯字节个数不包括开始码共19个字节
11指令ID固定为11
01指令类型固定为1
01强爪电压高八位取值范围十进制(130-475),由高八位和低八位组合,010E十进制为270即27V
0E强爪电压低八位
00弱爪电压高八位取值范围十进制(20-200),由高八位和低八位组合,0041十进制为65即6.5V
41弱爪电压低八位
00弱抓后电压高八位取值范围十进制(20-400),由高八位和低八位组合,0041十进制为65即6.5V
41弱抓后电压低八位
01中奖电压高八位取值范围十进制(45-480),由高八位和低八位组合,010E十进制为270即27V
0E中奖电压低八位
08强力维持时间取值范围(1-30)08表示0.8秒
08弱力维持时间取值范围(1-30)08表示0.8秒
00强变弱方式取值范围(0-1)0强爪时间后变弱抓1碰到微动后变弱抓
0C放线长度时间取值范围(5-100)0C表示1.2秒
02收爪速度取值范围(0-20)
01上升延时取值范围(1-30)
00掉落延时比例取值范围(0-99)
01掉落延时时间取值范围(1-30)
E5累加和13+ 11+ 01 +01 +0E +00 +41 +00 +41+ 01 +0E +08+ 08 +00 +0C+ 02+ 00 +00 +01
55结束码
下位机爪力如果设置成功,控制板返回命令:
8A 04 11 02 01 18 55
8A是开始码,04数据个数,11指令ID,02指令类型,01数据表示设置成功,18是累加和。
下位机如果设置失败,控制板返回命令:
8A 04 11 02 00 17 55
8A是开始码,04数据个数,11指令ID,02指令类型,,00数据表示设置失败,17是累加和。
[if !supportLists]三、[endif]马达速度设置命令:(由上位机发送到控制板)
例子:8A 06 12 01 02 02 02 1F 55
命令字节数据说明数据取值范围
8A开始码固定为8A
06该次通讯字节个数不包括开始码共6个字节
12指令ID固定为12
01指令类型固定为1
02前后马达速度取值范围(1-10)
02左右马达速度取值范围(1-10)
02上下马达速度取值范围(1-10)
1F累加和06+12+ 01+ 02+ 02+ 02
55结束码
下位机速度如果设置成功,控制板返回命令:
8A 04 12 02 01 19 55
8A是开始码,04数据个数,12指令ID,02指令类型,01数据表示设置成功,19是累加和。
下位机如果设置失败,控制板返回命令:
8A 04 12 02 00 18 55
8A是开始码,04数据个数,12指令ID,02指令类型,00数据表示设置失败,18是累加和。
[if !supportLists]四、[endif]资料清除命令:(由上位机发送到控制板)
例子:8A 06 13 01 00 00 00 1A 55
命令字节数据说明数据取值范围
8A开始码固定为8A
06该次通讯字节个数不包括开始码共7个字节
13指令ID固定为13
01指令类型固定为01
00帐目清除取值范围(0-1)0为不清除,1为清除
00当前局数清除取值范围(0-1)0为不清除,1为清除
00概率结算清除取值范围(0-1)0为不清除,1为清除
1A累加和07+ 02+ 04 +00+ 00 +00
55结束码
下位机资料清除如果成功,控制板返回命令:
8A 04 13 02 01 1A 55
8A是开始码,04数据个数,13指令ID,02指令类型,01数据表示设置成功,1A是累加和。
下位机如果清除失败,控制板返回命令:
8A 04 13 02 00 19 55
8A是开始码,04数据个数,13指令ID,02指令类型,00数据表示设置失败,19是累加和。
[if !supportLists]五、[endif]恢复工厂设置和免费模式命令:(由上位机发送到控制板)
例子:8A 05 14 01 00 00 1A 55
命令字节数据说明数值取值范围
8A开始码固定为8A
05该次通讯字节个数不包括开始码共6个字节
14指令ID固定为14
01指令类型固定为01
00免费游戏字节取值范围(0-1)0正常模式,1免费模式
00恢复设置字节取值范围(0-1)0保持原有设置,1恢复工厂设置
1A累加和05 +14+ 01+ 00+ 00
55结束码
下位机恢复工厂设置命令如果设置成功,控制板返回命令:
8A 04 14 02 01 1B 55
8A是开始码,04数据个数,14指令ID,02指令类型,01数据表示设置成功,1B是累加和。
下位机恢复工厂设置命令如果设置失败,控制板返回命令:
8A 04 14 02 00 1A 55
8A是开始码,04数据个数,14指令ID,02指令类型,00数据表示设置失败,1A是累加和。
[if !supportLists]六、[endif]查账命令:(由上位机发送到控制板)
例子:8A 03 15 01 19 55
命令字节数据说明数值取值范围
8A开始码固定为8A
03该次通讯字节个数不包括开始码共4个字节
15指令ID固定为15
01指令类型固定为01
19累加和03 +15+ 01
55结束码
下位机返回数据如下。
例子:8A 17 15 02 00 00 01 02 00 00 0001 00 00 00 00 00 00 00 00 00 00 00 03 35 55
命令字节数据说明数值取值范围
8A开始码固定为8A
17该次通讯字节个数不包括开始码共23个字节
15指令ID固定为15
02指令类型固定为02
00总投币记录最高位总投币记录为32位无符号数据,00000102十进制为258,表示总共投了258个币。
00总投币记录高位
01总投币记录次高位
02总投币记录低位
00出礼品记录最高位礼品记录为32位无符号数据,00000001十进制为1,表示总共出了一个礼品。
00出礼品记录高位
00出礼品记录次高位
01出礼品记录低位
00本次投币记录最高位记录为32位无符号数据,
00本次投币记录高位
00本次投币记录次高位
00本次投币记录低位
00本次出礼品记录最高位记录为32位无符号数据,
00本次出礼品记录次高位
00本次出礼品记录高位
00本次出礼品记录低位
00概率结算最高位概率结算为32位有符号数据。概率结算=概率内入币–概率内出礼品*出奖概率
00概率结算高位
00概率结算次高位
03概率结算低位
35累加和
55结束码
[if !supportLists]七、[endif]查询当前基础数据:(由上位机发送到控制板)
示例:8A 03 16 01 1A 55
命令字节数据说明数据取值范围
8A开始码固定为8A
03该次通讯字节个数不包括开始码共4个字节
16指令ID固定为16
01指令类型固定为01
1A累加和03 +16+ 01
55结束码
下位机返回命令示例:
例子:8A 13 16 02 01 01
00 01 01 01 14 02 0A 00 01 01 01 01 01 01 56 55
命令字节数据说明数据取值范围
8A开始码固定为8A
13该次通讯字节个数不包括开始码共19个字节
16指令ID固定为16
02指令类型固定为2
01语言取值范围(0-1)0为英文,1为中文
01广告音乐开关取值范围(0-1)0音乐无,1音乐有
00广告音乐间隔时间取值范围(0-30)当广告音乐开关为1有效
01币数取值范围(1-10)币数设置
01局数取值范围(1-10)局数设置
01币数保留取值范围(0-1)0关机不保留,1关机保留
14游戏时间取值范围(5-60)
02游戏模式取值范围(1-6)
0A出奖概率取值范围(1-250)
00礼品出口位置取值范围(0-1)0左后角,1左前角
01空中抓物取值范围(0-1)0为关,1为开
01背景音乐
01游戏音乐
01光眼电平取值范围(0-1)0为常开,1为常闭
01摇晃清分取值范围(0-1)
01保留取值范围(0-1)
56累加和从通讯字节个数到赠送票币数量所有字节的累加和
55结束码
[if !supportLists]八、[endif]查询爪力电压命令:(由上位机发送到控制板)
示例:8A 03 17 01 1B 55
命令字节数据说明数据取值范围
8A开始码固定为8A
03该次通讯字节个数不包括开始码共3个字节
17指令ID固定为17
01指令类型固定为01
1B累加和03 +17+ 01
55结束码
下位机返回命令示例:
例子:8A 13 17 02 01 0E 00 41 00 41 010E 08 08 00 0C 02 00 00 01 EB 55
命令字节数据说明数据取值范围
8A开始码固定为8A
13该次通讯字节个数不包括开始码共19个字节
17指令ID固定为17
02指令类型固定为2
01强爪电压高八位取值范围十进制(130-475),由高八位和低八位组合,010E十进制为270即27V
0E强爪电压低八位
00弱爪电压高八位取值范围十进制(20-200),由高八位和低八位组合,0041十进制为65即6.5V
41弱爪电压低八位
00弱抓后电压高八位取值范围十进制(20-400),由高八位和低八位组合,0041十进制为65即6.5V
41弱抓后电压低八位
01中奖电压高八位取值范围十进制(45-480),由高八位和低八位组合,010E十进制为270即27V
0E中奖电压低八位
08强力维持时间取值范围(1-30)08表示0.8秒
08弱力维持时间取值范围(1-30)08表示0.8秒
00强变弱方式取值范围(0-1)0强爪时间后变弱抓1碰到微动后变弱抓
0C放线长度时间取值范围(5-100)0C表示1.2秒
02收爪速度取值范围(0-20)
00上升延时取值范围(1-30)
00掉落延时比例取值范围(0-99)
01掉落延时时间取值范围(1-30)
EB累加和13+ 17+ 02 +01+ 0E +00+ 41 +01 +0E +08+ 08 +0C+ 02 +00+ 00 +01
55结束码
[if !supportLists]九、[endif]查询马达速度命令:
示例:8A 03 18 01 1C 55
命令字节数据说明数据取值范围
8A开始码固定为8A
03该次通讯字节个数不包括开始码共3个字节
18指令ID固定为18
01指令类型固定为01
1C累加和03 +18+ 01
55结束码
下位机返回命令示例:
8A 06 18 02 02 02 02 25 55
命令字节数据说明数据取值范围
8A开始码固定为8A
06该次通讯字节个数不包括开始码共6个字节
18指令ID固定为18
02指令类型固定为02
02前后马达速度取值范围(1-10)
02左右马达速度取值范围(1-10)
02上下马达速度取值范围(1-10)
26累加和06 +18+ 02+ 02+ 02+ 02
55结束码