NodeJS:通过串口连接的GSM设备发送短信

我需要通过串口COM1端口连接到PC的GSM设备发送短信。

我虽然能够收到短信,但当我试图发送短信 – 对方根本没有收到它。 当我尝试通过超级terminal连接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'); } 

我不知道我在做什么错,或为什么短信不出去?

你的脚本

 var SerialPort = require("serialport").SerialPort var serialPort = new SerialPort("/dev/ttyUSB0", { 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^SYSCFG=13,1,3FFFFFFF,2,4"); serialPort.write('\r'); serialPort.on('data', function(data) { console.log("Received data: " + data); }); gsm_message_sending(serialPort, "test2", "<you phone number>"); }); function gsm_message_sending(serial, message, phone_no) { serial.write("AT+CMGF=1"); serial.write('\r'); serial.write("AT+CMGS=\""); serial.write(phone_no); serial.write('"') serial.write('\r'); serial.write(message); serial.write(Buffer([0x1A])); serial.write('^z'); } 

用E3131调制解调器完美地工作。 正如你所看到的,我改变了一点脚本,以便它只发出一个短信并打印消息:

 Received data: AT^SYSCFG=13,1,3FFFFFFF,2,4 Received data: OK Received data: AT+CMGF=1 Received data: OK Received data: AT+CMGS=" Received data: 0671358943 Received data: " Received data: > Received data: test2 Received data: Received data: ^z Received data: +CMGS: 28 OK 

尝试:

 sudo nodejs yourfilejs.js 

在Ubuntu上,如果没有sudo会引发错误'权限被拒绝'