【问题标题】:GSM modem AT commands UCS2 error 500GSM 调制解调器 AT 命令 UCS2 错误 500
【发布时间】: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

当消息发送时,我收到了它(所以数字的编码是正确的)但内容显示不正确。

https://imgur.com/a/cCaTU

此行为的可能原因是什么,可能是我的 PHP 文件编码?另外,为什么 linux 会找到 3 个 GSM tty 设备?

【问题讨论】:

标签: php encoding gsm at-command


【解决方案1】:

在您移除所有可怕的sleep 调用并实施正确的最终响应解析后,您需要修复AT+CMGS 的waiting for the "\r\n&gt; " 响应解析。

如果没有任何修复,字符集编码问题是一个非常小的问题。当您运行 AT+CSCS="UCS2" 每个字符串 将由调制解调器以这种方式编码,并且必须由您以这种方式编码直到永恒(或选择另一个字符集),例如从 UCS2 切换到 UTF-8 将是 AT+CSCS="005500540046002D0038" 而不是 AT+CSCS="UTF-8"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-08
    相关资源
    最近更新 更多