テキスト ファイルからデータを読み取り、各行をデバイスに送信し、その行がデバイスのファームウェアに書き込まれたことを確認してから次の行に進むブートローダーを作成しています。
そのため、現在 async モジュールを使用しています。これにより、cb() コールバックを呼び出して先に進む前にコマンドが実行されるのを待つことができますが、SerialPort.onData( によってデータが受信され、検証された後にのみ先に進む必要があります。 ) 折り返し電話。
問題は、コールバックによって返されたデータを非同期ループに含める方法がわからないことです。コールバックはポートごとに 1 回だけ開始する必要があるため、非同期の eachSeries ループに単純に含めることはできません。
次の行に進む前に、送信されたデータに対して検証できるように、onData コールバックから受信したデータをフィードバックする方法に関する提案はありますか??
function cl(dat){return console.log(dat);}
port.open(function(err){
fs.readFile('CS-BT_J.hex', function(err, f){
var hex = f.toString().split('\n');
var async = require("async");
async.eachSeries(hex, function(item,cb){
outStr = String.fromCharCode(1) + item + String.fromCharCode(13);
port.write(outStr, function(err,res) {});
cb();
},function(err){});
});
port.on("data", function (data) {
cl(data);
//if(data == addr) cb();
});
});