使用Node-RED / JS的ASCII值数组,我需要将所有内容转换为一个长字符串。为了处理数组中不同数量的值,我发现了String.fromCharCode.apply(null,msg.payload);很棒,并且我的有效负载已按预期进行了转换-或至少部分进行了转换。
有效负载由许多布尔值和整数组成,最后是一个字符串。它输出的字符串很好,但不会转换整数和布尔值(暂时为3s和0s)。该数组包含121个ASCII值,但是字符串输出只有〜77个字符长。 换句话说,
[0,45,83,51,0,0,0,0,1,0,0,0,14,0,202,0,19,162,0,0,0,0,0,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,49,53,55,52,48,55,57,54,57,50,56,48,54,48,48,48,48,48,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,80,70,86,32,1,0,0,99,103,114,111,117,112,47,99,32,0,0,0,0,0,0,0,0,0,0,0,0,71,80,82,77,67,44,49,50,50,49,51,50,46,48,48,44,65,44,52,52,52,52,46,50,48,56,48,53,44,78,44,48,48,52,52,52,46,50,55,51,50,51,44,69,44,48,46,48,49,51,44,44,49,56,49,49,49,57,44,44,44,68,42,55,55,13,0,13,0,48,48,48,42,54,68,13,0,50,44,0,0]
转换为
-S3yÆ1574241874748,092421.00,A,1324.56789,N,12345.56789,E,0.024,,201119,,,D*73
它可能会像
0,0,0,0,3,3,3,3,3,3,3,3,1574241874748,092421.00,A,1324.56789,N,12345.56789,E,0.024,,201119,,,D*73
注意:-S3yÆ
并不是一开始的输出,因为其中有一些特殊字符(显示为Æ
,但我不认为它确实是,而且有所不同,剪贴板无法处理)。我怀疑这是需要照顾的罪魁祸首。输入中有很多空值,我怀疑它们会导致fromCharCode
问题。
答案 0 :(得分:2)
您要尝试的是解析二进制打包的数据结构。尝试一次只将整个内容转换为字符串char是不正确的方法。
该字符串看起来是NMEA GPS字符串,因此我建议您以npm gps-module之类的名称作为自定义Node-RED节点的起点,或者至少暗示要包含的内容在功能节点中。