1

所以我希望我的程序将一个 int 传递给串行端口,但是 javascript 使所有数字都浮动,这很糟糕。如果我尝试更多

sp.write(255)//outputs 0x080000010000000000000000020000
sp.write(256)//outputs infinitely 

我把它连接到一个公共汽车海盗上,这样我就可以检查输出了

如果我将数字转换为十六进制字符串,那么串口会发出与我的数字等效的字符,这也很糟糕。

var hex=(0xFF).toString(8);
sp.write(hex); //out=0x333737  which is 377=>0x0255 oh and not 8 bits...
hex=(0xFF).toString(16);
sp.write(hex); //out=0x6666  which is FF so at least that one makes some sense
hex=0b10101010; // error... binary does work when i run javascript in html though

但它确实输出 asci 字符,以便我在另一侧得到正确的十六进制

我试过了

function hex2a(hexx) {
var hex = hexx.toString();//force conversion
var str = '';
for (var i = 0; i < hex.length; i += 2)
    str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
return str;
}

但是对于那个 0xff=>0x2505

我也试过

hex = String.fromCharCode(hex)

它可以完美地工作到 127,之后它是 2 个字节,第一个字节是 194 或 195

我需要能够将 8 个字节的整数位数据发送到 arduino。

4

1 回答 1

1
var buffer = new Buffer([ 8, 6, 7, 5, 3, 0, 9]);

它适用于 0 到 255 之间的任何值。

感谢 Traktor53 指出它是一个缓冲区对象,并感谢https://docs.nodejitsu.com/articles/advanced/buffers/how-to-use-buffers 确认如何构建缓冲区

于 2016-04-01T05:22:03.850 回答