[英]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.