Node.js中的缓冲区问题
Buffer issue in Node.js
在Node.js中使用缓冲区时,我有一个小问题
我已经像这样定义了我的常量缓冲区。
var commands = {
BufferOne : new Buffer([0XCA, 0X11, 0X00, 0X00, 0X60, 0X01,
0X00, 0X01, 0X08, 0X07, 0X6D, 0X00, 0X00, 0X00,
0X00, 0X00, 0X4F, 0X41, 0X30, 0X30, 0X00])
}
现在以后当我在程序中收到任何特定的事件时,我想要从中更新14,15。
比如说在其中一个函数中我将创建一个局部变量
var bufferCopy = commands.BufferOne;
bufferCopy[14] = "0X02";
bufferCopy[15] = "0X00";
然后我想使用bufferCopy发送到串行端口,但我的功能不起作用。
和上面一样如果我这样做
var bufferCopy = new Buffer([0XCA, 0X11, 0X00, 0X00, 0X60, 0X01, 0X00,
0X01, 0X08, 0X07, 0X6D, 0X00, 0X00, 0X00, 0X00, 0X00, 0X4F, 0X41,
0X30, 0X30, 0X00]);
bufferCopy[14] = "0X02";
bufferCopy[15] = "0X00";
那么它工作得很好。我可以在串行端口上得到结果。
所以我不明白为什么我不能从上面声明的常量中创建任何局部变量。
我想使用常量的原因是,因为我想把所有的常量移动到一些服务器,这样我就可以从服务器发送这些命令,而不是保持在节点程序本身。
当你分配一个Buffer (var bufferCopy = commands.BufferOne;
),它创建一个引用(就像JavaScript中的所有对象分配)到原始缓冲区,所以你实际上是修改commands.BufferOne
而不是commands.BufferOne
的副本。
如果你想要一个副本,你必须显式地创建一个副本,如:
var bufferCopy = new Buffer(commands.BufferOne);
bufferCopy[14] = "0X02";
bufferCopy[15] = "0X00";
则只修改bufferCopy
,不修改commands.BufferOne
。
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 将PHP变量传递给jQuery时遇到问题
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- 参数变量出现ngTable指令问题
- 剑道网格jQuery动画()问题
- 我的jQuery插件参数没有正确启动,遇到了问题
- Phonegap-(安卓/iphone)多个图像的图像库出现问题
- TableExport jquery插件:文件名和扩展名问题
- JavaScript Pub/Sub属性访问问题
- JavaScript异步问题
- 如何解决Yii中的页面刷新问题
- Safari(Mac OS)上的jQuery平滑滚动问题
- jqGrid树网格问题
- 使用正则表达式评估电子邮件地址时出现性能问题
- 如何消除代码中的未定义和其他问题
- JavaScript代码问题:我正在将对象转换为数组
- 在 NodeJS 中复制缓冲区时出现问题
- nodejs 请求 - toString 失败 - 大文件的缓冲区大小问题 (maxBufferSize)
- 当尝试加载缓冲区时,WebAudio API出现TypeError问题
- Node.js中的缓冲区问题