Javascript,serialport可以';t输出数字,仅ascii码

Javascript,serialport可以';t输出数字,仅ascii码,javascript,serial-port,node-serialport,Javascript,Serial Port,Node Serialport,所以我希望我的程序将一个int传递到serialport,但是javascript使所有的数字都浮动,这很糟糕。 如果我尝试的话,我会更喜欢 sp.write(255)//outputs 0x080000010000000000000000020000 sp.write(256)//outputs infinitely 我把它连接到一个巴士海盗那里,这样我就可以检查输出了 如果我将数字转换为十六进制字符串,那么serialport将发送与我的数字等效的字符,这也是不好的 var hex=(0

所以我希望我的程序将一个int传递到serialport,但是javascript使所有的数字都浮动,这很糟糕。 如果我尝试的话,我会更喜欢

sp.write(255)//outputs 0x080000010000000000000000020000
sp.write(256)//outputs infinitely 
我把它连接到一个巴士海盗那里,这样我就可以检查输出了

如果我将数字转换为十六进制字符串,那么serialport将发送与我的数字等效的字符,这也是不好的

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;
}
它可以完美地工作到127,然后是2个字节,第一个字节中有194或195

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

var buffer = new Buffer([ 8, 6, 7, 5, 3, 0, 9]);
它适用于0和255之间的任何值

感谢Traktor53指出它是一个缓冲对象 以及
为了确认如何构造缓冲区,文档说明它接受缓冲区或字节数组或字符串。发送“确定长度的int”时应该发生什么?你失去了我。但是缓冲区对象有处理整数的函数。基本上我有一个黑匣子(它是arduino,但其他人正在编程),我需要向这个黑匣子发送8字节的整数数据,每个数据都指向控制器的状态数据。在这一点上,尽管我愿意相信serialport实际上并不是设计用来发送实际数字的。
var buffer = new Buffer([ 8, 6, 7, 5, 3, 0, 9]);