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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2014, 01:40   #1
MoZart.Element
Новичок
Джуниор
 
Регистрация: 18.12.2014
Сообщений: 1
По умолчанию Чтение и распознавание sms в Delphi

Добрый день, коллеги!

Хочу сказать сразу, что с Дельфи последний раз общался ещё в институте. Однако, нужда заставила вспоминать.
Суть задачи:
Есть USB-модем. На данный модем время от времени приходят смс-ки.
Нужно, чтобы по приходу смс программа "понимала", что смс пришла, читала только что полученную смс, вычленяла из текста нужную информацию, а именно 4-х значный код, записывала этот код в массив и удаляла только что прочитанную смс. Можно то-же самое реализовать по таймеру периодически - не принципиально.


Посмотрел много примеров, прочитал много литературы, но результат один - у меня это сделать не получается.
Что такое АТ-команды я знаю. Они проходят нормально. Проблема именно в чтении ответов.

Я прошу именно помочь. То что я не блещу знаниями в данной области прошу не обсуждать - это и так понятно.
Я не сплю ночами уже больше месяца и порядком устал.

Вот одно из моих последних творений - не судите строго.

Код:

procedure TForm1.ReadSMS(AComPort: integer);
var
  hFile                 : THandle;
  AStr, ASS          : String;
  G_Len, CntRead  : DWORD;
  LWrited             : Cardinal;
begin
  hFile := Windows.CreateFile(PChar('\\.\COM' + IntToStr(AComPort)), GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0);
  if (hFile <> INVALID_HANDLE_VALUE) then
  begin
    try
      PurgeComm(hFile, PURGE_TXCLEAR or PURGE_RXCLEAR);
      sleep(200);
      AStr  := 'AT+CMGF=1' + #$D#$A;
      WriteFile(hFile, PAnsiChar(AStr)^, Length(AStr), LWrited, nil);
      sleep(200);
      PurgeComm(hFile, PURGE_TXCLEAR or PURGE_RXCLEAR);
      AStr  := 'AT+CMGR=4' + #$D#$A;
      WriteFile(hFile, PAnsiChar(AStr)^, Length(AStr), LWrited, nil);
      sleep(200);
      G_Len := GetFileSize(hFile, nil);
      SetLength(ASS, G_Len);
      ReadFile(hFile, Pointer(ASS)^, G_Len, CntRead, nil);
    finally
      Form1.Memo1.Text := ASS;
      Windows.CloseHandle(hFile);
     end;
  end;
end;
В текстовое поле выводится пустая строка.

Как это сделать ПРАВИЛЬНО?
MoZart.Element вне форума Ответить с цитированием
Старый 18.12.2014, 07:14   #2
WinCoder
Заблокирован
 
Регистрация: 24.11.2014
Сообщений: 721
По умолчанию

Цитата:
Есть USB-модем
Какой, угадайте сами.
Цитата:
Я не сплю ночами уже больше месяца и порядком устал.
Вместо того, чтоб купить готовый код?
WinCoder вне форума Ответить с цитированием
Старый 18.12.2014, 07:39   #3
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

http://www.programmersforum.ru/showthread.php?t=247072
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
sms(letsads)+delphi monakhov Помощь студентам 2 02.08.2013 12:52
Чтение SMS с мобильного телефона PatriotKSA Общие вопросы Delphi 2 11.05.2011 19:20
Отправка SMS в Delphi ubun Общие вопросы Delphi 4 07.01.2011 18:23
SMS Delphi doniyor Работа с сетью в Delphi 1 22.04.2008 19:24
Sms через Delphi delphin100 Общие вопросы Delphi 1 26.09.2007 18:40