0 / 0 / 0
Регистрация: 08.04.2017
Сообщений: 3
1

Отправка СМС с USB модема. Ограничение в 56 символов на смс. Что делать?

08.04.2017, 19:05. Показов 4416. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток уважаемые форумчане.

Недавно возникла задача написания программы для отправки смсок через модем. Так как сам в кодинге откровенно слаб начал искать подобного рода исходники и нашел https://habrahabr.ru/post/133085/ в силу своих возможностей переделал то, что было под себя, но возникла какая-то странная проблема. Длинна отправляемого сообщения не может быть больше 56 символов(на кирилице) включительно, если больше, то программа как будто бы зависает. Если предположить, что дело в том, что программа упирается в предельную длину смс тогда странно, ведь длинна смс должна быть 70.

Господа, может среди вас есть кто знает ответ на этот вопрос. Буду рад помощи и премного благодарен!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.04.2017, 19:05
Ответы с готовыми решениями:

Отправка смс с помощью GSM модема
Народ привет! Кто писал отпраку смс через АТ команды. Делаю так, но ничего не отправляет, скорее...

Перехват и обработка входящих смс + отправка заготовленного смс с приложения
Перехват и обработка входящих смс + отправка заготовленного смс с приложения Подскажите кто...

Как отправить СМС с USB-модема в локальную сеть
Доброго времени суток. такой вопрос. имеется USB модем МТС 4G, подключенный к роутеру ZyXEL...

Отправка смс через USB модем
Всем привет! Никак не могу найти материал, по вопросу - как отправить смс через USB модем(в моем...

3
3715 / 2225 / 697
Регистрация: 29.05.2013
Сообщений: 9,512
08.04.2017, 21:01 2
Если считать, что приведенный код 100% рабочий, то видимо ваша переделка под себя дала такой эффект. Без вашего кода гадать на кофейной гуще можно долго, так-что ждем деталей
0
5793 / 4533 / 1433
Регистрация: 14.04.2014
Сообщений: 20,196
Записей в блоге: 20
08.04.2017, 22:57 3
длина смс 140 байт
если мы отправляем русский текст - каждая буква - два байта, т.е. макс 70
НО
если букв более 70, то два или три не помню точно байта уходят на признак, что сообщение разделено на части, номер части и номер группы
итого влезает 67 букв, остальное идет следующим куском
склеиваются пришедшие смс уже ПО принимающей стороны
0
0 / 0 / 0
Регистрация: 08.04.2017
Сообщений: 3
09.04.2017, 12:21  [ТС] 4
Кода много, он как бы разделен на три части, поэтому не знаю что именно лучше выложить сюда.
Залил свой текущий исходник SMS_GSM.rar
Если гляните, буду безмерно благодарен!

Добавлено через 3 минуты
Вот в том то и дело, что должно быть символов 70,а у меня получается только 56. Не знаю точно, но есть подозрение что где то здесь кроется ответ

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
function TGSMComander.SendSMSMessage(ASMS: TSMSMessage): Boolean;
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'; // Длина и номер SMS центра. 0 - означает, что будет использоваться дефолтный номер.
  LMes := LMes + '11'; // SMS-SUBMIT
  LMes := LMes + '00'; // Длина и номер отправителя. 0 - означает что будет использоваться дефолтный номер.
  LMes := LMes + IntToHex(Length(ASms.Number), 2); // Длина номера получателя
  LMes := LMes + '91'; // Тип-адреса. (91 указывает международный формат телефонного номера, 81 - местный формат).
  LMes := LMes + LTel; // Телефонный номер получателя в международном формате.
  LMes := LMes + '00'; // Идентификатор протокола
  LMes := LMes + '08'; // Старший полубайт означает сохранять SMS у получателя или нет (FLASH sms),  Младший полубайт - кодировка(0 - латиница 8 - кирилица).
  LMes := LMes + 'C1'; // Срок доставки сообщения. С1 - неделя
  LMes := LMes + IntToHex(Trunc(Length(LText)/2),2); // Длина текста сообщения.
  LMes := LMes + LText; // TP-User-Data. Эти октеты представляют сообщение "hellohello", преобразованное в 7 битку.
 
  Lng := Round((Length(LMes)-2)/2);
 
  WriteStr(Format(CMD_CMGS, [Lng]));
  WriteStr(LMes + END_CMD);
 
  Result := ReadToOK(LRead)
end;
Добавлено через 2 часа 43 минуты
Цитата Сообщение от krapotkin Посмотреть сообщение
длина смс 140 байт
если мы отправляем русский текст - каждая буква - два байта, т.е. макс 70
НО
если букв более 70, то два или три не помню точно байта уходят на признак, что сообщение разделено на части, номер части и номер группы
итого влезает 67 букв, остальное идет следующим куском
склеиваются пришедшие смс уже ПО принимающей стороны
Ковыряясь в исходниках и анализируя приходящие смс понял, что в моем случае эти 70 символов входит системная информация, те самые настройки смс.
Оправляю смс длиной три символа - длина отправляемого сообщения 20
4 символа 22
50 - 114.
Так и должно быть или что-то не так делаю?
0
09.04.2017, 12:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.04.2017, 12:21
Помогаю со студенческими работами здесь

Отправка СМС через 3G USB модем
Всем добрый день!Перелопатил все просторы инета. много примеров но все платные. может кто...

что делать когда программа просит смс код?
Скачал программу статистикаа она денег просит. https://yadi.sk/i/MujZkANhpp27k

Скачал самораспаковывающийся архив с торрентом, выслал СМС - файл не распаковывается, что делать?
Прошу прощения, ищу где можно задать вопрос. На Скачал самораспаковывающийся архив, последовал...

Как отправить СМС с модема мегафона?
Здравствуйте, для диплома, делал программу которая оповещает работника письмом по почте. По...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru