Вот обещанная функция
Преобразует текстовый массив sms_message[] в массив PDU pdu_data[] готовый к отправке.
(написана в CV AVR)
Код:
///////////////////////// Создаем PDU ///////////////////////////////////////////////
void create_pdu(void)
{
unsigned char i, offset, length, n;
pdu_data[0] = 0x00;
pdu_data[1] = 0x01; //исходящее сообщение
pdu_data[2] = 0x00;
pdu_data[3] = sms_dest[0] << 1; //число цифр номера
if ((sms_dest[sms_dest[0]] & 0x0F) == 0x0F) pdu_data[3]--;
pdu_data[4] = 0x91; //интернациональный номер
for (i=1; i <= sms_dest[0]; i++)
{
pdu_data[i+4] = (sms_dest[i] << 4)|(sms_dest[i] >> 4);
}
offset = sms_dest[0]+5;
pdu_data[offset++] = 0x00; //PID
pdu_data[offset++] = 0x00; //DCS
length = offset++;
i = 0;
n = 0;
while (sms_message[i] != 0) //преобразуем восьмибитную запись символов в 7ми битную
{
if (n == 0) pdu_data[offset+i] = sms_message[i] & 0x7F;
else
{
pdu_data[offset+i-1] |= sms_message[i] << (8-n);
pdu_data[offset+i] = sms_message[i] >> n;
}
if (n++ > 6)
{
n = 0;
offset--;
}
i++;
}
pdu_data[length] = i; //число букв
pdu_len = offset+i;
}
/////////////////////////////////////////////////////////////////////////////////////////
Добавлено спустя 17 минут 10 секунд:MiBBiM писал(а):
вот я и говорю, что можно хранить не побайтный шаблон команды, а только размер сообщения, содержащего её. соотвественно для каждой команды свой размер.
Конечно можно и так.
Только команда будет исполняться не только от определённого сообщения, а и от любого другого имеющего эту длинну, а это не айс
![Sad :(](http://roboforum.ru/images/smilies/sad.gif)