ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### 获取串口 ` window.getComList(e=>{console.log(e)}) ` ![](https://img.kancloud.cn/f0/2f/f02fdfb8d03e428abfae254c1dd55cec_277x107.png) * 成功`code`为0 ### 监听串口数据【对应调用参数位】 raw\_data 非必填 写入的数据#16进制字符串 写入模式下必填 com 必填 串口号 例如COM2 baudrate 必填 波特率例如9600 timeout 非必填 超时时间默认0.1 bytesize 必填 字节大小 例如8 stopbites 必填 停止位 例如1 ReadWriteMode 必填 读写模式【只读模式 r、读写模式(单次写入)rw、读写模式(持续写入根据超时时间)rw+】 ResultMode 必填 结果获取模式【单次获取o、持续获取o+】 EvnetName 非必填 事件名称 未定义时间自动使用\[EventSerialWeight\]事件名 与 匿名回调函数共存 ResultType 必填 结果类型【ASCII(默认) Hex】 **readBytesSize 必填 读取字节大小 建议-1 可自动按行分割读取\n结束符 如果指定了字节大小需要自行处理数据分割问题** callback 非必填 回调函数 * 如果为空的参数使用null占位即可 * 注意事项 如果已打开comx口 在此执行的时候会复用打开的句柄 如果是多个命令会有多个返回可能要自己判断返回数据是否是自己需要的 * 如果是复用串口时 注意自定义回调事件名不要重复 不然读取可能存在异常数据 ### 注意对获取结果为空字符串导致NaN计算问题的处理 * 监听重量仅能调用一次 要么使用单次获取重量 要么全局监听一个重量 不得一起使用 建议使用**全局一次监听重量 通过挂载共享重量数据 例如vuex** * 对于去皮置零等非监听重量命令执行时需要保证一个命令一个事件名 ### 某电子秤调用示例如下 * 获取重量命令 `\x02\x41\x4e\x03` * 置零命令 `\x02\x41\x5a\x03` * 去皮命令 `\x02\x41\x54\x03` ``` window.onSerialWeight( '\x02\x41\x4e\x03', //表示读取重量命令 'COM2', 9600, 0.1, 8, 1, 'rw+', 'o+', 'EventSerialWeight', 'ASCII', 26, e=>{ //对某电子秤返回结果解析 if(e.code === 0){ //截取4-10的字符串 let mystr = e.data.slice(3,10) //对字符串左右颠倒 mystr = mystr.split('').reverse().join(''); //转为数字类型浮点数 weight = Number(mystr) console.log(weight ,'KG') } } ) ``` ### 事件方式 ``` window.onSerialWeight( '\x02\x41\x4e\x03', //表示读取重量命令 'COM2', 9600, 0.1, 8, 1, 'rw+', 'o+', 'EventSerialWeight', 'ASCII', 26, null ) addEvent('EventSerialWeight',function(e){ if(e.code === 0){ //截取4-10的字符串 let mystr = e.data.slice(3,10) //对字符串左右颠倒 mystr = mystr.split('').reverse().join(''); //转为数字类型浮点数 weight = Number(mystr) console.log(weight ,'KG') } }) ``` ![](https://img.kancloud.cn/ba/61/ba6197d18dc428530ca291b68ed47df9_422x340.png) ![](https://img.kancloud.cn/f3/b8/f3b8f8fddfcc19d8eb0d89cfbb78e2a8_223x301.png) ### 其他示例(“健坤”电子秤示例) * 无命令 持续获取重量 ``` window.onSerialWeight( null, 'COM3', 9600, 5, 8, 1, 'r', 'o+', 'EventSerialWeight', 'ASCII', 17, e=>{ console.log(e) } ) ``` * 去皮 ``` window.onSerialWeight( "\x02\x54\x03", 'COM3', 9600, 5, 8, 1, 'rw', 'o', 'EventSerialWeight_qupi', 'ASCII', 17, null ) ``` * 置零 ``` window.onSerialWeight( "\x02\x5A\x03", 'COM3', 9600, 5, 8, 1, 'rw', 'o', 'EventSerialWeight_zhiling', 'ASCII', 17, null ) ``` ## 对以上电子秤重量结果处理方式演示 ``` window.onSerialWeight( null, 'COM3', 9600, 5, 8, 1, 'r', 'o+', 'EventSerialWeight', 'ASCII', -1, e=>{ //对于NaN问题 请注意上面的问题 避免因为监听等导致NaN发生 监听重量保持一次 对电子秤操作事件不要重复即可 weight = parseFloat(e.data) if(!isNaN(weight)){ console.log(weight) } } ) ```