нужна помощь в проекте смс с использованием vb .net - PullRequest
0 голосов
/ 07 апреля 2011

Я делаю смс-проект, используя VB .net для подключения к своему GSM-модему через serialport.Все связи и все работает отлично, и я могу отправлять и получать смс.Тогда возникает проблема, мне нужно отправить длинные смс более 160 символов.Я прочитал и провел некоторые исследования, и я знаю, что мне нужно использовать pdu и udh.Мне удалось немного понять пакет pdu, но он все еще довольно запутан в этой части.

Кто-нибудь может кратко объяснить точный способ выполнения составных смс (длинных смс)?

Другая проблема заключается вКак я могу использовать VB для кодирования данных в 7 бит данных Pdu GSM?Есть ли встроенные функции или мне нужно написать их самому?

1 Ответ

1 голос
/ 13 апреля 2011

Это может помочь при каскадном кодировании SMS и GSM, но я никогда не использовал GSM-модем, так что, надеюсь, кто-то другой сможет заполнить пробелы.

Чтобы преобразовать вашу строку .NET в кодированный GSMстрока, я написал библиотеку с открытым исходным кодом на Github , которая может вам помочь.Однако он не выполняет 7-битную упаковку, которая может вам понадобиться.

Для поддержки длинных сообщений необходимо добавить заголовок пользовательских данных в начале каждого сообщения.

Сначала разбейте сообщениев несколько частей каждые 153 байта GSM (7 бит).Не забывайте, что расширенные символы, такие как {занимают два байта, см. Полный список GSM для полного списка.

Затем добавьте байты UDH в начало, которые разрешают объединение.Ниже приведен пример сообщения из двух частей.

First SMS:  05 00 03 A6 02 01 .. bytes that make up the first part text..
Second SMS: 05 00 03 A6 02 02 .. bytes that make up the second part text..

Bytes  Description
05     (UDHL) Length of the UDH. So the following five bytes are UDH
00     (IEI) This identifier says this is a concatenated message
03     (IEDL) It says that next 3 bytes are the data for this IE.
A6     Reference number of this concatenated message. 
02     There are two parts to this concatenated message.
01or02 This indicates whether the SMS is the first or second part.

UHDL = длина заголовка данных пользователя

IEI = идентификатор информационного элемента (00 - это составное сообщение)

IEDL = длина данных информационного элемента (длина заголовка составного сообщения всегда равна 3)

Для справочного номера самый простой способ - просто назначить случайное число в диапазоне 0-255, каждой частисообщение должно иметь тот же ссылочный номер.

...