# CNGPI **Repository Path**: csrs_admin/CNGPI ## Basic Information - **Project Name**: CNGPI - **Description**: 游戏机通用协议 - **Primary Language**: C# - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 7 - **Created**: 2024-04-09 - **Last Updated**: 2024-04-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 游戏机通用扩展协议 ![接口在游戏机主板上的状况以及针脚定义](logo/CNGPIV1.png) CNGPI(China Gaming devices Public Interface) 此logo用于标记自己产品已支持此协议, [矢量图下载](https://gitee.com/xsharkx/CNGPI/raw/master/logo/CNGPIV1.ai) ## 接入步骤:(微信联系 xsharkx) 1.研究下文档和交互流程 2.提供下游戏机的名字和资料 3.给你们分配设备编号 4.下载模拟器进行调试 PC版调试工具(V1.20) [支付盒子模拟器](https://gitee.com/xsharkx/CNGPI/raw/master/Tools/CNGPI_PayBoxV1.20.zip) [娃娃机模拟器](https://gitee.com/xsharkx/CNGPI/raw/master/Tools/CNGPI_GameMachineV1.20.zip) [口红机模拟器](https://gitee.com/xsharkx/CNGPI/raw/master/Tools/CNGPI_VendingV1.20.zip) [模拟与扭蛋机交互流程的支付盒子模拟器](/xsharkx/CNGPI/raw/master/Tools/CNGPI_PayBox_NiudanV1.20.zip) 5.拿实体盒子联调 ## 一 摘要 本文档定义出游戏机与周边设备互动的通讯协议,包括如下用途: - 游戏机与卡系统进行支付与数据采集 - 游戏机与投币器进行投币防干扰 - 游戏机与数据采集设备进行数据交换与监控 游戏机行业有史以来一直没有一份受大家公认的协议,虽存在两两厂商互通。但存在不通用不完善的缺点。导致浪费各方资源。由此诞生此协议,此协议定义的主要目的如下: - 统一游戏机周边对接设备的协议,减少行业资源浪费 - 使用协议通讯放弃脉冲通讯,提高游戏机安全性(防止干扰器) - 实现游戏机与各设备即插即用,减去安装调试步骤,降低最终用户使用门槛 - 实现游戏机信息采集与控制 - 同步游戏过程提升用户体验 - 提升通讯可靠性让对接更严谨高效 ## 二 协议线路愿景 - V1.0 覆盖主流的纯玩机,彩票机,礼品机与周边设备的通讯协议 - V1.1 召集各厂商(20家)加入实现此协议并邀请各厂商技术工程师加入维护团队 - V1.5 协议已完善并初步稳定,并倡导厂商贡献出实现接口的代码 - V2.0 生产出协议调试设备,以及多P位Hub设备方便调试使用。 欢迎行业各位大神加入到此协议的完善与优化,有意加入维护的行业技术人员可通过自行Fork代码提交自己的更新。或者微信联系 13025128215 杨生进行接口优化探讨。另外如有疑问也可在Github里进行探讨。 也希望广大厂商加入此项目将自己的产品录入进来,或者联系杨生进行登记,登记需要如下信息:厂商名,产品名,产品内部编码,产品图片(正面照一张800X600像素,侧45度一张800X600像素),长,宽,高(cm),设备类型(纯玩机,彩票机,娃娃机,扭蛋机,口红机,福袋机,售货机) ## 三 重要内容索引 ### 3.1 指令索引 [五 名词解释](#P5) [六 电器物理特性](#P6) [七 数据包基础规则](#P7) [八 通用命令部分](#P8) - [8.1 握手](#P8_1) - [8.2 状态同步](#P8_2) - [8.3 投币](#P8_3) - [8.4 通用参数设置](#P8_4) - [8.5 开始游戏](#P8_5) - [8.6 结束游戏](#P8_6) - [8.8 恢复出厂参数设置](#P8_8) - [8.9 通用参数获取](#P8_9) - [8.11 通用游戏机查账](#P8_11) - [8.12 游戏机报警](#P8_12) - [8.13 启停游戏机](#P8_13) - [8.15 写入菜单设置项](#P8_15) - [8.18 自定义游戏结果](#P8_18) [九 娃娃机专用部分](#P9) - [9.1 带概率干预云支付](#P9_1) - [9.2 设置娃娃机参数](#P9_2) - [9.3 娃娃机参数获取](#P9_3) [十 碎票机和存币机](#P10) - [10.1 会员登录](#P10_1) - [10.2 完成碎票](#P10_2) [十一 售货机专用部分](#P10) - [11.1 发起购买](#P11_1) - [11.2 取消购买](#P11_2) - [11.3 支付完成请求出货](#P11_3) - [11.4 出货结果](#P11_4) [十二 油菜花扩展盒子](#P12) [十三 音乐机专用部分](#P13) [十四 车辆专用部分](#P14) [十五 合作设备部分](#P15) [十六 小火车部分](#P16) [十七 户外刷卡桩部分](#P17) [十八 网关接口](#P18) [十九 售货机专用部分](#P19) [二十 厂商以及产品名录](#P20) [二十一 设备状态码](#P21) ### 3.2 纯玩机交互流程 ![纯玩机](resource/cunwan.png) 最小化实现时可忽略参数设置,启停游戏机,恢复出厂设置 具体要实现的指令如下: - [8.1 握手](#P8_1) - [8.2 状态同步](#P8_2) - [8.3 投币](#P8_3) - [8.4 通用参数设置](#P8_4) - [8.5 开始游戏](#P8_5) - [8.6 结束游戏](#P8_6) - [8.9 通用参数获取](#P8_9) - [8.11 通用游戏机查账](#P8_11) - [8.12 游戏机报警](#P8_12) - [8.13 启停游戏机](#P8_13) - [8.15 写入菜单设置项](#P8_15) - [8.16 读取菜明细设置项](#P8_16) - [8.17 读取菜单索引](#P8_17) 如下指令可简化实现 - [8.8 恢复出厂参数设置](#P8_8) ->回应成功 - [8.12 游戏机报警](#P8_12) ->游戏机不报警即可 - [8.13 启停游戏机](#P8_13) ->直接回应成功 - [8.17 读取菜单索引](#P8_17) ->回应设置项0个 - [8.15 写入菜单设置项](#P8_15) ->回应设置项0个时无需实现 - [8.16 读取菜明细设置项](#P8_16) ->回应设置项0个时无需实现 ### 3.3 彩票机交互流程 ![彩票机](resource/caipiao.png) ### 3.4 娃娃机交互流程 ![娃娃机](resource/wawa.png) ### 3.5 扭蛋机交互流程 ![扭蛋机](resource/dan.png) ### 3.7 口红机交互流程 ![口红机](resource/kouhong.png) ### 3.8 售货机交互流程(VR) ![售货机](resource/shouhuo.png) ### 3.9 VR游戏机交互流程(VR) ![VR游戏](resource/vr.png) ### 3.10 互动多媒体交互流程 ![多媒体](resource/hudong.jpg) ### 3.11 兑币机交互流程 ![兑币机](resource/duibiji.png) ### 3.12 计时设备流程(电动车/VR/家用游戏机) ![兑币机](resource/cdc.png) ## 四 历史版本 **当前版本:109,代表v1.0,在握手时如适配此版本应在版本参数给100** 版本|日期|修改者|内容 ---|---|---|--- V0.8|20180509|wangjianyi|初稿 V0.9|20180601|Benny|加入礼品机投币含中奖结果 V1.0|20180909|Benny|加入彩票机支持 V1.09|20180929|Benny|加入游戏售货机支持(口红机) V1.12|20181022|Benny|调整售货机接口,加入各种机器运行流程图 V1.14|20181023|Benny|添加菜单设置接口,废弃扩展参数设置 V1.16|20181031|Benny|添加菜单设置接口,修改握手接口 V1.18|20181120|Benny|添加菜单索引获取接口,考虑116版本的设计需要厂商在后台进行菜单维护并且需要匹配对应版本,因此将菜单流程进行优化尽量避免出错减少运维操作复杂度 V1.19|20181123|Benny|获取游戏二维码时得到商品图片的URL V1.20|20190415|Benny|微调初始流程 V1.21|20190513|caiziru|增加通讯帧中参数缺失或者错误报错 V1.30|20200311|Benny|新增音乐机游戏结果指令 V1.32|20200604|Benny|新增自定义游戏结果指令 ## 五 名词解释 - 纯玩机:游戏过程中只投币无任何奖励的游戏设备 - 彩票机:游戏过程以彩票为主要奖励方式的游戏设备 - 扭蛋机:直接以金额购买扭蛋(内含玩具)的机机器 - 礼品机:游戏过程以实物礼品为主要奖励方式的游戏设备 - 娃娃机:这里单只使用一种或一类等价值礼品作为奖品的礼品机,大多数情况下奖品是毛绒公仔 - 实物币:传统场所用钱购买的的实际能拿在手里的一枚一枚代币 - 售货机:纯粹用金钱换物品的自助设备,一搬有多个储物格,典型的如扭蛋机 - 口红机:一搬有多个储物格,既能游戏获得又能直接购买 - 电子币:保存在某媒介的,不能实际拿到手上的虚拟代币 - 抓力:娃娃机在游戏某个阶段给予爪子的力度 - 卡头:通常安装在游戏机表面,带明显的显示装置,解决会员刷卡或线上支付的设备 - 支付盒子:通常安装在游戏机内部,作为游戏机扩展功能实现游戏的支付的设备 - 正扫:游戏机为了方便支付,将固定二维码贴在机器上。客户扫码都经过指引进行支付的一种支付形式 - 会员反扫:会员在手机出示虚拟会员卡的二维码,进行代币支付的一种支付形式 - 付款码反扫:会员在手机出示微信或支付宝付款吗,被游戏机扫描后进行支付的一种支付形式 - 扫码头:单纯实现将二维码或条码扫描到后将结果通过接口传递出去的设备,一般内嵌到设备中 - 事务ID:用于防止重发与漏发用的一个循环使用的ID,游戏机与外接设备自行维护每次使用后加一,溢出归零后继续循环,如接收到的事务ID与上次相同,视为已经处理过,回应成功。如果收到的事务ID不等于上次收到的事务ID表示需要进行处理和回应并将最新的ID记录起来。事务ID的累加由发送方控制,如两方都需要发送,那么两方需要各自保存发送的事务ID和接收的事务ID,此两个ID是没有必然关系的,编写程序时别弄反。并且在第一次使用时发送方需要使用1.这样不会因初始化都是0时认为重发了 ``` // 得到下次事务ID private int GetNextTransID() { LastSendTransID++; if(LastReciveTransID > 0xffff) { LastSendTransID = 0; } return LastSendTransID; } // 判断是否接收过 private bool IsNewTransID(int transID) { return LastReciveTransID != transID; } ``` - 厂商标识:标记各生产厂商的序号 - 产品标识:厂商出厂的某型号产品序号 ## 六 电器物理特性 ### 6.1 游戏机主板上固定接口定义 使用XH2.54-4P封装插座如下图:如主板已经固化可做转接线进行对接 ![接口在游戏机主板上的状况以及针脚定义](resource/4p.jpg) 针脚定义如下: 脚位|定义|作用 ---|---|--- 0|Rx|串口接收TTL3.3v,建议对接的设备(盒子等)使用二极管隔离以防不慎将线插反导致损坏 1|GND|共地 2|Tx|串口发送TTL3.3v 3|Vcc|给对接的设备(盒子等)供电电压12v,电流200mA 串口通讯规则如下: - 电平:TTL3.3v - 波特率:38400 - 起始位:1位 - 数据位:8位 - 奇偶校验位:无 - 停止位:1位 ### 6.2 游戏机内置扫码头接口定义(待完善) 针脚必须包含如下针脚: 脚位|定义|作用 ---|---|--- 0|Vcc|给扫码头供电3.3v,500mA 1|Tx|串口发送TTL3.3v 2|Rx|串口接收TTL3.3v 3|GND|共地 串口通讯规则如下: - 电平:TTL3.3v - 波特率:9600 - 起始位:1位 - 数据位:8位 - 奇偶校验位:无 - 停止位:1位 - 扫码头传输协议使用字节将内容使用AscII码进行编码传输, ### 6.3单主板单接口多P位说明 hub工作方式待讨论补充 ## 七 数据包基础规则 ### 7.1 所有数据通讯包包含如下元素: 名称|符号|长度|说明 ---|---|---|--- 包头|START|2字节|固定为0xEF37 地址|ADR|2字节|P位或设备地址,于用适应一个设备多个P位场景,0=广播,1=1P,2=2P 命令码|PID|2字节|指令码,用于判断DATA段的内容 内容长度|LEN|2字节|DATA段的数据长度 内容|DATA|N字节|命令的详细参数内容 校验|CHK|2字节|第一字节等于之前所有字节相加自动溢出既sum(START,...,DATA),第二字节等于之前所有字节异或既Xor(START,...,DATA) 包尾|END|2字节|固定为0XFE73 两个数据帧之间间隔至少6ms,指令未说明超时时间时默认已500ms作为超时时间 举例握手协议命令如下(Hex): START|ADR|PID|LEN|DATA|CHK|END ---|---|---|---|---|---|--- EF37|0000|0301|001F|00000001 00000001 FA00FCCDA57D8990FA00FCCDA57D8990 0101|4849|FE73 其中 0x48=sum(EF3700000301001F0000000100000001FA00FCCDA57D8990FA00FCCDA57D89900101) 0x49=xor(EF3700000301001F0000000100000001FA00FCCDA57D8990FA00FCCDA57D89900101) ### 7.2 字节数组与数字转换 数据中如有多字节转换为数字时,高位在前,如 0x1234=0x12*256+0x34 ### 7.3 基本原理 游戏机启动时,给外接设备供电。外接设备发送握手指令给游戏机,游戏机告知外接设备设备的厂商,使用的本协议的版本,和产品型号信息。外接设备根据接口版本自行兼容新旧协议版本。 ## 八 通用命令部分 此部分命令所有种类游戏机都必须实现 ### **8.1 握手(PID=0x0101)** --- 数据方向:外接设备->游戏机 说明:外接设备搜索游戏机,此时如果如果收不到游戏机的回应将会间隔500ms进行搜索,推荐如果1分钟内仍然搜索不到则每3秒一次进行搜索,直到连接成功。否则当离线处理.为让游戏机厂商开发便利,版本兼容由外接设备自动适配,游戏机只需实现某一版本协议即可,因此外接设备需要及时更新自身所兼容的协议版本。否则可能造成版本不兼容。 版本数字处理为百位以内是非结构性改动可。既如果两个版本数除以100如果相等既代表是天然兼容的,如果不相同则代表需要做兼容代码修改,举例: 100(v1.00)与104(v1.04),145(v1.45),189(v1.89)只是规则微调不影响参数的意义和内容,如果是104(v1.04)与205(v2.05)则是有新的指令加入或指令的参数意义有变化的。因此不兼容,需要修改代码适配。300(V3.00)后支持设备打码校验功能 发送设备在握手时,基础协议总的P位为设置为0,握手成功时需要将两方设备的事务ID设置成0 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 产品标识|4Byte|产品编号,第十六章名录,前两字节是厂商标识 设备唯一ID|16Byte|相对厂商和产品唯一ID 设备类型|2Byte|0x0101=卡头,0x0102=投币器,0x0103=支付盒子,0x0104出票器,0x0105安卓控制器(暂不使用) 游戏机回应PID=0x0181内容如下: 应答参数|长度|说明 ---|---|--- 协议版本|4Byte|当前使用的本协议版本如:130,100=V1.0,130=V1.30.需要外接设备根据此数来适配不同版本的协议,当前版本说明一般注明在文档第四章 产品标识|4Byte|产品编号,第十六章名录,如0x00010001,用于标识某个厂商的某个产品 设备唯一ID|16Byte|用于区分每一台设备,厂商需要保证唯一 总P位数|1Byte|此游戏机总共P位数,售货机为售货格子数 当前P位|1Byte|此物理接口控制的P位序号,0=此接口控制所有P位,1=只控制1P,2=2P,3=3P... 设备类型|2Byte|0x0001=纯玩机,0x0002=彩票机,0x0003=娃娃机,0x0004=扭蛋机,0x0005=口红机,0x0006=福袋机,0x0007=售货机,0x0008=VR游戏,0x0009=音乐机,0x000A=车辆,0x000B=兑币机,0x000C=碎票机,0x000d=存币机,0x000E=小火车,0x000F=户外刷卡桩,0x0010=网关 游戏机软件版本|2Byte|游戏机软件版本,用于查看版本,菜单设置时的版本控制,协议版本大于等于116时才生效 举例:待完善 ### **8.2 状态同步(PID=0x0102)** --- 数据方向:外接设备->游戏机 说明:用于外接设备与游戏机进行状态同步,外接设备在空闲时每隔10秒发一次同步, 游戏中每隔1秒,游戏机可以此响应作为外接设备是否在线的依据,超时时间500ms 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 设备状态|2Byte|0x0000=正常,其他=状态码,详见第二十一章状态码 信号强度|1Byte|0-100 连网状态|1Byte|0-连接成功,1-连接中 游戏机回应(PID=0x0182)内容如下: 应答参数|长度|说明 ---|---|--- 游戏机状态|1Byte|游戏机状态:0x00=游戏机启动中,0x01=待机状态,0x02=有币待开始,0x03=游戏中,0x04=游戏结束(3秒后转为待机或有币待开始),0x05=进入了设置模式,0x06=故障中,0x07=被停用状态。兑币机状态:0xA0=兑币机正常,0xA1=纸钞故障,0xA2=马达1故障,0xA3=马达2故障,0xA4=全部马达故障(此状态代表兑币机完全无法使用)。(见8.13) 剩余游戏币数|2Byte|游戏机内剩余未使用币数 预计游戏结束时间|2Byte|单位为秒,状态为游戏中有效 状态码|2Byte|故障中状态有效,详见第二十一章状态码(建议使用8.21上报设备故障) 举例:待完善 ### **8.3 投币(PID=0x0103)** --- 数据方向:外接设备->游戏机 说明:此场景用于,外接设备进行云支付或者投币器进行投币时使用,当用于礼品机时表示此次投币使用游戏机内置单机概率进行出奖,将以每500ms一次的频率一直发送5秒直到有回应,如5秒未回应代表离线将按超时来处理。支付设备将进行退款处理。 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|用于标识一次投币行为的防重发与防漏发 投币数|2Byte|投币数量 币类型|1Byte|0=电子币,1=实物币 会员ID|44Byte|会员唯一ID,前36byte为会员唯一ID,后8byte为门店ID 会员名称|32Byte|GB2312编码的文字,以'/0'结尾(协议版本140及以上,生效) 游戏机回应PID=0x0183内容如下: 应答参数|长度|说明 ---|---|--- 此次事务ID|2Byte|复制发送的事务ID 结果|2Byte|0x0000=成功,其他=状态码,详见第二十一章状态码 举例:待完善 ### **8.4 通用参数设置(PID=0x0104)** --- 数据方向:外接设备->游戏机 说明:用于远程设置游戏机参数,将纯玩机参数设置到机器中,超时时间2秒 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 每局币数|1Byte|0~255(枚) 游戏机回应PID=0x0184内容如下: 应答参数|长度|说明 ---|---|--- 结果|2Byte|0x0000=成功,其他=状态码,详见第二十一章状态码 举例:待完善 ### **8.5 开始游戏(PID=0x0105)** --- 数据方向:游戏机->外接设备 说明:用于游戏机开始时通知外接设备状态,给用户交互带来更流畅体验,间隔500ms发送10次,10次都未回应放弃通知。任意一次收到回应即可完成。 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|见名词解释事务ID 外接设备回应PID=0x0185内容如下: 应答参数|长度|说明 ---|---|--- 事务ID|2Byte|见名词解释事务ID 举例:待完善 ### **8.6 结束游戏(PID=0x0106)** --- 数据方向:游戏机->外接设备 说明:用于游戏机结束游戏时。将游戏结果反馈给其他外接设备。如连接正常但无响应时,此指令需要与投币指令一样将以每500ms一次的频率发送10次直到有回应,如10次未回应代表离线将按超时来处理。建议游戏机将此信息保存起来下次继续执行并在游戏交互界面提示错误与重试。 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|见名词解释事务ID 出奖数量|4Byte|0~0xFFFFFFFF 出奖数量,不中奖=0 奖品类型|1Byte|0=游戏得分,1=彩票,2=实物奖品,3=实物币,4=电子票,5=电子币,0xff=取消游戏,需要退款时会发生退款 奖品出口|1Byte|一般用于多礼品机,默认=0。售货机为箱子号 会员ID|44Byte|会员唯一ID,前36byte为会员唯一ID,后8byte为门店ID 外接设备回应PID=0x0186内容如下: 应答参数|长度|说明 ---|---|--- 此次事务ID|2Byte|复制发送的事务ID 结果|2Byte|0x0000=成功,其他=状态码,详见第二十一章状态码 ### **8.7 设置游戏机扩展参数(PID=0x0107) v1.12后弃用** --- ### **8.8 恢复出厂参数设置(PID=0x0108)** --- 数据方向:外接设备->游戏机 说明:用于远程设置游戏机参数,将游戏机设置还原成出厂默认参数,超时时间2秒 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 无| | 游戏机回应PID=0x0188内容如下: 应答参数|长度|说明 ---|---|--- 结果|2Byte|0x0000=成功,其他=状态码,详见第二十一章状态码 举例:待完善 ### **8.9 通用参数获取(PID=0x0109)** --- 数据方向:外接设备->游戏机 说明:用于外接设备读取游戏机的通用参数,默认超时2秒 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 无|| 游戏机回应PID=0x0189内容如下: 应答参数|长度|说明 ---|---|--- 状态码|2Byte|如出现故障此处非0,详见第二十一章状态码,如填写状态码其他参数无效 每局币数|1Byte|0~255(枚) 举例:待完善 ### **8.10 游戏机扩展参数获取(PID=0x010A) v1.12后弃用** --- ### **8.11 通用游戏机查账(PID=0x010B)** --- 数据方向:外接设备->游戏机 说明:用于外接设备读取游戏机电子码表数据,默认超时2秒 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 无|| 游戏机回应PID=0x018B内容如下: 应答参数|长度|说明 ---|---|--- 状态码|2Byte|如出现故障此处非0,详见第二十一章状态码,如填写状态码其他参数无效 实物币数量|4Byte|历史以来实物币投币量 电子币数量/现金数量|4Byte|历史以来电子币投币量,如果是兑币机这个字段是现金数量 掉落礼品数量|4Byte|历史掉落礼品数量 出票数量|4Byte|历史出彩票数量 举例:待完善 ### **8.12 游戏机报警(PID=0x010C)** --- 数据方向:游戏机->外接设备 说明:用于游戏机出现作弊行为通知外接设备,每500ms一次的频率发送10次直到有回应 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|事务ID 报警类型|1Byte|0=物理摇晃,1=检测到干扰器干扰 外接设备回应PID=0x018C内容如下: 应答参数|长度|说明 ---|---|--- 事务ID|2Byte|事务ID 举例:待完善 ### **8.13 启停游戏机(PID=0x010D)** --- 数据方向:游戏机->外接设备 说明:用于外接设备在检测到异常(干扰)或故障率偏高或被设置为停用时让游戏机不能工作,直到被此指令恢复,如游戏机能控制投币器投币可禁用投币器使其不接受投实物币,默认超时2秒 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|事务ID 动作|1Byte|0=停用,1=恢复 外接设备回应PID=0x018D内容如下: 应答参数|长度|说明 ---|---|--- 事务ID|2Byte|事务ID 举例:待完善 ### **8.14 读取菜单设置项(PID=0x010E) v1.18后弃用** --- ### **8.15 写入菜单设置项(PID=0x010F)** --- 数据方向:外接设备->游戏机 说明:用于外接设备写入非通用参数的设置,用于手机远程设置参数 len = 菜单设置项字符串长度(范围:1-128) 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 菜单设置项编号|2Byte|要写入的编号 菜单设置项类型|1Byte|1-枚举,2-数值,3-字符串 菜单设置项值/字符串长度|4Byte|根据类型传不同的值(数值/枚举:传数值;字符串:长度) 菜单设置项字符串内容|len Byte|内容 游戏机回应PID=0x018F内容如下: 应答参数|长度|说明 ---|---|--- 状态码|2Byte|结果:0成功,非0失败 举例:待完善 ### **8.16 读取菜明细设置项(PID=0x0110) 已弃用** --- ### **8.17 读取菜单索引(PID=0x0111) 已弃用** --- ### **8.18 自定义游戏结果(PID=0x0112)** --- 数据方向:游戏机->外接设备 说明:用于将较复杂的游戏结果传输到云平台进行记录,最多8个值,更多的游戏结果请计算精简到8个,游戏的KEY和意义请在登记时说明清楚 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|见名词解释事务ID 得分KEY1|4Byte|4个字符用于与后台参数对应,NONE=空位,一旦出现NONE后面的值将都无效 得分值1|4Byte|0~0xFFFFFFFF 得分数字 得分KEY2|4Byte|4个字符用于与后台参数对应,NONE=空位,一旦出现NONE后面的值将都无效 得分值3|4Byte|0~0xFFFFFFFF 得分数字 得分KEY3|4Byte|4个字符用于与后台参数对应,NONE=空位,一旦出现NONE后面的值将都无效 得分值3|4Byte|0~0xFFFFFFFF 得分数字 得分KEY4|4Byte|4个字符用于与后台参数对应,NONE=空位,一旦出现NONE后面的值将都无效 得分值4|4Byte|0~0xFFFFFFFF 得分数字 得分KEY5|4Byte|4个字符用于与后台参数对应,NONE=空位,一旦出现NONE后面的值将都无效 得分值5|4Byte|0~0xFFFFFFFF 得分数字 得分KEY6|4Byte|4个字符用于与后台参数对应,NONE=空位,一旦出现NONE后面的值将都无效 得分值6|4Byte|0~0xFFFFFFFF 得分数字 得分KEY7|4Byte|4个字符用于与后台参数对应,NONE=空位,一旦出现NONE后面的值将都无效 得分值7|4Byte|0~0xFFFFFFFF 得分数字 得分KEY8|4Byte|4个字符用于与后台参数对应,NONE=空位,一旦出现NONE后面的值将都无效 得分值8|4Byte|0~0xFFFFFFFF 得分数字 外接设备回应PID=0x0192内容如下: 应答参数|长度|说明 ---|---|--- 此次事务ID|2Byte|复制发送的事务ID 结果|2Byte|0x0000=成功,其他=状态码,详见第二十一章状态码 ### **8.19 获取机台绑定信息(PID=0x0113)** --- 数据方向:游戏机->外接设备 说明:用于游戏机获取外接设备的的机台信息,如绑定门店信息,机台编码,绑定二维码,消费二维码等内容。 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 无|| 外接设备回应PID=0x0193内容如下: 应答参数|长度|说明 ---|---|--- 结果|2Byte|0x0000=成功,其他=状态码,详见第二十一章状态码 机台编码|10Byte|10位机台编码 是否连网|1Byte|0x00=已连网 其他=错误码 是否已登陆|1Byte|0x00=已登陆 其他=错误码 绑定门店ID|36Byte|全为0的uuid值,则未绑定门店 绑定二维码|128Byte|绑定到设备的二维码内容,以字符\0为结束符 消费二维码|128Byte|消费二维码内容,若为空时,还未绑定小程序。,以字符\0为结束符 ### **8.20 上报现金订单信息(PID=0x0114)** --- 数据方向:游戏机->外接设备 说明:游戏机上报现金交易的信息,云端只作订单记录,不再下发出币等指令。 必要:1)游戏机串口建议做待发送区和发送区,2个区域。每次发送的时候先在判断待发送区是否有数据需要发送。每次收到盒子回应要清掉发送区数据,重新发送。2)游戏机与盒子断联之后,游戏机必须累计现金数值。下一次发送累计一起发送。3)游戏机收到盒子的回应要及时清除掉发送缓冲区。 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|见名词解释事务ID 支付金额|4Byte|单位:元 应出币数量|4Byte| 实出币数量|4Byte| 机台余币数量|4Byte| 出币状态|2Byte|0x0000=成功,0x0001=马达卡币,0x0002=马达缺币,0x0003=马达在忙. 外接设备回应PID=0x0194内容如下: 应答参数|长度|说明 ---|---|--- 此次事务ID|2Byte|复制发送的事务ID 结果|2Byte|0x0000=成功,其他=状态码,详见第二十一章状态码 ### **8.21 上报设备故障(PID=0x0115)** --- 数据方向:游戏机->外接设备 说明:游戏机上报设备故障,上报频率最快1分钟一次 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 故障等级|1Byte|0=警告(可以不用马上处理),1=不可使用(已经影响使用),2=紧急(需要马上处理的安全问题) 故障编码|2Byte|厂家自定义的故障编码 故障简述|64Byte|GB2312编码的文字,0=结尾 外接设备回应PID=0x0195内容如下: 应答参数|长度|说明 ---|---|--- 结果|2Byte|0x0000=成功,其他=状态码 ### **8.22 兑币机出币(PID=0x0116)** --- 数据方向:外接设备->兑币机 说明:外接设备发送出币命令给兑币机 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|见名词解释事务ID 订单ID|36Byte|订单的唯一ID 出币数量|4Byte|正整数 出币金额|4Byte|正整数(单位:分) 兑币机回应PID=0x0196内容如下: 应答参数|长度|说明 ---|---|--- 此次事务ID|2Byte|复制发送的事务ID 结果|2Byte|0x0000=成功,0x0001=马达卡币,0x0002=马达缺币,0x0003=马达在忙. ### **8.23 兑币机上报订单信息(PID=0x0117)** --- 数据方向:兑币机->外接设备 说明:兑币机回传订单信息给外接设备,出币完成或者出币中断后,一直发送直到有回应为止 兑币机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 订单ID|36Byte|订单的唯一ID 应出币数量|4Byte| 实出币数量|4Byte| 机台余币数量|4Byte| 出币状态|2Byte|0x0000=成功,0x0001=马达卡币,0x0002=马达缺币,0x0003=马达在忙. 外接设备回应PID=0x0197内容如下: 应答参数|长度|说明 ---|---|--- 结果|2Byte|0x0000=成功,其他=状态码 ### **8.24 兑币获取现金对应应出币数(PID=0x0118)** --- 数据方向:兑币机->外接设备 说明:兑币机获取现金对应的应出币数 兑币机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 无|| 外接设备回应PID=0x0198内容如下: 应答参数|长度|说明 ---|---|--- 是否获取成功|1Byte|是否从后台获取币数成功,成功:0x00, 失败:0x01 1元|2Byte|0x0000,币数 5元|2Byte|0x0000,币数 10元|2Byte|0x0000,币数 20元|2Byte|0x0000,币数 50元|2Byte|0x0000,币数 100元|2Byte|0x0000,币数 ### **8.25 读取菜单设置值(PID=0x0119)** --- 数据方向:外接设备->游戏机 说明:用于外接设备读取游戏机菜单配置值时使用 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 菜单项编号|2Byte|要读取的菜单项编号 游戏机回应PID=0x0199内容如下: len = 菜单设置项字符串长度(范围:1-128) 应答参数|长度|说明 ---|---|--- 状态码|2Byte|结果:0成功,非0失败 菜单项编号|2Byte|要读取的编号 菜单项类型|1Byte|1-枚举,2-数值,3-字符串 菜单设置项值/字符串长度|4Byte|根据类型传不同的值(数值/枚举:传数值;字符串:长度) 菜单设置项字符串内容|len Byte|内容 举例:待完善 ### **8.26 通用检测版本更新(PID=0x0804)** --- 数据方向:游戏机->外接设备 说明:游戏机向支付盒子发起检测版本更新. 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 当前硬件版本|2Byte|必须是正整数 当前软件版本|4Byte|必须是正整数 程序名字|32Byte|英文名称 程序标题|32Byte|英文名称 设备类型|32Byte|英文 外接设备回应PID=0x0884内容如下: len:下载更新版本的地址长度(0-255) 应答参数|长度|说明 ---|---|--- 是否有更新|1Byte|是否有更新,没有:0, 有:1 最新软件版本|4Byte|软件版本必须是正整数 是否已联网|1Byte|没有联网:0, 已联网:1 下载地址的长度|1Byte|下载地址的长度(0-255) 下载地址|len Byte|下载更新版本的地址 举例:待完善 ### **8.27 通用下载需要更新块(PID=0x0805)** --- 数据方向:游戏机->外接设备 说明:游戏机向支付盒子发起检测版本更新. 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 更新包偏移量|4Byte|更新包偏移量 数据包大小|4Byte|数据包大小(1 - 4096 bytes) 外接设备回应PID=0x0885内容如下: len:更新包偏移量(单位:Byte) 应答参数|长度|说明 ---|---|--- 更新包偏移量|4Byte|更新包偏移量 数据包大小|4Byte|数据包大小 数据包|len Byte|数据包 升级包总大小|4Byte|升级包总大小 举例:待完善 ### **8.28 上报实物币(PID=0x0120)** --- 数据方向:游戏机->外接设备 说明:游戏机向支付盒子上报实物币数量. 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|见名词解释事务ID 投币数量|4Byte| 外接设备回应PID=0x01A0内容如下: 应答参数|长度|说明 ---|---|--- 此次事务ID|2Byte|复制发送的事务ID ### **8.29 出币过程信息(PID=0x0121)** --- 数据方向:兑币机->外接设备 说明:兑币机向支付盒子上报出币过程信息. 兑币机主板在出币时,需每隔200ms上报一次 兑币机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 应出币数|4Byte|正整数 待出币数|4Byte|正整数 本次交易累计金额(单位:分)|4byte|正整数 外接设备回应PID=0x01A1内容如下: 说明:可不回复 应答参数|长度|说明 ---|---|--- 结果|1Byte|0-成功,非0失败 ### **8.30 是否上报出币过程信息(PID=0x0122)** --- 数据方向:外接设备(安卓板)->兑币机 说明:外设设备询问兑币机是否上报出币过程信息,再握手完成之后询问。 外设设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 是否上报出币过程信息|1Byte|0-不需要,1-需要 兑币机回应PID=0x01A2内容如下: 应答参数|长度|说明 ---|---|--- 结果|1Byte|0-成功,非0失败 ### **8.31 兑币机现金套餐更新(PID=0x0123)** --- 数据方向:外接设备->兑币机 说明:现金套餐已更新,兑币机重新获取现金套餐数据 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|见名词解释 兑币机回应PID=0x01A3内容如下: 应答参数|长度|说明 ---|---|--- 事务ID|2Byte|见名词解释 ### **8.32 获取支付盒子信息(PID=0x0124)** --- 数据方向:游戏机->外接设备 说明:用于游戏机获取外接设备的的机台信息,如机台编码,是否联网,是否登陆业务系统。 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 无|| 外接设备回应PID=0x01A4内容如下: 应答参数|长度|说明 ---|---|--- 结果|2Byte|0x0000=成功,其他=状态码,详见第二十一章状态码 机台编码|10Byte|10位机台编码 是否连网|1Byte|0x00=已连网 其他=错误码 是否已登陆|1Byte|0x00=已登陆 其他=错误码 绑定门店名称|36Byte|根据登陆状态,已登陆就有名称 ### **8.33 获取消费码(PID=0x0125)** --- 数据方向:游戏机->外接设备 说明:用于游戏机获取消费码。 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 无|| 外接设备回应PID=0x01A5内容如下: 应答参数|长度|说明 ---|---|--- 结果|2Byte|0x0000=成功,其他=状态码,详见第二十一章状态码 消费二维码|128Byte|消费二维码内容,若为空时,还未绑定小程序。,以字符\0为结束符 ### **8.34 纸钞机获取设置(PID=0x0126)** --- 数据方向:纸钞机->外接设备 说明:用于纸钞机获取对应设置 纸钞机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 无|| 外接设备回应PID=0x01A6内容如下: 应答参数|长度|说明 ---|---|--- 结果|2Byte|0x0000=成功,其他=状态码,详见第二十一章状态码 纸钞机类型|1Byte|0-无,1-ICT1, 2-ITL1, 3-ICT2, 4-ITL2 兑币机工作模式|1byte|0-云端,1-本地 ## 九 娃娃机专用部分,其他类型可忽略 此部分内容娃娃机必须实现 ### **9.1 带概率干预云支付(PID=0x0201)** --- 数据方向:外接设备->游戏机 说明:此场景用于礼品机支付时云端服务对其进行概率干预时使用,超时处理同8.2,游戏机记录此投币码表时都计算成电子币,每500ms一次的频率发送10次直到有回应,无回应会退款,一次局数不要超过99,以免游戏机存储空间不足 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|见名词解释 游戏局数|1Byte|此处非游戏币数,是游戏能开始的次数,并且小于100 中奖序列|游戏局数*1Byte|0x00=不出奖(娃娃机),0x01=出奖(娃娃机),0x02=不确定,中奖难度低(口红机),0x03=不确定,中奖难度中(口红机),0x04=不确定,中奖难度高(口红机),此次增加局数按此序列进行出奖 游戏机回应PID=0x0281内容如下: 应答参数|长度|说明 ---|---|--- 此次事务ID|2Byte|复制发送的事务ID 支付结果|2Byte|0x0000=成功,其他=状态码,详见第二十一章状态码 举例:待完善 ## 十 碎票机和存币机部分 此部分内容碎票机和存币机必须实现 ### **10.1 碎票机/存币机会员登录(PID=0x0301)** --- 数据方向:外接设备->碎票机/存币机 说明:外接设备发送会员登录信息到碎票机/存币机,机器收到后可以开始碎票/存币。 特别说明:如果是投币器类型的存币机,收到指令后这个时候打开投币器电源,可以投币存币。 普通类型的碎票机/存币机交互过程是: 会员登录(10.1)--->显示存币数(10.3)--->上传存币结果(10.2) 投币器类型的存币机交互过程是: 会员登录打开投币器电源(10.1)--->显示存币数(10.3)--->下发结束存币指令(10.4)--->上传存币结果(10.2) 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 会员ID|36Byte|Guid,唯一 会员币数|4Byte|会员当前的币数 会员票数|4Byte|会员当前的票数 会员积分整数部分|4Byte|正整数 会员积分小数部分|4Byte|积分小数*100000 会员名称|32Byte|GB2312编码字符串,以‘/0’结尾 游戏机回应PID=0x0381内容如下: 应答参数|长度|说明 ---|---|--- 登录结果|2Byte|0x0000=成功,其他=状态码,详见第二十一章状态码 举例:待完善 ### **10.2 碎票机/存币机上传结果(PID=0x0302)** --- 数据方向:碎票机/存币机->外接设备 说明:碎票机/存币机 完成 碎票/存币,整个过程结束,上传结果 碎票机/存币机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|见名词解释 会员ID|36Byte|Guid,唯一 会员碎票数|4Byte|会员完成的碎票数 会员存币数|4Byte|会员完成的存币数 外接设备回应PID=0x0382内容如下: 应答参数|长度|说明 ---|---|--- 事务ID|2Byte|见名词解释 结果|2Byte|0x0000=成功,其他=状态码,详见第二十一章状态码 举例:待完善 ### **10.3 碎票/存币 保存结果更新(PID=0x0303)** --- 数据方向:外接设备->碎票机/存币机 说明:碎票机/存币机 上传结果后,外接设备发送云端保存的结果和会员储值更新 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 结果|2Byte|0x0000=成功,其他=状态码,详见第二十一章状态码 会员ID|36Byte|Guid,唯一 会员币数|4Byte|会员当前的币数 会员票数|4Byte|会员当前的票数 会员积分整数部分|4Byte|正整数 会员积分小数部分|4Byte|积分小数*100000 会员名称|32Byte|GB2312编码字符串,以‘/0’结尾 游戏机回应PID=0x0383内容如下: 应答参数|长度|说明 ---|---|--- 事务ID|2Byte|见名词解释 结果|2Byte|0x0000=成功,其他=状态码,详见第二十一章状态码 举例:待完善 ### **10.4 上传当前碎票/存币数(仅作显示作用)(PID=0x0304)** --- 数据方向:碎票机/存币机->外接设备 说明:上传当前碎票/存币数,仅用作显示 碎票机/存币机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 当前币数|4Byte|当前存币数 当前票数|4Byte|当前存票数 外接设备不需回应 举例:待完善 ### **10.5 下发 碎票/存币 结束指令(PID=0x0305)** --- 数据方向:外接设备->存币机 说明:外接设备通知存币机结束存币,此命令用于通知 投币器类型的存币机 关闭投币器电源,结束存币,并且上传10.2的结果 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 无 游戏机回应PID=0x0385内容如下: 应答参数|长度|说明 ---|---|--- 结果|2Byte|0x0000=成功,其他=状态码,详见第二十一章状态码 举例:待完善 ## 十一 售货机专用部分 此部分内容售货机和游戏售货机需要实现 ### **11.1 发起购买(PID=0x0401)** --- 数据方向:游戏机->外接设备 说明:用于在售货机屏幕选定商品后进行支付的场景,默认超时5秒,3次重试,如果超时请发送取消购买指令,应答的二维码内容用于正扫的显示,如发送的订单号与 上次相同表示超时时间加长了.需要重新计时 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 格子号|2Byte|售货机格子编号,0开始。管理系统已知每个各自的商品 价格|4Byte|单位(分)商品售卖价格 订单号|16Byte|订单唯一序号,游戏机自行生成保证当天本机唯一,用于防止重复下单 超时时间|1Byte|单位秒,如超过此时间未支付将自动取消交易 设备回应PID=0x0481内容如下: 应答参数|长度|说明 ---|---|--- 状态码|2Byte|如出现故障此处非0,详见第二十一章状态码,如填写状态码其他参数无效 二维码内容|150Byte|二维码的URL,用于生成二维码,0=结束 ### **11.2 取消购买(PID=0x0402)** --- 数据方向:游戏机->外接设备 说明:用于在售货机屏幕选择取消支付时通知外接设备。有可能取消的时候已经支付成功了,将会继续将购物流程走下去。如果取消的时候还未完成将取消支付。 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|见名词解释 订单号|16Byte|订单唯一序号,游戏机自行生成保证当天本机唯一,用于防止重复下单 设备回应PID=0x0482内容如下: 应答参数|长度|说明 ---|---|--- 事务ID|2Byte|见名词解释 状态码|2Byte|如出现故障此处非0,详见第二十一章状态码,如填写状态码其他参数无效 ### **11.3 支付完成请求出货(PID=0x0403)** --- 数据方向:外接设备->游戏机 说明:设备通知游戏机出货,默认超时5秒,超时重试5次。收到后马上启动机械装置出货。出货结果需要回应,如出货不成功系统将会将此订单置疑,请求售后处理。如5次都没有响应将退款 设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|见名词解释 订单号|16Byte|订单唯一序号,游戏机自行生成保证当天本机唯一,用于防止重复下单 格子号|2Byte|售货机格子编号,0开始。管理系统已知每个各自的商品 价格|4Byte|单位(分)商品售卖价格 游戏机回应PID=0x0483内容如下: 应答参数|长度|说明 ---|---|--- 状态码|2Byte|0x0000=成功,其他=状态码,详见第二十一章状态码 事务ID|2Byte|见名词解释 ### **11.4-11.8 保留指令** ### **11.9 获取游戏正扫二维码以及商品图片(PID=0x0409)** --- 数据方向:游戏机->外接设备 说明:用于游戏机在屏幕上出现友好的支付提示,超时2秒,如外接设备还未准备好将回应(0x020B 设备正忙,需要等待) 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 外接设备回应PID=0x0489内容如下: 应答参数|长度|说明 ---|---|--- 状态码|2Byte|如出现故障此处非0,详见第二十一章状态码,如填写状态码其他参数无效 二维码内容|150Byte|二维码的URL,用于生成二维码,0=结束 商品图片URL|150Byte|用于有屏幕的机器显示商品图片,0=结束,1.19版本才有 举例:待完善 ## 十二 扩展盒子 说明:扩展盒子用于将不支持CNGPI的游戏机转换成支持CNGPI的,如油菜花扩展盒子还加入了防电磁干扰功能. --- ### **12.1 游戏机上报状态(PID=0x9501)** --- 数据方向:游戏机->外接设备 说明:当设备受到电磁干扰,摇晃等状况时通知上层系统进行记录或报警 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 类型|2Byte| 0=摇晃,1=电磁干扰,2=恢复设置,3=缺币,4=缺票,5=非法开门,6=非法开门恢复,7=游戏机通电,8=游戏机断电,9=投币线被拔,10=投币线被拔恢复,0xff=状态恢复正常 外界设备回应PID=0x9581内容如下: 应答参数|长度|说明 ---|---|--- ### **12.2 实物币投币(PID=0x9502)** --- 数据方向:游戏机->外接设备 说明:游戏机收到实物币信号时,通知外设,缓存1秒数量,每次500ms超时,10次就放弃,下次投币累加后一次传输 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|控制重发用的 数量|2Byte|实物币数 外界设备回应PID=0x9582内容如下: 应答参数|长度|说明 ---|---|--- 事务ID|2Byte|控制重发用的 数量|2Byte|实物币数 ### **12.3 出票中(PID=0x9503)** --- 数据方向:游戏机->外接设备 说明:游戏机出票或者出币过程中用于显示正在数值 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|用于重发 类型|2Byte|0=电子票,1=实物票,2=电子币,3=实物币,4=出票使能,5=出币使能,6=实物币,7=暂存票正在出票数,8=暂存票可获取票数,9=暂存票正在出实物票 数量|4Byte|实际数量 设备回应PID=0x9583内容如下: 应答参数|长度|说明 ---|---|--- 事务ID|2Byte|用于重发 ### **12.4 扩展盒菜单** --- 说明:写入和读取菜单请参考8.15和8.16 #### **油菜花扩展盒菜单保留项V1** id|说明 ---|--- 10000|版本号,目前=1,读取出1才设置如下参数 10001|投币常态电平,0=低,1=高 10002|退票马达使能常态电平,0=低,1=高 10003|退票光眼常态电平,0=低,1=高 10004|投币周期(ms) 10005|投币脉宽(ms) 10006|退票周期(ms) 10007|退票脉宽(ms) 10008|退票延迟(ms) 10009|退票模式,0=电子票,1=实物票 10010|退票额度 10011|退币额度 10012|类型设置,0=都不接受,1=接收彩票,2=接受游戏币 10013|识别投币脉宽(ms) 10014|干扰识别灵敏度,0~3:关闭、迟钝、一般、灵敏 10015|检测到干扰是否锁定设备,0=不锁定,1=锁定 10016|工作模式,0=模拟机,1=退票,2=退币,3=体育 10017|每N张票上传一次票数 ### **12.6 升级(PID=0x0506)** --- 数据方向:外接设备->游戏机 说明:外接设备主动发送升级第一包 外接设备发送内容(DATA)如下: 12.6.1第一包数据如下: 发送参数|长度|说明 ---|---|--- 该包偏移量|4yte| 板子类型|1Byte| 板子硬件版本|2Byte| 固件版本|2Byte| 固件1总大小|4Byte| 固件2总大小|4Byte| 第一区偏移量|4Byte| 第一区CRC校验|4Byte| 第二区偏移量|4Byte| 第二区CRC校验|4Byte| 第一区数据|NByte| 第二区数据|NByte| 12.6.2其他包数据如下: 发送参数|长度|说明 ---|---|--- 该包偏移量|4yte| 包数据|NByte| 设备回应PID=0x0586内容如下: 应答参数|长度|说明 ---|---|--- 操作结果|2Byte|成功:0x0001 校验失败:0x0002 硬件版本错误:0x0003 固件版本错误:0x0004 板子类型错误:0x0005 更新完成:0x0006 下次偏移量|4Byte| ### **12.7 发送管理卡状态(PID=0x9507)** --- 数据方向:外接设备->游戏机 说明:插上管理卡或者拔出管理卡,通知安全盒,插上管理卡后,可以拔投币线和开门,并消除拔投币线、开门、干扰报警 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 管理卡状态|2Byte|0=拔出,1=插上 外界设备回应PID=0x9587内容如下: 应答参数|长度|说明 ---|---|--- ### **12.8 出票管理(PID=0x9508)** --- 数据方向:外接设备->游戏机 说明:开始/停止出实物票、正在出票是否自动转换为待取票、获取待取票数 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 开始/停止出实物票|1Byte|0=停止,1=开始 是否自动转换为待取票|1Byte|0=停止,1=开始 获取待取票数|1Byte|0=不获取,1=获取 外界设备回应PID=0x9588内容如下: 应答参数|长度|说明 ---|---|--- ## 十三 音乐机专用部分 ### **13.1 音乐挑战结束(PID=0x0601)** --- 数据方向:游戏机->外接设备 说明:用于音乐机挑战某个歌曲后的得分传到云端进行排行. 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|见名词解释事务ID 歌曲ID|16Byte|歌曲对应的uuid,如数字请自行拼接,保证歌曲唯一 游戏得分|4Byte|歌曲挑战的得分 游戏难度|1Byte|难度级别自定义 歌曲名字长度|1Byte|0=游戏得分,1=彩票,2=实物奖品 歌曲名|nByte|歌曲的名字,GB2312(兼容ANSI),0表示结束 外接设备回应PID=0x0681内容如下: 应答参数|长度|说明 ---|---|--- 此次事务ID|2Byte|复制发送的事务ID 结果|2Byte|0x0000=成功,其他=状态码,详见第十四章状态码 ## 十四 车辆专用部分 --- 流程图,此图适合用于卡丁车,汽车小镇,碰碰车设备的对接 ![车辆流程](resource/cdc.png) ### **14.1 查询状态(PID=0x0701)** --- 数据方向:外接设备->车辆 说明:查询车辆状态,每5秒一次 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 外接设备状态|1Byte|正常:0x00 异常:0x01 外接状态码|1Byte|正常:0x00 搜索不到wifi:0x01 wifi连接中:0x02 连接wifi失败:0x03 连接外网失败:0x04 车辆回应PID=0x0781内容如下: 应答参数|长度|说明 ---|---|--- 车状态|1Byte|待机:0x00 暂停:0x01 运行中:0x02 运维中:0x03 故障中:0x10 总圈数|2Byte|总圈数 总用时|4Byte|毫秒 当前圈数|2Byte|当前第几圈 是否结束|1Byte|否:0x00 是:0x01 是否强制结束|1Byte|否:0x00 是:0x01 强制结束不参与排行 电量|1Byte|百分比:0~100 ### **14.2 启动车辆(PID=0x0702)** --- 数据方向:外接设备->车辆 说明:启动车辆 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|用于重发 启动类型|1Byte|计时:0x01 计圈:0x02 数量|2Byte|计时(秒数)/计圈(圈数) 会员卡号|36Byte|Guid,唯一 会员名称|10Byte|使用GB2312(兼容ANSI)编码的文字 会员等级|1Byte| 会员余币|4Byte| 会员积分|4Byte| 车辆回应PID=0x0782内容如下: 应答参数|长度|说明 ---|---|--- 事务ID|2Byte|控制重发用,回复对应的事务ID 结果|1Byte|成功:0x00 失败:0x01 ### **14.3 停止车辆(PID=0x0703)** --- 数据方向:外接设备->车辆 说明:停止车辆一切动作,计时/计圈复位,车辆进入待机状态 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 无|| 车辆回应PID=0x0783内容如下: 应答参数|长度|说明 ---|---|--- 结果|1Byte|成功:0x00 失败:0x01 ### **14.4 上报圈数/站点的用时和得分(PID=0x0704)** --- 数据方向:车辆->外接设备 说明:车辆上报圈数和对应用时 车辆发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 圈数(第几圈)/站点(第几站)|2Byte|第几圈/第几站 圈数/站点用时(毫秒)|4Byte|对应圈数/站点用时 总圈数/总站数|2Byte|总圈数/总站数 总用时|4Byte|毫秒 圈数/站点得分|4Byte|对应圈数/站点得分 总得分|4Byte|总得分 是否结束|1Byte|否:0x00 是:0x01 是否强制结束|1Byte|否:0x00 是:0x01 强制结束不参与排行 外接设备回应PID=0x0784内容如下: 应答参数|长度|说明 ---|---|--- 结果|1Byte|成功:0x00 失败:0x01 ### **14.5 运维启动(PID=0x0705)** --- 数据方向:外接设备->车辆 说明:启动车辆 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 时间|2Byte|计时(秒数) 外接设备回应PID=0x0785内容如下: 应答参数|长度|说明 ---|---|--- 结果|1Byte|成功:0x00 失败:0x01 ### **14.6 车辆加时加圈(PID=0x0706)** --- 数据方向:外接设备->车辆 说明:车辆加时加圈 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|用于重发 增加类型|1Byte|计时:0x01 计圈:0x02 数量|2Byte|计时(秒数)/计圈(圈数) 车辆回应PID=0x0786内容如下: 应答参数|长度|说明 ---|---|--- 事务ID|2Byte|控制重发用,回复对应的事务ID 结果|1Byte|成功:0x00 失败:0x01 ### **14.7 上报会员积分变更(PID=0x0707)** --- 数据方向:车辆->外接设备 说明:车辆上传会员积分变更 车辆发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|用于重发重复判断,每次上报成功都应该变更下一次事务ID 会员卡号|36Byte|Guid,唯一 积分|4Byte| 积分操作|1Byte|0:增加 1:减少 外接设备回应PID=0x0787内容如下: 应答参数|长度|说明 ---|---|--- 结果|1Byte|成功:0x00 失败:0x01 事务ID|2Byte|用于重发重复判断,每次上报成功都应该变更下一次事务ID(协议版本140及以上) ### **14.8 获取车辆设置(PID=0x0708)** --- 数据方向:车辆->外接设备 说明:车辆询问设置 车辆发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 外接设备回应PID=0x0788内容如下: 应答参数|长度|说明 ---|---|--- 结果|1Byte|成功:0x00 失败:0x01 接记圈器|1Byte|不接:0x00 接:0x01 记圈器感应延时时间|2Byte|单位:秒 停车倒计时|2Byte|单位:秒 计时模式终点停车|1Byte|否:0, 是:1 是否发车按键启动|1Byte|否:0, 是:1 启动类型|1Byte|计时:0x01 计圈:0x02 数量|2Byte|计时(秒数)/计圈(圈数) 到终点延迟停车时间|4Byte|单位:毫秒 灯光控制模式|1Byte|默认:0,启动亮,停车灭。1,平时不亮,启动也不亮,等停车倒计时再闪烁,到时间停止灭。 ### **14.9 上报离线启动数据(PID=0x0709)** --- 数据方向:车辆->外接设备 说明:车辆上传会员积分变更 车辆发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|用于重发重复判断,每次上报成功都应该变更下一次事务ID 累计启动次数|4Byte|正整数 开始时间时间(秒)|4Byte|正整数(没有可以传0) 结束时间时间(秒)|4Byte|正整数(没有可以传0) 离线启动时长(秒)|4Byte|正整数 外接设备回应PID=0x0789内容如下: 应答参数|长度|说明 ---|---|--- 结果|1Byte|成功:0x00 失败:0x01 ### **14.10 获取车辆实时数据(PID=0x070A)** --- 数据方向:外接设备->车辆 说明:外接设备每5秒询问一次,获取车辆实时数据 外接设备发送PID=0x070A内容如下: 应答参数|长度|说明 ---|---|--- 车辆回应内容PID=0x078A内容如下: 发送参数|长度|说明 ---|---|--- 圈数(第几圈)/站点(第几站)|2Byte|第几圈/第几站 圈数/站点用时(毫秒)|4Byte|对应圈数/站点用时 总圈数/总站数|2Byte|总圈数/总站数 总用时|4Byte|毫秒 圈数/站点得分|4Byte|对应圈数/站点得分 总得分|4Byte|总得分 ## 十五 合作设备部分 ### **15.1 设备注册(PID=0x0801)** --- 数据方向:游戏机->外接设备 说明:游戏机向支付盒子发起注册(出厂注册),间隔10秒发起一次。 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 产品ID|4Byte|产品ID 机器唯一ID|16Byte|机器唯一ID 硬件版本|2Byte|必须是正整数 软件版本|4Byte|必须是正整数 程序名字|32Byte|英文名称 程序标题|32Byte|英文名称 是否参与合作|1Byte|0:参与,其它:不参与 外接设备回应PID=0x0881内容如下: 应答参数|长度|说明 ---|---|--- 结果状态|1Byte|结果状态,成功:0x00, 失败:0x01 Key|32Byte|注册通讯密钥 Number|9Byte|设备编号 ### **15.2 合作同步序号(PID=0x0802)** --- 数据方向:游戏机->外接设备 说明:游戏机向支付盒子发起同步序号,游戏机开机之后,如果没有注册流程,就发同步序号(每隔5秒),直到收到盒子回复成功才进入下一步流程。 建议每次投币成功之后,游戏机更新同步序号,发送给盒子(每隔5秒),直到收到盒子回复成功。 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 同步序号|4Byte|同步序号必须是正整数 外接设备回应PID=0x0882内容如下: 应答参数|长度|说明 ---|---|--- 结果状态|1Byte|结果状态,成功:0x00, 失败:0x01 举例:待完善 ### **15.3 询问是否可用(PID=0x0803)** --- 数据方向:游戏机->外接设备 说明:游戏机向支付盒子询问当前机器状态,建议待机时,每隔10-30分钟询问,每隔500ms询问1次,连续询问10次,直到有回复才停止。 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 机器唯一ID|16Byte|机器唯一ID 随机数|16Byte|随机数 校验码|16Byte|随机数的签名内容 外接设备回应PID=0x0883内容如下: 应答参数|长度|说明 ---|---|--- 机器状态|1Byte|机器可用状态,可用:0x00, 其他值为不可用状态 状态说明|32Byte|不可用状态的说明 校验码|17Byte| 请求的随机数取反后再加上机器状态(共17Byte)的签名内容 ### **15.4 合作检测版本更新(PID=0x0804)** --- 数据方向:游戏机->外接设备 说明:游戏机向支付盒子发起检测版本更新. 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 当前硬件版本|2Byte|必须是正整数 当前软件版本|4Byte|必须是正整数 程序名字|32Byte|英文名称 程序标题|32Byte|英文名称 外接设备回应PID=0x0884内容如下: len:下载更新版本的地址长度(0-255) 应答参数|长度|说明 ---|---|--- 是否有更新|1Byte|是否有更新,没有:0, 有:1 最新软件版本|4Byte|软件版本必须是正整数 是否已联网|1Byte|没有联网:0, 已联网:1 下载地址的长度|1Byte|下载地址的长度(0-255) 下载地址|len Byte|下载更新版本的地址 举例:待完善 ### **15.5 合作下载需要更新块(PID=0x0805)** --- 数据方向:游戏机->外接设备 说明:游戏机向支付盒子发起检测版本更新. 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 更新包偏移量|4Byte|更新包偏移量 数据包大小|4Byte|数据包大小(1 - 4096 bytes) 外接设备回应PID=0x0885内容如下: len:更新包偏移量(单位:Byte) 应答参数|长度|说明 ---|---|--- 更新包偏移量|4Byte|更新包偏移量 数据包大小|4Byte|数据包大小 数据包|len Byte|数据包 举例:待完善 ### **15.6 合作投币(PID=0x0806)** --- 数据方向:外接设备->游戏机 说明:此场景用于,外接设备进行云支付或者投币器进行投币时使用,当用于礼品机时表示此次投币使用游戏机内置单机概率进行出奖,将以每500ms一次的频率一直发送5秒直到有回应,如5秒未回应代表离线将按超时来处理。支付设备将进行退款处理。 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|用于标识一次投币行为的防重发与防漏发 投币数|2Byte|投币数量 币类型|1Byte|0=电子币,1=实物币 会员ID|44Byte|会员唯一ID,前36byte为会员唯一ID,后8byte为门店ID 订单号|16Byte|前12Byte为云端订单号,后4Byte为同步序号 校验码|16Byte|订单号的签名内容 游戏机回应PID=0x0886内容如下: 应答参数|长度|说明 ---|---|--- 此次事务ID|2Byte|复制发送的事务ID 结果|2Byte|0x0000=成功,其他=状态码,详见第二十一章状态码 举例:待完善 ### **15.7 抄录码表(PID=0x0807)v1.40后使用** --- 数据方向:外接设备->游戏机 说明:外接设备询问游戏机码表数据,码表数量单次最大支持100个。连续询问5次没回应,超时处理。 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|用于标识一次投币行为的防重发与防漏发 游戏机回应PID=0x0887内容如下: 应答参数|长度|说明 ---|---|--- 此次事务ID|2Byte|复制发送的事务ID 结果|2Byte|0x0000=成功,其他=失败 此次码表数量|1Byte|1-100 码表1-总投币数码表|1Byte| 码表1数值-总投币数|4Byte|正整数 码表2对应后台编号|1Byte|2 码表2数值|4Byte|正整数 码表3对应后台编号|1Byte|3 码表3数值|4Byte|正整数 ...|1Byte|1-100 ...|4Byte|正整数 码表n对应后台编号|1Byte|1-100 码表n数值|4Byte|正整数 举例:待完善 ## 十六 小火车 ### **16.1 获取基本设置(PID=0x0901)** --- 数据方向:游戏机->外接设备 说明:游戏机向支付盒子询问单价和油门电压 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 外接设备回应PID=0x0981内容如下: 应答参数|长度|说明 ---|---|--- 回应结果|1Byte|待机:0x00,未联网:0x01,待绑定:0x02 盒子编码|9Byte| 项目名称|32Byte| 会员单价|4Byte|正整型 会员单价时间|4Byte|正整型 散客单价|4Byte|正整型 散客单价时间|4Byte|正整型 油门电压|4Byte|正整型 信号质量|1Byte|0~100 总接待乘客人数|4byte| 总故障次数|4Byte| ### **16.2 询问座位状态(PID=0x0902)** --- 数据方向:外接设备->游戏机 说明:支付盒子向游戏机发送询问座位状态(间隔5秒) 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 游戏机回应PID=0x0982内容如下: 应答参数|长度|说明 ---|---|--- 实时座位数|1Byte|1-20 1号座位实时状态|1Byte|可用:0x00,故障:0x01 2号座位实时状态|1Byte|可用:0x00,故障:0x01 n号座位实时状态|1Byte|可用:0x00,故障:0x01 ### **16.3 座位付款(PID=0x0903)** --- 数据方向:外接设备->游戏机 说明:支付盒子向游戏机发送哪个座位已支付 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 座位编号|1Byte|范围:1-20 支付金额|4Byte|正整型 游玩时间|4Byte|正整型 游戏机回应PID=0x0983内容如下: 应答参数|长度|说明 ---|---|--- 结果状态|1Byte|结果状态,成功:0x01, 失败:0x00 ### **16.4 座位设置(PID=0x0904)** --- 数据方向:外接设备->游戏机 说明:支付盒子向游戏机发送座位数、每个座位的状态 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|见名词解释事务ID 座位数|1Byte|1-20 1号座位状态|1Byte|可用:0x00,故障:0x01 2号座位状态|1Byte|可用:0x00,故障:0x01 n号座位状态|1Byte|可用:0x00,故障:0x01 游戏机回应PID=0x0984内容如下: 应答参数|长度|说明 ---|---|--- 结果状态|1Byte|结果状态,成功:0x01, 失败:0x00 ## 十七 户外刷卡桩 ### **17.1 流程(PID=0x0A01)** --- 数据方向:外接设备->游戏机 说明:外接设备向游戏机发送流程 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|见名词解释事务ID 流程|1Byte|0:启动流程,1:待机,2:支付中 游戏机回应PID=0x0A81内容如下: 应答参数|长度|说明 ---|---|--- 回应结果|1Byte|成功:0,失败:0x01 ### **17.2 盒子版本号(PID=0x0A02)** --- 数据方向:游戏机->外接设备 说明:游戏机询问外接设备软硬件版本 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 硬件版本号|2Byte|正整型 软件版本号|2Byte|正整型 外接设备回应PID=0x0A82内容如下: 应答参数|长度|说明 ---|---|--- 回应结果|1Byte|成功:0,失败:0x01 硬件版本号|2Byte|正整型 软件版本号|2Byte|正整型 ### **17.3 单价(PID=0x0A03)** --- 数据方向:游戏机->外接设备 说明:游戏机向外接设备询问单价 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 外接设备回应PID=0x0A83容如下: 应答参数|长度|说明 ---|---|--- 回应结果|2Byte|成功:0x00,失败:0x01 会员单价|4Byte|正整型 散客单价|4Byte|正整型 会员单位长度|2Byte|正整型 会员单位名称|nByte|gb2312编码格式,最多32字节。 ### **17.4 刷卡/扫码结果详情(PID=0x0A04)** --- 数据方向:外接设备->游戏机 说明:外接设备向游戏机发送支付结果 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|见名词解释事务ID 支付结果|1Byte|成功:0,支付失败:其它 失败错误码|4byte|正整型 对应类型字符串|32Byte|GB2312编码的文字 类型说明字符串|64Byte|GB2312编码的文字 游戏机回应PID=0x0A84内容如下: 应答参数|长度|说明 ---|---|--- 回应结果|1Byte|成功:0,失败:0x01 ### **17.5 人数(PID=0x0A05)** --- 数据方向:游戏机->外接设备 说明:游戏机向外接设备发送人数 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 人数|2Byte|正整型 人数是否清零|4Byte|0:不清零,1:清零 最大人数|4Byte|正整型 外接设备回应PID=0x0A85容如下: 应答参数|长度|说明 ---|---|--- 回应结果|1Byte|失败:0x00,成功:0x01 ### **17.6 更新人数(PID=0x0A06)** --- 数据方向:外接设备->游戏机 说明:外接设备向游戏机发送更新人数 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|见名词解释事务ID 本次需验人数|2Byte|正整型 已验人数|4Byte|正整型 总验人数|4Byte|正整型 游戏机回应PID=0x0A86容如下: 应答参数|长度|说明 ---|---|--- 回应结果|1Byte|失败:0x00,成功:0x01 ### **17.7 设备名称(PID=0x0A07)** --- 数据方向:游戏机->外接设备 说明:游戏机询问外接设备名称 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 外接设备回应PID=0x0A87容如下: 应答参数|长度|说明 ---|---|--- 名称长度|2Byte|正整型 名称|nByte|gb2312编码格式,最多64字节。 ### **17.8 取消扫码/刷卡扣款(PID=0x0A08)** --- 数据方向:游戏机->外接设备 说明:游戏机向外接设备发送取消扫码/刷卡扣款 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|见名词解释事务ID 外接设备回应PID=0x0A88容如下: 应答参数|长度|说明 ---|---|--- 事务ID|2Byte|复制事务ID ### **17.9 取消扫码/刷卡扣款结果(PID=0x0A09)** --- 数据方向:外接设备->游戏机 说明:外接设备向游戏机发送取消扫码/刷卡扣款的结果 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|见名词解释事务ID 游戏机回应PID=0x0A89容如下: 应答参数|长度|说明 ---|---|--- 事务ID|2Byte|复制事务ID 结果|1Byte|0:成功,其他:失败 ### **17.10 设备类型(PID=0x0A0A)** --- 数据方向:游戏机->外接设备 说明:游戏机向外接设备询问设备类型 游戏机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 外接设备回应PID=0x0A8A容如下: 应答参数|长度|说明 ---|---|--- 结果|1Byte|0:失败,其他成功 设备类型|1Byte|0:未知,1:游戏机P位,2:入口,3:出口,4:自动,5:卡丁车 设备类型名称|16Byte|gb2312编码 ## 十八 网关接口 ### **18.1 网关向外接设备发送http请求(PID=0x0B01)** --- 数据方向:网关->外接设备 说明:网关向外接设备发送http请求 网关发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|见名词解释事务ID 请求ID|4Byte| 数据|nByte|json数据格式 {"host":"http://www.baidu.com","header":"","post":"{\"name\":\"youcaihua\",\"age\":12} 外接设备回应PID=0x0B81内容如下: 应答参数|长度|说明 ---|---|--- 事务ID|2Byte|复制发送事务ID 回应结果|1Byte|成功:0,失败:0x01 ### **18.2 外接设备回复http请求(PID=0x0B02)** --- 数据方向:外接设备->网关 说明:接设备回复http请求 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 事务ID|2Byte|见名词解释事务ID 请求ID|4Byte| 数据|nByte|json数据格式 { "HttpStatus": 200, "header": "HTTP/1.1 200 OK\r\nContent-Length: 145\r\nConnection: close\r\nSet-Cookie: ss-id=qqQjXitJoCCSUGnMdzoR;path=/\r\n", "data": "{\"ResponseStatus\":{\"ErrorCode\":\"9998\",\"Message\":\""}}" } 网关回应PID=0x0B82内容如下: 应答参数|长度|说明 ---|---|--- 事务ID|2Byte|复制发送事务ID 回应结果|1Byte|成功:0,失败:0x01 ### **18.3 网关请求下载固件(PID=0x0B03)** --- 数据方向:网关->外接设备 说明:网关请求下载固件 网关发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 更新包偏移量|4Byte|更新包偏移量 数据包大小|4Byte|数据包大小(1 - 4096 bytes) 域名长度|1Byte| 域名|nByte| 外接设备回应PID=0x0B83内容如下: 应答参数|长度|说明 ---|---|--- 固件总大小|4Byte|如果网络超时返回0 更新包偏移量|4Byte| 当前数据包大小|4Byte|如果网络超时返回0 数据包|len Byte| ### **18.4 网关上报设备信息(PID=0x0B04)** --- 数据方向:网关->外接设备 说明:网关上报设备信息 网关发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 是否覆盖|1Byte|0:覆盖 1:新增 设备数量|4Byte| 设备列表|nByte| 外接设备回应PID=0x0B84内容如下: 应答参数|长度|说明 ---|---|--- 回应结果|1Byte|成功:0,失败:0x01 ### **18.5 外接设备下发MQ信息(PID=0x0B05)** --- 数据方向:外接设备->网关 说明:外接设备下发MQ信息 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 内容长度|4Byte| 内容|nByte| 外接设备回应PID=0x0B85内容如下: 应答参数|长度|说明 ---|---|--- 回应结果|1Byte|成功:0,失败:0x01 ## 十九 售货机专用部分 ### **19.1 同步状态(PID=0x0C01)** --- 数据方向:外接设备->售货机 说明:盒子向售货机询问同步状态 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 设备状态|2Byte|0x0000=正常,其他=状态码,详见第二十一章状态码 信号强度|1Byte|0-100 连网状态|1Byte|0-连接中,1-连接成功,2-已登陆 售货机回应PID=0x0C81内容如下: 应答参数|长度|说明 ---|---|--- 售货机状态|1Byte|0:待机,1:出货中,2:故障,无法使用 售货机货道数|2Byte|货道数量,建议货道数不超过256个。 售货机货道对应状态|nByte|货道对应状态(bit:0异常,1正常),每个byte对应8个货道,比如:第一个byte代表1-8货道,第二个byte代表9-15,...... ### **19.2 出货(PID=0x0C02)** --- 数据方向:外接设备->售货机 说明:盒子向售货机发送出货指令 外接设备发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 格子号|2Byte|售货机格子编号,从1开始 订单ID|36Byte|订单唯一ID 是否兑换|1Byte|0:是,1:否 兑换类型|1Byte|0:积分,1:币,2:彩票 兑换价格|4Byte|单位(币/彩票/积分) 散客价格|4Byte|单位(分) 会员ID|36Byte|Guid,唯一 会员名称|32Byte|GB2312编码字符串,以'/0'结尾 售货机回应PID=0x0C82内容如下: 应答参数|长度|说明 ---|---|--- 结果|2Byte|0=成功,非0失败 ### **19.3 出货结果(PID=0x0C03)** --- 数据方向:售货机->外接设备 说明:售货机向盒子发送出货结果 售货机发送内容(DATA)如下: 发送参数|长度|说明 ---|---|--- 结果|2Byte|0=成功,1=出货失败,2=出货超时。 格子号|2Byte|售货机对应的格子编号,从1开始 订单ID|36Byte|出货指令对应的订单唯一ID 外接设备回应PID=0x0C83内容如下: 应答参数|长度|说明 ---|---|--- 结果|2Byte|0=成功,非0失败 ## 二十 厂商以及产品名录 --- 厂商|厂商编号|产品|产品统一编号|设备类型|详情 ---|---|---|---|---|--- 油菜花|0001|芸苔盒子|0x00010001|支付盒子|[详情](Device/0001/00010001/README.md) 油菜花|0001|芸苔反扫卡头|0x00010002|卡头|[详情](Device/0001/00010001/README.md) 油菜花|0001|油菜花出票器|0x00010003|出票器| 油菜花|0001|卡丁车套件|0x00010004|卡丁车| 油菜花|0001|游戏机安全盒|0x00010005|扩展盒子| 油菜花|0001|魔方卡头IO板|0x00010006|扩展盒子| 油菜花|0001|芸苔碎票机|0x00010007|碎票机| 油菜花|0001|芸苔小火车|0x00010008|小火车| 油菜花|0001|芸苔纸钞机|0x00010009|纸钞机| 油菜花|0001|芸苔户外刷卡桩|0x00010009|户外刷卡桩| 华熙动漫|0002|两爪机(双人)|0x00020001|娃娃机|[详情](Device/0002/00020001/README.md) 谷微动漫|0003|超级抓神|0x00030001|娃娃机|[详情](Device/0003/00030001/README.md) 中芯动漫|0004|口红挑战|0x00040001|口红机|蓝迪,火石[详情](Device/0004/00040001/README.md) 万代|0005|扭蛋机|0x00050001|扭蛋机| 可酷科技|0009|可酷娃娃机|0x00090001|娃娃机|可酷像素娃娃机,可酷你好娃娃机 圣域软件|000A|恋恋红唇|0x000A0001|口红机|荣烁 爱怡航|000B|娃娃机|0x000B0001|娃娃机| 爱怡航|000B|口红机|0x000B0002|口红机| 爱怡航|000B|福袋机|0x000B0003|福袋机| 称心科技|000C|娃娃机套件|0x000C0001|娃娃机| 棒棒堂|000D|棒棒堂口红机|0x000D0001|口红机| 旺尔宝|000E|旺尔宝口红机|0x000E0001|口红机| 雪暴|000F|雪暴娃娃机|0x000F0001|娃娃机| 十二星座|0010|十二星座娃娃机|0x00100001|娃娃机| 萌岛|0011|安米酷扭蛋机|0x00110001|扭蛋机| 谷微动漫|0003|剪刀机|0x00030002|剪刀机| 本佳科技|0012|剪刀机|0x00120001|剪刀机| 本佳科技|0012|娃娃机|0x00120002|娃娃机| 定品动漫|0013|娃娃机|0x00130001|娃娃机| 掌盟|0014|海底小纵队之垃圾分类|0x00140001|纯玩机| 胜骅|0015|舞立方|0x00150001|音乐机| 大成动漫|0016|僵尸大作战|0x00160001|彩票机| 大成动漫|0016|水战小魔怪|0x00160002|彩票机| 大成动漫|0016|飞弹小勇士|0x00160003|彩票机| 科瑞特|0017|乐拍乐运动竞技|0x00170001|运动设备| 临近|0018|AR寻宝|0x00180001|AR设备| 不二动漫|001A|白羊骑士娃娃机|0x001A0001|娃娃机| 奥米科技|001B|娃娃机|0x001B0001|娃娃机| 华秦|001C|车辆|0x001C0001|车辆| 卓漫|001D|兑币机|0x001D0001|兑币机| 粤泽科技|0022|粤泽智能兑币机|0x00220002|粤泽智能兑币机| 嘉德宝|0023|娃娃机|0x00230001|娃娃机| 嘉德宝|0023|兑币机|0x00230002|兑币机| 邦达电子开发|0024|车辆|0x00240001|车辆| 广州市华熙动漫|0030|娃娃机|0x00300001|娃娃机| ## 二十一 设备状态码 状态码0x0000代表无故障,其余分为游戏机故障和外接设备故障两种 游戏机状态码 代码|说明 ---|--- 0x0101|游戏机初始化异常 0x0102|投币器故障 0x0103|出票器故障 0x0201|天车左右运动故障 0x0202|天车前后运动故障 0x0203|天车上下运动故障 0x0204|等待天车移出超时 0x0205|启动收爪超时 0x0206|启动游戏超时 0x0207|启动抓物超时 0x0208|天车归位超时 0x0209|电子锁开启异常 0x020A|出货异常,扭蛋卡蛋 0x020B|需要等待,等待扭蛋操作 0x020C|商品缺货,扭蛋售罄 0x020D|取消交易,客户付款后没有扭 0x020E|感应器故障1,扭蛋旋转异常 0x020F|感应器故障2,扭蛋出蛋位置异常检出 0x0210|感应器故障3,扭蛋售罄感应器异常 0x0211|感应器故障4,出蛋感应器异常 0x0212|感应器故障5,电磁阀原点感应器异常 0x0213|其他异常 0x0301|参数缺失,通讯帧中缺失某个参数或字段 0x0302|参数缺失,通讯帧中某个参数或字段异常、超出范围 0x0401|兑币机纸钞故障 0x0402|兑币机马达1故障 0x0403|兑币机马达2故障 0x0404|兑币机马达全部故障 外接设备状态码 代码|说明 ---|--- 0x0801|无法连接服务器 0x0802|无法连接网络 0x0803|账户异常不能支付 0x0804|未注册到商户 0x0805|刷卡部件异常 0x0806|设备正忙,需要等待 0x08FF|其他异常