所以我希望我的程序将 int 传递到串行端口,但是 javascript 使所有数字都 float ,这很糟糕。 如果我尝试的话甚至更多
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。
最佳答案
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 用于确认如何构建缓冲区
关于Javascript,串口不能输出数字,只能输出ascii,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36347553/