繁体   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