【问题标题】:Send SMS with Node.JS SerialPort使用 Node.JS SerialPort 发送短信
【发布时间】:2014-06-26 16:35:08
【问题描述】:

我正在尝试使用 enfora 调制解调器来实现标题所说的。然而,即使它在 minicom 中正常工作,它也不能在我的 node.js 应用程序中工作。 这是我正在使用的代码:

serialPort.write('AT+CMGF=1\r');
serialPort.write('AT+CMGS="02122323232"\r');
serialPort.write('mensaje'+String.fromCharCode(26)+'\r');

我还尝试将 String.fromCharCode(26) 替换为以下选项。这些都没有奏效。

'\^z'
'^z'
'^(z)'
'\^(z)'
'<ctrl+Z>'
'<ctrl-Z>'
'\#'
'#'
'\u001A'
Buffer([0x1A])

我真诚地认为这是代码的问题部分,因为我从前 2 行得到了 OK 消息,但第三行没有返回任何内容,因为它没有得到处理。

对此的任何帮助将不胜感激。

【问题讨论】:

    标签: javascript node.js serial-port sms


    【解决方案1】:
        setTimeout(function(){
            serialPort.write('AT+CMGF=1\r')
            setTimeout(function(){
                serialPort.write('AT+CMGS=\"02142323232\"\r')
                setTimeout(function(){
                    serialPort.write('test sms\r')
                    setTimeout(function(){
                        serialPort.write('\x1A')
                    }, 100);
                }, 100);
             }, 100);
         }, 100);
    

    【讨论】:

    • 啊,所以调制解调器跟不上?你可以把它清理干净一点。创建一个写入队列的写入函数,以及从该队列读取的间隔,写入调制解调器。您也许还可以启用硬件流控制来为您解决此问题。
    【解决方案2】:

    假设0x1a 是您需要发送的字节,您只需将其正确发送到缓冲区中即可。你不能简单地连接。如果这样做,您最终会得到字符串mensaje\u001a,而不是0x1a 的字符。

    试试这个:

    serialPort.write('mensaje');
    serialPort.write(new Buffer[0x1a]);
    serialPort.write('\r');
    

    【讨论】:

    • 谢谢。我将在稍后或明天尝试此操作,具体取决于我是否可以访问办公室的服务器
    • 哦,还有。缓冲区部分我不确定它是什么意思,我在另一个stackoverflow帖子中看到它,它应该与控件z相同。这就是为什么我尝试使用 String.fromCharCode(26)
    • 好的,我试过了,还是不行,实际上会报错。没有细节,它只是说错误。我想我必须找到另一种方法将控制 z 发送到串行端口。有什么建议吗?
    • @arrigonfr 你用的是什么串口API?如果它不接受缓冲区,我建议找一个新的。
    • 我做到了。我会在几分钟内发布代码作为答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多