GSM модем AT команды UCS2 ошибка 500

Три дня назад я начал делать простое приложение для отправки SMS. Я уже протестировал его, и он работает в режиме 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 устройства?

0

Решение

После того как вы удалили все ужасное sleep вызовы и реализован правильный разбор окончательного ответа, тогда нужно исправить разбор для в ожидании "\r\n> " ответ АТ + CMGS.

Без этого исправления проблема кодировки набора символов является очень незначительной проблемой. Когда ты бежишь AT+CSCS="UCS2" каждая строка будет закодирован модемом таким образом и должен быть закодирован вами таким образом до вечности (или выбора другого набора символов), поэтому, например, переключение с UCS2 на UTF-8 будет AT+CSCS="005500540046002D0038" и не AT+CSCS="UTF-8",

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]