【发布时间】:2018-01-03 22:32:50
【问题描述】:
三天前,我开始制作一个简单的应用程序来发送短信。我已经对其进行了测试,它可以在 GSM CSCS 模式下工作,但是当我将其切换到 UCS2 时,它不会显示西里尔字母
<?php
error_reporting(E_ALL);
$fp = fopen("/dev/ttyUSB0", 'w+');
$msg = strtoupper(bin2hex(mb_convert_encoding("Тест", "UCS-2", "UTF-8")));
$number_raw = "+359000000000";
$number = bin2hex(mb_convert_encoding($number_raw, "UCS-2", "UTF-8"));
echo $number."<br>";
echo $msg;
$debug = false;
if(!$fp || $debug){
//echo "Can not open!";
}else{
fwrite($fp, "AT+CMGF=1".chr(13)); // OK
sleep(5);
fwrite($fp, 'AT+CSCS="UCS2"'.chr(13)); // OK
sleep(5);
fwrite($fp, 'AT+CMGS="'.$number.'"'.chr(13)); // OK
sleep(5);
fwrite($fp, $msg.chr(26)); // ERROR 500
echo "<br>Sent";
}
?>
号码和消息根据此来源正确编码:http://www.columbia.edu/kermit/ucs2.html
当消息发送时,我收到了它(所以数字的编码是正确的)但内容显示不正确。
此行为的可能原因是什么,可能是我的 PHP 文件编码?另外,为什么 linux 会找到 3 个 GSM tty 设备?
【问题讨论】:
-
不!不!不!你应该never, never, never, never, never, never, never, never, never, never, ever use sleep like that。您必须读取并解析调制解调器返回的响应,否则您将abort 命令。
标签: php encoding gsm at-command