Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отправка SMS 
:(
    Опции темы
NikolayKr
Дата 15.11.2007, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 4.8.2006

Репутация: нет
Всего: нет



Добрый день.
Пытаюсь отправить SMS с телефона, подключенного к компу.

Код


assignfile(f,'com4');
rewrite(f);

write(f,'AT+CMGF=1' + #13);

write(f,'AT+CMGS="80111111111"' + #13);

write(f,'Test' + #13);
write(f,#26 +#27);
closeFile(f);



- не получаеться

если делать то-же, но между командами делать задержку по времени- все получаеться.

подскажите как прочитать ответ модема с COM - порта, что ему уже можно отправлять следующие данные? 

PM MAIL   Вверх
Coder
Дата 16.11.2007, 04:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 13.12.2004

Репутация: нет
Всего: 11



Вычитай ответ от модема и отправляй новые данные. Хотя есть модемы, у которых в документации указывается конкретное время задержки между AT командами.
PM MAIL   Вверх
NikolayKr
Дата 16.11.2007, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 4.8.2006

Репутация: нет
Всего: нет



В том-то и дело, что хочу прочитать ответ от модема, но команда read в данном случае не работает.
PM MAIL   Вверх
Coder
Дата 19.11.2007, 03:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 13.12.2004

Репутация: нет
Всего: 11



Правильное подключение:
Код

function TForm1.Connect(APort: String): boolean;
var
  DeviceName: array[0..80] of Char;
begin
  result:=false;

  if hCom<>0 then
    begin
      log('Порт '+Aport+' уже открыт.');
      exit;
    end;

  currPort:=APort;

  StrPCopy(DeviceName, '\\.\'+APort);

  hCom := CreateFile(DeviceName, GENERIC_READ or GENERIC_WRITE,
    0, nil, OPEN_EXISTING, 0, 0);
  sleep(500);

  if (hCom=INVALID_HANDLE_VALUE) then
     begin
       log('Ошибка открытия порта '+APort);
       hCom:=0;
       exit;
     end;

  Succ:=GetCommState(hCom,dcb);

  if not Succ then
    begin
      log('Ошибка 1.');
      CloseHandle(hCom);
      hCom:=0;
      exit;
    end;

  dcb.BaudRate:=115200;
  dcb.ByteSize:=8;
  dcb.Parity:=NOPARITY;
  dcb.StopBits:=ONESTOPBIT;

  Succ:=SetCommState(hCom,dcb);

  if not Succ then
    begin
      log('Ошибка 2.');
      CloseHandle(hCom);
      hCom:=0;
      exit;
    end;

  TimeOuts.ReadIntervalTimeout:=MAXDWORD;    // устанавливаем timeout. для того чтобы не было задержек
  Succ:=SetCommTimeouts(hCom,TimeOuts);
  if not Succ then
    begin
      log('Ошибка 3.');
      CloseHandle(hCom);
      hCom:=0;
      exit;
    end;

  result:=true;
end;


Правильная отправка СМС:
Код

function TForm1.TerminalManage(index, mcmd : byte; sec : integer = 0) : boolean;
var
  cmd, res, sep : string;
  BytesWritten, BytesRead, i : Cardinal;
begin
  result:=false;

  cmd:='AT+CMGS="+79242630000",145'#13;
  WriteFile(hCom, PChar(cmd)^, Length(cmd), BytesWritten, nil);
  res:='';
  while (pos('OK'#13,res)=0) and (pos('ERROR',res)=0) and (pos('>',res)=0) do
    begin
      FillChar(IOBuf^,sizeof(tmb),#0);
      Sleep(100);
      ReadFile(hCom, IObuf^, Sizeof(tmb), BytesRead, nil);
      for i:=1 to BytesRead do
        res:=res+IOBuf^[i];
    end;
  if pos('>',res)=0 then
    exit;
  FillChar(IObuf^, sizeof(TMb),#0);
  sleep(100);


  cmd:='SMS TEXT'+#26;

  WriteFile(hCom, PChar(cmd)^, Length(cmd), BytesWritten, nil);
  res:='';
  while (pos('OK',res)=0) and (pos('ERROR',res)=0) and (pos('>',res)=0) and (pos(#26,res)=0) do
    begin
      FillChar(IOBuf^,sizeof(tmb),#0);
      sleep(100);
      ReadFile(hCom, IObuf^, Sizeof(tmb), BytesRead, nil);
      for i:=1 to BytesRead do
        res:=res+IOBuf^[i];
    end;

  result:=true;
end;

PM MAIL   Вверх
NikolayKr
Дата 19.11.2007, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 4.8.2006

Репутация: нет
Всего: нет



Большое спасибо за помощь
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0439 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.