HP250通讯协议
HP250 系列通讯协议 起草: 张秀松 校验: 审核: 版本: V0.2 日期: 2021-12-20 1. 仪器供电: (1) 可使用 USB-TYPE-C 端口供电(该端口内置锂电池充电功能),理论电流消耗 =24h; 以上三种供电方式可全部连接,在任意一种电源掉电后,仪器会自动切换到有电的一路,且 不影响仪器正常使用。 2. 通讯端口: (1) 可使用 USB-TYPE-C 端口进行协议通讯,也可使用该端口与配套上位机联机测试; (2) 可使用 RS-232 端口进行协议通讯(3 线),也可使用该端口与配套上位机联机测试; (3) 可使用 RS-485 端口进行协议通讯(2 线),也可使用该端口与配套上位机联机测试; (4) 可使用蓝牙端口进行协议通讯,也可使用该端口与配套 APP 联机测试(开发中); 注意:本通讯协议只适用本型号仪器,上述 4 种接口均使用一致的协议:波特率使用 115200,1 位停止位,8 位数据位, 无奇偶校验,指令周期须大于 25ms。上述 4 种端口均能响应本协议,但不可同时使用不同端口操作,操作时只能使用 其中一种端口。 3.通讯协议帧格式: 仪器地址 功能码 数据长度 数据 结束符 1 字节(0x8C) 1 字节 2 字节 由数据长度决定 2 字节(0x0D 0x0A) 备注:数据长度=功能码+实际数据量+数据;如:数据有 10 字节内容,那么本次通讯帧数据长度为 功能码 1 字节+数据长度 2 字节+数据 10 字节=13 字节;所以数据长度的内容应该是 0x000D,同时遵循低前 高后原则;数据长度第一字节内容=0x0D,第二字节内容=0x00。 4.仪器功能码: 功能码 功能描述 长度 注释 0x08 用于连接仪器 发送无数据,返回携带 20 字节数据 10 字节联机数据,10 字节仪器 编号数据 0x1A 开始测试 发送携带 1 字节数据,返回无数据 1 字节测试类型数据 0x1B 停止测试 发送返回均无数据 0x1C 读测试状态 发送无数据,返回携带 1 字节数据 读取 1 字节测试状态数据 0x1D 读测试结果数据 发送无数据,返回携带 1802 字节数据 读取 1796 字节测试结果数据 0x5C 写积分时间 发送携带 4 字节数据,返回无数据 写入 4 字节积分时间数据 0x53 读积分时间 发送无数据,返回携带 4 字节数据 读取 4 字节积分时间数据 0x5D 写积分时间自动/锁定 发送携带 1 字节数据,返回无数据 写入 1 字节积分调节类型数据 0x54 读积分时间自动/锁定 发送无数据,返回携带 1 字节数据 读取 1 字节积分调节类型数据 5.功能码描述 (1) 0x08 联机功能码 与仪器联机使用0x08 功能码;上位机发送给仪器内容为: 仪器地址+联机+数据长度+结束符=0x8C+0x08+0x03+0x00+0x0D+0x0A; 仪器返回: 仪器地址+联机+数据长度+结束符=0x8C+0x08+0x21+0x00+(10 字节型号+10 字节仪器编号)+0x0D+0x0A; 注释:联机功能码,发送时无需携带数据,返回有 10 字节型号和 10 字节仪器编号数据,请首先使用联机功能码进行联机。 如对仪器型号和编号不关注,可对返回的数据不作处理,只需发送本命令即可。 (2) 0x1A 开始测试功能码 开始测试使用 0x1A 功能码;上位机发给仪器内容为: 仪器地址+开始测试+数据长度+测试类型数据(单次/连续)+结束符=0x8C+0x1A+0x04+0x00+(1/2)+0x0D+0x0A; 仪器返回:仪器地址+开始测试+数据长度+结束符=0x8C+0x1A+0x03+0x00+0x0D+0x0A; 注释:开始测试功能码,发送携带 1 字节测试类型数据,返回无数据;含义为:0x01=单次测试,0x02=连续测试,使用单次测试 模式时,仪器测试一次后自动停止;使用连续测试模式时,仪器自动连续测试,直到发送测试停止命令才会停止,连续测试时,仪 器测试完成一次后,需要等待测试结果被读取之后才会开始下一次测试,比如,发送连续测试命令后,仪器已经计算出测试结果, 此时如果测试结果没有被读取,仪器将不再进行下一次测试。收到开始测试命令后仪器开始本次测试,此时需要等待测试完成,通 过不断读取测试状态确定本次测试是否测试完成,如果测试完成则可以读取测试结果,关于测试状态请参考测试状态功能码描述; (3) 0x1B 停止测试功能码 停止测试使用 0x1B 功能码;上位机发给仪器内容为: 仪器地址+停止测试+数据长度+结束符=0x8C+0x1B+0x03+0x00+0x0D+0x0A; 仪器返回:仪器地址+停止测试+数据长度+结束符=0x8C+0x1B+0x03+0x00+0x0D+0x0A; 注释:停止测试功能码,发送无需数据,返回无数据,收到停止测试命令后仪器将不再进行测试操作,如果本次没有等待测试 完成, 测试停止后数据将不可预估。 (4) 0x1C 读测试状态功能码 读测试状态使用 0x1C 功能码;上位机发给仪器内容为: 仪器地址+读测试状态+数据长度+结束符=0x8C+0x1C+0x03+0x00+0x0D+0x0A; 仪器返回:仪器地址+读测试状态+数据长度+状态数据+结束符=0x8C+0x1C+0x04+0x00+(0/1)+0x0D+0x0A; 注释:读测试状态功能码,发送无数据,返回有 1 字节数据,即测试的状态;开始测试后,什么时候可以读取测试结果由读到的 测试状态决定,如果读到的状态为 0,表示还不可以读测试结果,同时发送读测试结果命令将会无效,如果读到的状态为 1,表示可 以读取本次测试结果,发送读测试结果命令将返回测试结果; (5) 0x1D 读测试结果功能码 读测试结果使用 0x1D 功能码;上位机发给仪器内容为: 仪器地址+读测试结果+数据长度+结束符=0x8C+0x1D+0x03+0x00+0x0D+0x0A; 仪器返回: 仪器地址+读测试结果+数据长度+结果数据+结束符=0x8C+0x1D+0x07+0x07+1796 字节结果数据+0x0D+0x0A; 注释:读测试结果功能码,发送无需数据,返回有 1796 字节数据,开始测试后,当读到测试状态=1,再发送读测试结果命令将返 回本次测试结果。 测试结果数据包含: 注意:解析时数据顺序参考上述表格依次按字节累加,转换时注意整数与小数的转换区别,第一个参数的字节起始位置在协议帧中的数据段 的起始位置,而不是收到的第一个字节,请特别注意!!! 参数 类型(整数/小数) 长度(字节) 备注 相关色温(K) 整数 4 低前高后转换原则 照度(Lx) 小数 4 C/C++联合体/共用体转换原则 色坐标x 小数 4 C/C++联合体/共用体转换原则 色坐标y 小数 4 C/C++联合体/共用体转换原则 色坐标u 小数 4 C/C++联合体/共用体转换原则 色坐标v 小数 4 C/C++联合体/共用体转换原则 色坐标u’ 小数 4 C/C++联合体/共用体转换原则 色坐标v’ 小数 4 C/C++联合体/共用体转换原则 峰值波长(nm) 小数 4 C/C++联合体/共用体转换原则 中心波长(nm) 小数 4 C/C++联合体/共用体转换原则 主波长(nm) 小数 4 C/C++联合体/共用体转换原则 质心波长(nm) 小数 4 C/C++联合体/共用体转换原则 半宽度(nm) 小数 4 C/C++联合体/共用体转换原则 暗信号(16bitAD) 整数 4 C/C++联合体/共用体转换原则 峰值信号(16bitAD) 整数 4 C/C++联合体/共用体转换原则 色纯度(%) 小数 4 C/C++联合体/共用体转换原则 积分时间(us) 小数 4 C/C++联合体/共用体转换原则 色容差 小数 4 C/C++联合体/共用体转换原则 显色指数 小数 4 C/C++联合体/共用体转换原则 R1~R15 小数 4*15 C/C++联合体/共用体转换原则 色偏差 小数 4 C/C++联合体/共用体转换原则 红色比(%) 小数 4 C/C++联合体/共用体转换原则 绿色比(%) 小数 4 C/C++联合体/共用体转换原则 蓝色比(%) 小数 4 C/C++联合体/共用体转换原则 辐照度(W/㎡) 小数 4 C/C++联合体/共用体转换原则 烛光(fc) 小数 4 C/C++联合体/共用体转换原则 明暗视觉比 小数 4 C/C++联合体/共用体转换原则 CIE1931X 小数 4 C/C++联合体/共用体转换原则 CIE1931Y 小数 4 C/C++联合体/共用体转换原则 CIE1931Z 小数 4 C/C++联合体/共用体转换原则 测试日期 整数 4 C/C++联合体/共用体转换原则 测试时间 整数 4 C/C++联合体/共用体转换原则 起始波长(nm) 小数 4 C/C++联合体/共用体转换原则 终止波长(nm) 小数 4 C/C++联合体/共用体转换原则 每nm 光谱数据(380-780nm) 小数 4*401 C/C++联合体/共用体转换原则 (6) 0x5C 写积分时间功能码 写积分时间功能使用 0x5C 功能码;上位机发给仪器内容为: 仪器地址+写积分时间+数据长度+积分时间数据+结束符=0x8C+0x5C+0x07+0x00+4 字节积分时间+0x0D+0x0A; 仪器返回:仪器地址+写积分时间数据+数据长度+结束符=0x8C+0x5C+0x03+0x00+0x0D+0x0A; 注释:写积分时间功能码,发送携带 4 字节数据,返回无数据,积分时间单位以 uS 为单位;整数,例如,要发送的积分时间为 100mS, 换算成 uS=100*1000=100000uS;100000 换算成十六进制=0x186A0;遵循低前高后原则,写入的积分时间数据顺序为:0xA0,0x86, 0x01, 0x00;最大积分时间 5000000uS,最小积分时间 500uS;通过本命令可以设置仪器当前的具体积分时间,如果已经使用自动积 分模式,那么即使设置了积分时间,仪器也会自动调整,如此设置积分时间将无实际意义;只有在锁定下设置才有实际意义。 (7) 0x53 读积分时间功能码 读积分时间功能使用 0x53 功能码;上位机发给仪器内容为: 仪器地址+写积分时间+数据长度+积分时间数据+结束符=0x8C+0x53+0x03+0x00+0x0D+0x0A; 仪器返回: 仪器地址+读积分时间数据+数据长度+积分时间+结束符=0x8C+0x53+0x07+0x00+4 字节积分时间0x0D+0x0A; 注释:读积分时间功能码,发送无数据,返回携带 4 字节数据,积分时间单位以 uS 为单位;数据解析遵循低前高后原则; 通过本命令可以获取仪器当前的具体积分时间。 (8) 0x5D 写积分时间自动/锁定功能码 写积分时间自动/锁定功能使用 0x5D 功能码;上位机发给仪器内容为: 仪器地址+写积分时间自动/锁定+数据长度+自动/锁定+结束符=0x8C+0x5D+0x04+0x00+(0/1)+0x0D+0x0A; 仪器返回:仪器地址+写积分时间自动/锁定+数据长度+结束符=0x8C+0x5D+0x03+0x00+0x0D+0x0A; 注释:写积分时间自动/锁定功能码,发送携带 1 字节数据,返回无数据;含义为:数据=1 表示自动积分,数据=0 表示锁定当前 仪器正在使用的积分时间,此时,无论信号强弱,都不会调整积分时间,谨慎使用;通过本命令可以设置仪器当前是自动积分还是 手动积分。 (9) 0x54 读积分时间自动/锁定功能码 读积分时间自动/锁定功能使用 0x54 功能码;上位机发给仪器内容为: 仪器地址+写积分时间自动/锁定+数据长度+结束符=0x8C+0x54+0x03+0x00+0x0D+0x0A; 仪器返回: 仪器地址+读积分时间自动/锁定+数据长度+自动/锁定+结束符=0x8C+0x54+0x04+0x00+(0/1)+0x0D+0x0A; 注释:读积分时间自动/锁定功能码,发送无数据,返回携带 1 字节数据;含义为:数据=1 表示仪器当前使用自动积分,数据=0 表示仪器已经锁定当前正在使用的积分时间;通过本命令可以获取仪器当前是自动积分还是手动积分。 6.操作流程 联机:仪器所有操作,只有在联机成功后方可进行,发送联机指令即可联机成功,仪器掉电后必须重新联机; 测试: NO YES 连续 单次 开始测试 命令 读测试状 态命令 读测试结 果命令 判断测试 状态=1 单次/连 续 结束停止命令