nataraj: (Default)
[personal profile] nataraj
Победил декодирвку исходящих сообщений.
Оно таки у них там сломано. Я починил.
Патч -- идиотский. В нужном месте заменить единицу на двойку!

СМС сообщение добывается из телефона посредством специальных AT команд, и представляет из себя набор символов 0-9,A-F, которыми типа в текстовом виде представленны хранящиеся в телефоне данные.

Ошибка была в куске кода, который начинал разбор первого поля. Поле это состоит из двух частей: Длинна поля, и собственно данные. Когда в поле данных нет, то длинна равна нулю.
Нюанс тут в том, что байт тут занимает два символа, ибо все напечатано в шеснацетиричном виде (0011FF0B919761059698F20000AD085378789E16BF43)

И вот такой замечательный код обрабатывал все это дело:
       $length = substr $msg, 0, 2;
        if( $length eq '00' ) {
                $self->data( '' );
                $self->state( Sms::Token::DECODED );
                # Remove length-octet read from message
                $$rMessage = substr( $$rMessage, 1 );  ## !!!!!!!!!!!!! Вот тут ошибка
                return 1;
        }
       # ну и тут дальше код, который знает что делать, если длинна не нулевая

Для входящих сообщений все работало хорошо, ибо в них длинна этого поля всегда не равна нулю. А вот во всех исходящих -- равна. Обнаружив это, парсер откусывал только первый нолик из двух, в результате чего вся конструкция фактически сдвигалась на четыре бита(!) влево, и естественно ничего больше разкодироваться правильно не могло.

Все... В ванную, вынуть сообщения, послать патч разработчкиу.

Date: 2007-12-19 04:25 pm (UTC)
From: [identity profile] bytestore.livejournal.com
слушай я тут бьюсь уже неделю и неполучается отправить смс русский
в какой кодировке нужно отдать текст модулю? koi8 utf8 блин я уже в них путаться начал :(

Date: 2007-12-19 08:59 pm (UTC)
ext_613079: Default userpic (Default)
From: [identity profile] shaplov.livejournal.com
Эта... я туда русский прикручивал только на декодирование. К кодированию его туда никто не прикручивал... Оно мне не надо было. Так что скорее всего оно просто не должно работать...

Так что, "вы можете либо реализовать это сами, используя наши материалы: http://shaplov.ru/devel-notes/sms/ , либо нанять нас, чтобы мы решили ваши проблемы" ;-)

Там, по ссылке, в конце идет несколько спецификаций по кодировке SMS'ок.

Profile

nataraj: (Default)
Swami Dhyan Nataraj

July 2024

S M T W T F S
 123456
789 10111213
14151617181920
21222324252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 20th, 2026 03:03 pm
Powered by Dreamwidth Studios