串口通讯说明 ============== `点击下载STM32与硬件屏通讯例程 [hmi_stm32_demo.zip] `_ 单片机发送 ~~~~~~~~~~~~~~~~~~~~~ **单片机发送格式** : 字符串指令 + ";\\r\\n" - "btn.x=0;\\r\\n", 变量赋值 + "page();\\r\\n", 页面切换 - "get(b0.x);\\r\\n" 获取变量的文本值 + 注意:不支持 if else for while 等代码形式,仅支持赋值语句或发指令形式 **串口屏返回格式** : 字符串指令 + ";\\r\\n" - 返回分为:执行异常、指令返回 + 执行异常: * err:1; (执行出错) - war:128; (执行有警告) + 说明: 冒号后的数值代表编号,编号意义参考 :ref:`script_res` - 指令返回: * 如发送get指令,返回:-getn:100; - 指令返回请参考 :ref:`get指令` .. _串口屏发送: 串口屏发送 ~~~~~~~~~~~~~~~~~~~~~ 串口屏发送,即在事件脚本中调用 ``prints`` ``printh`` 指令,用户可以发送自定义字符串、十六进制格式数据给单片机, 单片机再自行解析并处理 **prints指令举例** .. image:: image/prints字符串指令.png :align: center :alt: prints字符串指令 | 单片机接收到字符串指令后,对比字符串,成功则执行相应事件。 **printh指令举例** .. image:: image/printh字符串指令.png :align: center :alt: printh字符串指令 | 这里发送的十六进制数据格式:AA(帧头) 02(功能字) 00(数据长度) FE FE(帧尾)。请下载STM32与硬件屏通讯例程查看STM32解析代码 | .. _script_res: 脚本执行异常 ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 执行过程出错 --------------------- 执行过程,遇到某一行出错了,串口屏返回:err:1,然后退出脚本。(1表示编号,含义请参考下方表格) .. csv-table:: 脚本执行出错编号含义 :header: "编号", "含义" :widths: 10, 50 :align: center "1", "未识别变量名称或指令" "2", "赋值失败:变量只读、类型不一致" "3", "指令参数个数错误" "4", "指令参数类型错误" "5", "变量名已定义" "6", "变量名过长" "7", "未识别符号" "8", "缺少符号" "9", "括号内缺少表达式" "10", "运算出错:变量类型错误" "11", "运算出错:除数为零、常量数值大于2147483648" "12", "运算出错:字符串运算" "13", "系统错误:内存申请出错" 执行过程警告 --------------------- 执行过程,遇到某一行出现警告,串口屏返回:war:128,然后往下执行。(128表示编号,含义请参考下方表格) .. csv-table:: 脚本执行有警告编号含义 :header: "编号", "含义" :widths: 10, 50 :align: center "128", "赋值超范围,已被限制为最大值或最小值" "129", "page指令页面ID无效" "130", "指令参数中控件ID无效" "131", "指令参数超范围" "132", "play播放失败,请检查资源路径或ID" "133", "covx失败,源变量和目标变量类型一致" "134", "click指令不能自己激活自己" "135", "click指令造成死循环,已退出"