[英]Using AT commands in PHP script on MacOS
我正在研究一个PHP脚本,该脚本可以使用HUAWEI GSM调制解调器在Mac上发送和接收SMS。 首先,我尝试直接在终端中使用AT命令,然后成功了。 这是我用来做的命令行:
验证我的华为调制解调器在哪个端口上:ls -al /dev/tty.*
打开AT命令会话:屏幕/dev/tty.HUAWEIMobile-Modem 115200
然后,我可以使用AT命令,它可以正常工作。 但是由于我是Terminal的新手,所以我不明白为什么我必须使用屏幕命令来打开AT命令会话(我在网页上找到了它并且可以使用,但是为什么?)。 如果我不想使用屏幕命令来打开此AT命令会话,该怎么办?
然后,我切换到我的PHP脚本。 我尝试使用在此页面上找到的一个非常不错的网站( http://gonzalo123.com/2011/03/21/howto-sendread-smss-using-a-gsm-modem-at-commands-and-php/ ),并且可以在Linux上正常工作。 所以它也可以在MacOS上工作,不是吗?
该脚本首先询问设备,所以我根据在终端中打开AT命令会话所使用的命令,给了它:$ serial-> deviceSet(“ / dev / tty.HUAWEIMobile-Modem”);
当我启动脚本时,它将返回此错误:警告:在第72行的/ Users / iMac1 / Documents / MAMP / SMSing / solution 2 / sms / serial.php中,指定的串行端口无效
因此,我检查第72行使用$ device变量的第一个命令在哪里。 错误在这里是合乎逻辑的。 命令:$ this-> _ exec(“ stty -F”。$ device)
由于-F参数,我觉得很奇怪。 所以我尝试将其更改为:$ this-> _ exec(“ stty -f”。$ device)
然后,当我启动脚本时,它什么也不做,甚至永无止境。
我被困在这里。 有人可以帮我吗?
预先感谢路易斯
使用以下代码,使用http://www.phpclasses.org/browse/file/17926.html上的phpserial类。
但是我强烈建议为此使用Python和Gammu而不是PHP。 PHP不是为OS操作而设计的。 Python确实如此。
<?php
error_reporting(0);
$time = time();
$mensaje = "Hola este es un mensaje desde Mac ".$time;
$pais = "+58";
$numero = "00__myphone__00";
include "../php_serial.class.php";
$serial = new phpSerial();
$serial->deviceSet("/dev/tty.HUAWEIMobile-Modem");
$serial->deviceOpen('r+');
$serial->confBaudRate(9600);
$serial->sendMessage("AT+CMGF=1\r",1);
$serial->readPort();
$serial->sendMessage('AT+CMGS="'.$pais.$numero.'"'."\r",1);
echo $serial->readPort();
$serial->sendMessage($mensaje."\r",1);
echo $serial->readPort();
$serial->sendMessage("\x1a",2);
echo $serial->readPort();
// If you want to change the configuration, the device must be closed
$serial->deviceClose();
?>
这是python发送脚本而不会出现问题的脚本。 为此,您需要安装Gammu并使用控制台配置要使用的USB Dongle。 纯粹用python解决不是最佳方法。 请参阅下面的代码是在控制台上执行此示例的有效示例(python sms.py)。
短信
#!/usr/bin/env python
import gammu
import sys
sm = gammu.StateMachine()
sm.ReadConfig(2) #is gammu config
sm.Init()
to = '+5844444'
body = 'Your message'
message = {
'Text': body,
'SMSC': {'Location': 1},
'Number': to,
}
try:
# Send SMS if all is OK
sm.SendSMS(message)
print 'Success, SMS was Sent'
except gammu.ERR_UNKNOWN:
# Show error if message not sent
print 'Error, SMS not Sent'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.