http://nodejs.orgからダウンロードした nodejs "v0.10.28" と npm "1.4.9" を使用しています。
npmでシリアルポートをインストールしました
npm install serialport
私のプログラムは Raspberry-pi で実行されており、シリアルポートを介して更新された値をすばやく送信し続ける必要があるため、このテスト プログラムを作成しました。
var serialPort = require("serialport");
var SerialPort = require("serialport").SerialPort;
var sp = new SerialPort("/dev/ttyAMA0", {
baudrate: 9600
}, false);
console.log("Starting up serial host...");
var message = "Num: ";
var counter = 1000000;
function write()
{
message= counter.toString();
counter+=1;
sp.open(function(err)
{
console.log("Writing serial data: " + message);
sp.write(message, function(err, res)
{
if (err)
{
console.log(err);
}
sp.close();
});
});
}
setTimeout(write, 10); //wait 10 ms for everything to initialize correctly
setInterval(write, 50); //write data every 50 ms
プログラムは正確に 1012 回の書き込みで正常に実行され、その後クラッシュします。
最後に向かってプログラム出力:
...
Writing serial data: 1001011
Writing serial data: 1001012
Writing serial data: 1001013
[Error: Serialport not open.]
events.js:72
throw er; // Unhandled 'error' event
^
Error: Serialport not open.
at SerialPortFactory.SerialPort.close (/home/pi/node_modules/serialport/serialport.js:476:17)
at /home/pi/serialTest.js:25:7
at SerialPortFactory.SerialPort.write (/home/pi/node_modules/serialport/serialport.js:290:9)
at /home/pi/serialTest.js:19:13
at /home/pi/node_modules/serialport/serialport.js:224:11
なぜクラッシュするのですか?メモリのどこかにバッファオーバーフローがありますか? そして、なぜ正確に 1012 回書き込みますか? 1024年に非常に近いのは偶然ですか?