Node.js Node js串行端口获取响应“错误”或“确定”sms调制解调器
我使用的是Wavecom 8端口SMS调制解调器 我的问题是,我想检查在写入AT命令时是否存在错误(例如没有负载平衡或没有插入sim卡),然后它将检查其他可用端口以重新发送SMS 我只想捕获错误或OK输出 我使用了这个函数Node.js Node js串行端口获取响应“错误”或“确定”sms调制解调器,node.js,promise,sms,modem,node-serialport,Node.js,Promise,Sms,Modem,Node Serialport,我使用的是Wavecom 8端口SMS调制解调器 我的问题是,我想检查在写入AT命令时是否存在错误(例如没有负载平衡或没有插入sim卡),然后它将检查其他可用端口以重新发送SMS 我只想捕获错误或OK输出 我使用了这个函数 function sendSync(port, src) { return new Promise((resolve, reject) => { port.write(src,(err)=>{ if(err){
function sendSync(port, src) {
return new Promise((resolve, reject) => {
port.write(src,(err)=>{
if(err){
reject(err)
}
port.drain()
});
port.once('data', (data) => {
console.log('###############################',data.toString())
resolve(data.toString());
});
port.once('error', (err) => {
console.log('************************')
reject(err);
});
});
}
function writeSync(serial,cmd){
return new Promise(function(resolve,reject){
serial.write(cmd)
serial.drain()
serial.once('data',(data)=>{
var arr = data.toString()
var str = arr.split(/\r?\n/);
//console.log(str[1])
resolve(str[1])
})
})
}
我现在使用的是serialport 5.0 我通过创建这个函数来解决我的问题
function sendSync(port, src) {
return new Promise((resolve, reject) => {
port.write(src,(err)=>{
if(err){
reject(err)
}
port.drain()
});
port.once('data', (data) => {
console.log('###############################',data.toString())
resolve(data.toString());
});
port.once('error', (err) => {
console.log('************************')
reject(err);
});
});
}
function writeSync(serial,cmd){
return new Promise(function(resolve,reject){
serial.write(cmd)
serial.drain()
serial.once('data',(data)=>{
var arr = data.toString()
var str = arr.split(/\r?\n/);
//console.log(str[1])
resolve(str[1])
})
})
}
您的函数看起来差不多正确。可能问题在于调用
sendSync()
的方式?该函数还输出AT命令以及确认OK或ERROR我只想要OK或ERROR这不是调用者的解释问题吗?如果返回的承诺确定了它的成功之路,那么这就是“OK”。如果它停留在错误路径上,那就是“错误”。