Это может помочь при каскадном кодировании 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, каждой частисообщение должно иметь тот же ссылочный номер.