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

在MacOS上的PHP脚本中使用AT命令,php,macos,sms-gateway,Php,Macos,Sms Gateway,我正在编写一个PHP脚本,可以使用华为GSM调制解调器在我的mac电脑上发送和接收短信。 首先,我尝试直接在终端中使用AT命令,我成功了。以下是我用来执行此操作的命令行: 正在验证哪些端口是我的华为调制解调器: ls-al/dev/tty* 在命令会话中打开命令: screen/dev/tty.HUAWEIMobile-Modem 115200 然后我可以使用AT命令,它工作得很好。 但是,由于我是终端的新手,我不明白为什么我必须使用screen命令来打开AT命令会话(我在网页上找到它,它可以工

我正在编写一个PHP脚本,可以使用华为GSM调制解调器在我的mac电脑上发送和接收短信。 首先,我尝试直接在终端中使用AT命令,我成功了。以下是我用来执行此操作的命令行:

正在验证哪些端口是我的华为调制解调器: ls-al/dev/tty*

在命令会话中打开命令: screen/dev/tty.HUAWEIMobile-Modem 115200

然后我可以使用AT命令,它工作得很好。 但是,由于我是终端的新手,我不明白为什么我必须使用screen命令来打开AT命令会话(我在网页上找到它,它可以工作,但为什么?)。 如果我想在不使用屏幕命令的情况下在命令会话中打开它呢

然后我切换到我的PHP脚本。我尝试使用我在本页()上找到的一个非常好的工具,它在Linux上运行良好。所以它应该也适用于MacOS,不是吗

这个脚本首先请求设备,所以我根据我在终端中打开AT命令会话时使用的命令给出: $serial->deviceSet(“/dev/tty.huaweimobilemodem”)

启动脚本时,它返回以下错误: 警告:第72行的/Users/iMac1/Documents/MAMP/SMSing/solution 2/sms/serial.php中指定的串行端口无效

所以我检查第72行,其中是使用$device变量的第一个命令。这里的错误是合乎逻辑的。命令: $this->_exec(“stty-F”。$device)

我发现它很奇怪,因为-F参数。 因此,我尝试将其更改为: $this->_exec(“stty-f”。$device)

然后,当我启动脚本时,它什么也不做,甚至永远不会结束

我被困在这里了。 有人能帮我吗

先谢谢你
Louis

使用打开的phpserial类,并使用下面的代码

但是我强烈建议使用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();

?>

这是一个python脚本,可以毫无问题地发送SMS。为此,您需要安装Gammu并使用控制台配置要使用的USB加密狗。纯粹用python解决它并不是最好的方法。请参阅下面的代码,它是在控制台上执行此操作(pythonsms.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'

如何/在何处运行此php脚本?从命令行还是通过Web服务器?如果是通过Web服务器,则Web服务器不太可能具有直接访问/dev设备的权限。。但问题很长:)我从本地的Apache服务器上运行php脚本,由MAMP提供。谢谢你的帮助,但是你所说的php_serial.class.php不能在Mac上运行,因为它是为Linux和Windows明确设计的。所以我尝试添加命令使其在Mac上工作,看起来问题来自stty Terminal命令。如果我在终端中运行stty,它会按预期工作,但如果我在终端中运行stty-f,它会像打开一个端口一样等待其他操作,直到我用Ctrl-Z关闭它。考虑到Mac终端无法识别-f stty选项,我认为问题来自stty。让我按照您的建议来看看Python……好的,我已经检查了php_serial.class.php,发现了有问题的php命令:$this->\u dHandle=fopen($this->\u device,$mode);它使脚本永远不会结束。我试图用文件内容替换fopen。然后脚本结束,但文件不再打开。有什么想法吗?提前谢谢你我使用了上面的代码,100%为我工作我在委内瑞拉有一家短信和语音应用公司,我使用Python/Django/Sqlite/Gammu和其他技术。但我想尝试使用PHP,但它不是最好的解决方案。使用linux with Fusion安装虚拟机,安装usb模式开关,然后从控制台尝试gammu。我能做的任何事都非常容易。请让我知道。你好,eddwinpaz。我的问题是,我从未使用过Linux、Python和Gammu。我要看看它是怎么工作的。感谢您的帮助使用PHP手机有什么好处?乐趣还是工作???如果它是为了好玩,那么在Python和Gammu中尝试它会比在PHP/Mac中尝试要轻松得多。PHP不是为低级别的OSThank而设计的,非常感谢WinPaz。在back2arie.wordpress.com上有一个很好的教程之后,我在Mac上安装了gammu。但有点不对劲,因为当我尝试导入gammu时,我得到:ImportError:没有名为“gamma”的模块知道这一点吗?tuto的所有者告诉我gammu命令可以在任何地方运行。但当我尝试它时,我得到一个“未找到命令”。显然,gammu没有正确安装。嗨,eddwinpaz。安装gammu时遇到困难了吗?今天早上,我在1.33版上第二次尝试了它,我在配置和制作方面收到了一些警告,最后一切看起来都正常了。但当我尝试运行gammu时,它仍然返回“commandnotfound”。当然,如果我尝试在Python中导入gammu,我会得到“没有名为‘gammu’的模块”。请帮忙,一点也不。。您需要创建一个配置文件。转到terminal并键入(sudo gammu config),然后获取所需的USB并保存它,当调用配置时,它将查找您设置的默认配置。这将使画面更加清晰。这也是你的意思,一个糟糕的配置可能会使gammu根本无法工作?我不这么认为。当我尝试“sudogammuconfig”时,它会得到相同的“gammu:commandnotfound”。问题显然发生在安装时,而不是(或尚未)配置时