2014-03-03 26 views
2

我正在使用一個可以在我的Mac上使用HUAWEI GSM調制解調器發送和接收SMS的PHP腳本。 首先,我試圖直接在終端中使用AT命令,並且我成功了。下面是我用做它的命令行:在MacOS上使用PHP腳本中的AT命令

驗證哪個端口上是我的華爲的調制解調器: LS -al /dev/tty.*

打開AT命令會話: 屏幕的/ dev/tty的.HUAWEIMobile調制解調器115200

然後,我可以使用AT命令,它工作正常。 但是,因爲我是一個終端的新手,我不明白爲什麼我必須使用屏幕命令打開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 「);

當我啓動腳本,它返回此錯誤: 警告:指定串口無效在/用戶/ iMac1 /文檔/ MAMP/SMSing /解決方案上線2 /短信/ serial.php 72

因此,我檢查第72行,使用$ device變量的第一個命令在哪裏。這裏的錯誤是合理的。命令: $ this - > _ exec(「stty -F」。$ device)

我發現它很奇怪,因爲-F參數。 所以我試圖改變它: $ this - > _ exec(「stty -f」。$ device)

然後當我啓動我的腳本時,它什麼也不做,甚至永遠不會結束。

我在這裏卡住了。 有人可以幫我嗎?

使用下面的代碼預先感謝您 路易斯

+0

如何/你在哪裏運行此PHP腳本?從命令行或通過網絡服務器?如果是通過網絡服務器,網絡服務器不可能直接訪問/ dev設備。 –

+0

有趣..相當長的問題雖然:) – Hardy

+0

我運行我的php腳本從我的本地Apache服務器提供的MAMP。 – user3375680

回答

0

使用phpserial類是http://www.phpclasses.org/browse/file/17926.html

但我強烈建議使用Python和Gammu來代替PHP。 PHP不適用於操作系統。 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(); 

?> 
+0

感謝您的幫助,但是您所談論的php_serial.class.php無法在Mac上運行,因爲它明確爲Linux和Windows設計。所以我試圖添加命令來使它在Mac上正常工作,看起來問題來自stty終端命令。 如果我在終端中運行stty,它會按預期工作,但是如果我在終端中運行stty -f,它會像打開一個端口一樣等待其他內容,直到用Ctrl-Z關閉它爲止。考慮到Mac Terminal無法識別-F stty選項,我認爲問題來自stty。讓我試着按照你的建議看看Python ... – user3375680

+0

好的,我檢查了php_serial.class.php,發現有問題的PHP命令: $ this - > _ dHandle = fopen($ this - > _ device,$ mode) ; 它使腳本永遠不會達到其結束。 我試圖用file_get_contents替換fopen。然後腳本到達盡頭,但文件不再打開。 有什麼想法? 預先感謝您 – user3375680

+0

我使用了上面的代碼併爲我工作了100%我在委內瑞拉有一個SMS&語音應用程序公司,我使用Python/Django/Sqlite/Gammu和其他技術。但我想嘗試使用PHP,它不是最好的解決方案。使用Fusion搭配linux虛擬機並安裝usb-modeswitch並從控制檯嘗試gammu。其超級簡單的任何我可以幫助。請告訴我。 – eddwinpaz

0

這是一個用於發送短信沒有問題的腳本。爲此,您需要安裝Gammu並使用控制檯配置您要使用的USB Dongle。純粹用python解決它並不是最好的方法。看下面的代碼是一個工作示例在控制檯上執行這個(python sms.py)。

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' 
+0

非常感謝eddwinpaz。我在back2arie.wordpress.com上的一個很好的教程後,在我的Mac上安裝了gammu。但有什麼不對,因爲當我嘗試導入gammu時,我得到:ImportError:沒有名爲'gamma'的模塊 對此有何想法? – user3375680

+0

tuto的主人告訴我gammu命令應該從任何地方運行。但是當我嘗試它時,我得到一個「找不到的命令」。顯然,gammu沒有正確安裝。 – user3375680

+0

嗨eddwinpaz。安裝gammu時遇到困難嗎?我今天早上第二次嘗試了1.33版本,在配置和製作方面我幾乎沒有任何警告,最後一切都看起來不錯。但是當我嘗試運行gammu時,它仍然返回「未找到命令」。當然,如果我嘗試在Python中導入gammu,我會得到「No module named'gammu'」。請幫忙。 – user3375680