Javascript,串口不能输出数字,只能输出ascii

标签 javascript serial-port node-serialport

所以我希望我的程序将 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/

相关文章:

javascript - 缩放 div 的按钮(包含图像和 Canvas )

c# - 慢 WPF 文本框

c - Linux 唤醒阻塞串口读取

node.js - nodejs-serialport => 关闭后重新建立与端口的连接

javascript - 与 Kenwood TH-D72A 的串行端口通信似乎几乎是不可能的。为什么我无法使用 javascript 读取数据?

javascript - 状态更改时 React 组件不会重新渲染

javascript - 如何在 something append 上调用函数

javascript隐藏div

delphi - 一次性定时器

node.js - 无法在nodejs中关闭串口