PDA

Просмотр полной версии : 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 нормально отправляются. Кто пользовал эту библиотеку, можете посмотреть, что там у вас?

capzap
15.06.2012, 12:22
0В91 используется для десятизначного номера без восьмерки или +7, для России в том числе

dimka_pro
15.06.2012, 13:50
0В91 используется для десятизначного номера без восьмерки или +7, для России в том числе
Это как? С этого места по подробней плиз. Если учесть, что +7 это код страны.

capzap
15.06.2012, 14:30
Десятизначный номер телефона плюс код страны, если код страны занимает один знак то в конце номера дописывается буква F для обеспечения четности количества знакомест.
0В в шестнадцатириричной означает 11. Видимо в библиотеке действительно сделано под российские номера и F вставляется принудительно не смотря на количество знаков

capzap
15.06.2012, 14:32
А 0С это для таких как Украина только F не должна добавлятся

dimka_pro
15.06.2012, 14:47
Десятизначный номер телефона плюс код страны, если код страны занимает один знак то в конце номера дописывается буква F для обеспечения четности количества знакомест.
0В в шестнадцатириричной означает 11. Видимо в библиотеке действительно сделано под российские номера и F вставляется принудительно не смотря на количество знаков

F добавляется по делу, а вот ко-во знаков в номере должно быть 0x0В. По факту 0х0С. Мне просто интересно, у всех так или только мне "повезло".

capzap
15.06.2012, 15:14
Если стоит 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. Можно и самому написать библиотеку с учетом анализа длинны номера

Это понятно, просто пример на сайте не корректный. Я прилично времени убил на поиск ошибки.