Просмотр полной версии : SMS.lib
dimka_pro
15.06.2012, 11:46
У всех эта библиотека работает? Или мне версия не для России досталась?
Скачал пример(01_SMS.zip + SMS 8 input F.rar), залил на ПЛК100 и он отказался отправлять SMS. В итоге проблема оказалась в строке:
send_str:=CONCAT('0011000С91',sPhone_out[k]);
0х0С - это количество цифр в номере. Для России 0х0B и строка должна иметь вид:
send_str:=CONCAT('0011000B91',sPhone_out[k]);
После этого SMS нормально отправляются. Кто пользовал эту библиотеку, можете посмотреть, что там у вас?
0В91 используется для десятизначного номера без восьмерки или +7, для России в том числе
dimka_pro
15.06.2012, 13:50
0В91 используется для десятизначного номера без восьмерки или +7, для России в том числе
Это как? С этого места по подробней плиз. Если учесть, что +7 это код страны.
Десятизначный номер телефона плюс код страны, если код страны занимает один знак то в конце номера дописывается буква F для обеспечения четности количества знакомест.
0В в шестнадцатириричной означает 11. Видимо в библиотеке действительно сделано под российские номера и F вставляется принудительно не смотря на количество знаков
А 0С это для таких как Украина только F не должна добавлятся
dimka_pro
15.06.2012, 14:47
Десятизначный номер телефона плюс код страны, если код страны занимает один знак то в конце номера дописывается буква F для обеспечения четности количества знакомест.
0В в шестнадцатириричной означает 11. Видимо в библиотеке действительно сделано под российские номера и F вставляется принудительно не смотря на количество знаков
F добавляется по делу, а вот ко-во знаков в номере должно быть 0x0В. По факту 0х0С. Мне просто интересно, у всех так или только мне "повезло".
Если стоит 0С, значит библиотека писана в Украине и в конце ни чего не добавляется, следовательно введя российский номер сформируется не правильный пакет. Два выхода изменить в библиотеке букву либо к российскому номеру добавить F. Можно и самому написать библиотеку с учетом анализа длинны номера
dimka_pro
15.06.2012, 15:17
И ещё было бы неплохо добавить:
ELSIF sTemp=',' THEN
RUS_UNICODE:=CONCAT(RUS_UNICODE,'002C');
Запятая тоже нужна :)
dimka_pro
15.06.2012, 15:20
Если стоит 0С, значит библиотека писана в Украине и в конце ни чего не добавляется, следовательно введя российский номер сформируется не правильный пакет. Два выхода изменить в библиотеке букву либо к российскому номеру добавить F. Можно и самому написать библиотеку с учетом анализа длинны номера
Это понятно, просто пример на сайте не корректный. Я прилично времени убил на поиск ошибки.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot