Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2015, 09:27   #1
prizrak1390
-=PriZraK=-
Форумчанин
 
Аватар для prizrak1390
 
Регистрация: 12.12.2007
Сообщений: 399
По умолчанию Разбивка PDU пакета на фрагменты

Доброго времени суток. Есть вполне годный код, для отправки СМС через COM порт. Однако он рассчитан на отправку лишь одного коротенького СМС. Подскажите, как правильно его модифицировать, чтобы производилась разбивка одного большого PDU пакета, на маленькие? К сожалению на чтение мануалов особо времени нет.

Код:
var
  Lng, i:  Integer;
  LRead, LText, LMes, LTel, ANum: String;
begin
  ANum := ASms.Number;
  if (Length(ANum) mod 2) = 1 then
    ANum := ANum + 'F';

  for i := 1 to Length(ANum) do
    if i mod 2 = 0 then
      LTel := LTel + ANum[i] + ANum[i-1];

  LText := AnsiToUCS(ASms.Text);
  LMes := '00'; 
  LMes := LMes + '11'; 
  LMes := LMes + '00'; 
  LMes := LMes + IntToHex(Length(ASms.Number), 2); 
  LMes := LMes + '91'; 
  LMes := LMes + LTel; 
  LMes := LMes + '00'; 
  LMes := LMes + '08';
  LMes := LMes + 'C1'; 
  LMes := LMes + IntToHex(Trunc(Length(LText)/2),2); 
  LMes := LMes + LText; 
  Lng := Round((Length(LMes)-2)/2);

  WriteStr(Format(CMD_CMGS, [Lng]));
  WriteStr(LMes + END_CMD);
  Result := ReadToOK(LRead)
prizrak1390 вне форума Ответить с цитированием
Старый 24.02.2015, 17:43   #2
prizrak1390
-=PriZraK=-
Форумчанин
 
Аватар для prizrak1390
 
Регистрация: 12.12.2007
Сообщений: 399
По умолчанию

Неужели никто не сталкивался с этим? Ну или подскажите 100% работающий компонент, кроме nrComm.
prizrak1390 вне форума Ответить с цитированием
Старый 24.02.2015, 21:06   #3
nikolya1
Заблокирован
 
Регистрация: 24.02.2015
Сообщений: 34
По умолчанию

Для начал нужно разбить сообщение на блоки. Если текст английский, то размер блока 140 символов. Если русский, 70 символов. При кодировании одного блока в первые байты заносится информация о сумме блоков и индексе текущего блока. Составляем несколько полноценных сообщений из этих блоков (отправитель, получатель, кодировки), и шлём их последовательно в порт. Я могу помочь в переделке кода, если хотите. Пишите на мэил nikolya.ponamorenko собака мэил ру. Я думаю, о помощи за пиво договоримся?
nikolya1 вне форума Ответить с цитированием
Старый 25.02.2015, 09:45   #4
prizrak1390
-=PriZraK=-
Форумчанин
 
Аватар для prizrak1390
 
Регистрация: 12.12.2007
Сообщений: 399
По умолчанию

nikolya1, пить - здоровью вредить)) Я думаю мое предложение высланное по почте должно лучше заинтересовать))
prizrak1390 вне форума Ответить с цитированием
Старый 25.02.2015, 12:06   #5
nikolya1
Заблокирован
 
Регистрация: 24.02.2015
Сообщений: 34
По умолчанию

Я считаю, что в своей жизни нужно не в чём себе не отказывать. Ответил на почту.
nikolya1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно написать фрагменты программ на С++ в Visual Studio MrSfinks Помощь студентам 0 14.01.2014 20:38
Как убрать полосы и выбеленные фрагменты? elena1704 Microsoft Office Word 7 04.04.2013 12:28
Нужно написать фрагменты программ на С++ в Visual Studio *Надежда* Помощь студентам 14 14.01.2013 22:55
Музыкальные фрагменты в QBasic Андрюха_ЕШКО Помощь студентам 2 17.03.2011 22:11
Нужна функция декодирования PDU AquaKlaster Общие вопросы Delphi 5 03.10.2010 15:45