3
我需要通过串口COM1端口连接PC的GSM设备发送短信。NodeJS:通过串口连接的GSM设备发送短信
我虽然能够接收短信,但当我试图发送短信时,另一方根本没有收到短信。当我尝试通过超级终端连接GSM设备并发送命令发送短信时,它工作正常。以下是我的代码:
var SerialPort = require("serialport").SerialPort
var serialPort = new SerialPort("COM1", {
baudrate: 9600, dataBits: 8, parity: 'none', stopBits: 1, flowControl: false, xon : false, rtscts:false, xoff:false, xany:false, buffersize:0
});
serialPort.on("open", function() {
console.log('Serial communication open');
serialPort.write("AT+CMGF=1");
serialPort.write('\r');
delay(10);
serialPort.write("AT+CNMI=2,2,0,0,0");
serialPort.write('\r');
delay(10);
serialPort.on('data', function(data) {
gsm_message_sending(serialPort, "S", "1111111111"); //valid number only
});
});
function gsm_message_sending(serial,message,phone_no)
{
serial.write("AT+CMGF=1");
delay(100); // a simple for loop
serial.write("AT+CNMI=2,2,0,0,0");
serial.write('\r');
delay(200);
serial.write("AT+CMGS=\"+91");
serial.write(phone_no);
serial.write('"')
serial.write('\r');
serial.write(message);
//Now I have to send two time consecutively Ctrl+Z or char - 26
//I am assuming that maybe cause of below code SMS are not being send
// Method 1 :
// serial.write(String.fromCharCode(26))
//serial.write(String.fromCharCode(26))
//Method 2
//serial.write(Buffer([0x1A]));
//serial.write(Buffer([0x1A]));
//serial.write('^z');
//serial.write('^z');
}
我不知道我在做什么错或为什么短信不出去?
尝试删除你的阻塞延误,创建一个命令(行)发送队列,并建立从这个队列读取并发送的100ms超时(或任何你想要的长度)。我不知道你在使用这个同步延迟,但它可能会阻塞你的串口库。另外,安装虚拟串行端口实用程序,以便可以捕获应用程序与硬件之间的通信,以便更轻松地进行调试。 – Brad
我评论了所有的延迟,延迟是一个简单的for循环计数器的参数通过。不幸的是,它仍然没有解决。我觉得我无法发送CTRL + Z到串口 - 可能是这个问题 – Prakash
你的'Buffer([0x1a])'方法是正确的。再次,如果不能看到线路上发生了什么,就很难调试。使用虚拟串行端口驱动程序。 – Brad