串口屏收nodered发送的数据,求助?
本帖最后由 taida 于 2023-7-30 22:33 编辑找了一张串口屏,看论坛大佬的帖子,采用 串口屏+8266,进行操控和反馈,(用的tcpserver)nodered进行串口输入,输出,现在遇到一个问题,向这张屏发送串口命令,需要在hex文件尾上加三个FF,屏才能识别,nodered中payload 需要字符和三个FF加起来发给串口,屏幕才能生效,各位大佬,有办法解决吗? 想把文本转hex,然后相加,找了一堆资料,不知道怎么转,如果转了,payload能发出去也不清楚,确实没辙啦,各位帮帮忙 中间加个函数
msg.payload = msg.payload +"FFFFFF"
return msg; [
{
"id": "bc7f85cc82713bed",
"type": "tab",
"label": "流程 2",
"disabled": false,
"info": "",
"env": []
},
{
"id": "43b82491eb19fc5a",
"type": "inject",
"z": "bc7f85cc82713bed",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "1234",
"payloadType": "num",
"x": 470,
"y": 360,
"wires": [
[
"5dedf802bfc1d293"
]
]
},
{
"id": "8771cd2730dd7fbb",
"type": "debug",
"z": "bc7f85cc82713bed",
"name": "debug 5",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 840,
"y": 360,
"wires": []
},
{
"id": "5dedf802bfc1d293",
"type": "function",
"z": "bc7f85cc82713bed",
"name": "",
"func": "msg.payload = msg.payload +\"FFFFFF\" \nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 650,
"y": 360,
"wires": [
[
"8771cd2730dd7fbb"
]
]
}
] 谢谢waer大佬,我试试!谢谢 字符串相加,FFFFFF变成一个值了,不是那种停止符,不行呢Wear,也许我操作不对? 你这个应该是要把参数转换成16进制的HEX我没使用过 大概的代码应该是
var buffer = Buffer.from(msg.payload, 'hex')
把S:b0.BCO=10000 转换成HEX字符串后 再增加FFFFFF 然后发送出去 假设文本已经保存在msg.payload里面,要在末尾添加3个0xFF,下面的代码应该可以
msg.payload = msg.payload + (String.fromCharCode(0xff)).repeat(3); var buffer = Buffer.from(msg.payload, 'hex'),这行代码只转第payload中的第一个字符,还有其他办法吗,我把FFFFFF转成hex了,也拼接了, 终于搞定了,谢谢Waer和cjnt007,用Buffer 做的,先将字符转成Buffer,然后将文本(FFFFFF),也转成Buffer,连接可以实现,谢谢各位!
页:
[1]
2