簡體   English   中英

在MacOS上的PHP腳本中使用AT命令

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM