免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6901 | 回复: 2
打印 上一主题 下一主题

AT指令控制GSM猫发送短信,使用超级终端可以,但php不可以 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-09-05 11:57 |只看该作者 |倒序浏览
大家好, 我有一个GSM猫, 我使用超级终端来控制它,AT指令如下:AT+CMGS="131673433xx"<CR>hello,world!<CTRL+Z><CR>

其中的<CR>表示回车,短信正常发出,这是使用txt模式,我的猫是wavecom的


=========================

at+cmgs="131673433xx"

> hello

+CMGS: 7

OK

=========================

但是我通过php却无法发出短信了
我的php代码是参照以前的帖子中有一个用pdu方式发送短信的例子,我简略了一下。(参见:http://bbs.chinaunix.net/redirec ... amp;goto=nextoldset
<?php
set_time_limit(0);

exec('mode COM1: baud=115200 data=8 stop=1 parity=n xon=on');
$fd = dio_open('COM1:', O_RDWR);
$ff = dio_stat($fd)
if(!$fd) { die("failed open com1"); }
dio_write($fd,"AT+CMGS=\"+8613167343373\"".chr(13)."hello,world".chr(26).chr(13));
dio_close($fd);
?>

毫无反应,短信无法发出,我也不知道如何调试,dio_write返回的是一个长度,如何才能debug呢?请大家帮忙啊

论坛徽章:
0
2 [报告]
发表于 2006-09-05 17:01 |只看该作者
问题已解决
在代码中加入sleep(2);

<?php
set_time_limit(0);

exec('mode COM1: baud=115200 data=8 stop=1 parity=n xon=on');
$fd = dio_open('COM1:', O_RDWR);
$ff = dio_stat($fd)
if(!$fd) { die("failed open com1"); }
dio_write($fd,"AT+CMGS=\"+8613167343373\"".chr(13)."hello,world".chr(26).chr(13));
sleep(2);
dio_close($fd);
?>

这样子就发出去了,不过没有搞清楚原理,那位高手知道,请给出点解释阿

论坛徽章:
0
3 [报告]
发表于 2006-09-26 16:25 |只看该作者
不知道为什么,我的程序怎样也读不手机的返回信息:
手机 西门子3508i,连接COM1
程序


  1. <?php

  2. exec('mode COM1: baud=19200 data=8 stop=1 parity=n xon=off');

  3. $fd = dio_open('COM1:', O_RDWR);

  4. if(!$fd)
  5. {
  6.         die("Error when open COM1");
  7. }else echo "HQB232 SERVER is listenning on COM1\n";

  8. $ff = dio_stat($fd);
  9. print_r($ff);

  10. $cmd = "AT".chr(13);
  11. echo $cmd;
  12.         
  13. $write = dio_write($fd,$cmd);
  14. echo $write."\n";
  15. sleep(3);      
  16.         
  17. $data = dio_read($fd);
  18. if ($data) {
  19. echo $data;
  20. }else {
  21.   echo "error";
  22. }

  23. dio_close($fd);

  24. ?>
复制代码



返回的结果如下:


  1. CODE:[C

  2. HQB232 SERVER is listenning on COM1
  3. Array
  4. (
  5.     [device] => 3
  6.     [inode] => 0
  7.     [mode] => 8192
  8.     [nlink] => 1
  9.     [uid] => 0
  10.     [gid] => 0
  11.     [device_type] => 3
  12.     [size] => 0
  13.     [atime] => 0
  14.     [mtime] => 0
  15.     [ctime] => 0
  16. )
  17. AT
  18. 3
  19. error
复制代码



这说明串口已经成功打开,也已经写进去了数据,但是为什么就读不出来呢?按理如果正常的话,dio_read()应该返回OK才对啊!请楼主上来看看。谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP