Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Код сочетания клавиш [D7, WinXP]


Pattern ©   (2007-04-10 10:59:00) 

Пишу программу по работе с GPRS модемом. В качестве обмена данными с COM-портом использую CPort310. Для отсылки команды Есть функция:
function WriteStr(const Str: string): Integer;
То есть для отправки AT-команды нужно выполнить следующее:
if ComPort.Connected then
   ComPort.WriteStr('AT'+#13#10);

Тут всё понятно, проблем никаких нет. Однако для отправки SMS-сообщения используется следующая команда:
AT+CMGS=[номер получателя][CR]Текст сообщения[CTRL-Z]|[ESC]
[ESC]- для отмены команды
[CTRL-Z]- для отправки сообщения.
Вот тут получился стопор. При использовании ESCпроблем нет, это код #27. А вот с CTRL+Zпробовал отправить следующим образом:
if ComPort.Connected then
   ComPort.WriteStr('AT+CMGS=+79211234567'+#13#10+'Test message'+#17#90);

но порт не получает нужной команды, а "висит" и ждёт посылки именно этого сочетания клавиш.
Может кто сталкивался с подобной проблемой, подскажите, как отослать это сочетание клавиш?
Спасибо всем отозвавшимся!


Pattern   (2007-04-10 12:37:00) [1]

Чтобы уж завершить эту эпопею (вдруг кому пригодится), напишу как на самом деле производится отправка:
var
 AtIn: String;
 Simb: Integer;
...
begin
...
if ComPort.Connected then
begin
//отправляем предварительную команду отправки SMS
 ComPort.WriteStr('AT+CMGS=+79211234567'+#13);
//считываем данные, что модем готов для приёма сообщения
 ComPort.ReadStr(AtIn,Simb);
// AtInдолжен вернуть строку
// AT+CMGS=+79211234567
// >
...
//далее идёт посылка на модем самого сообщения
 ComPort.WriteStr('Test message'+' '+^Z);
//после тела сообщения обязателен пробел (??? не понятно почему)
//посылка SMS - [CTRL+Z], он же ^Z, он же #26

//считываем как завершилась операция
 ComPort.ReadStr(AtIn,Simb);
//после считывания при успешной отправке AtInдолжен вернуть
// +CMGS: [номер отправленного сообщения]
end;

Ещё раз спасибо Леониду!


Pattern   (2007-04-10 11:41:00) [2]

Спасибо огромное! Разобрался!


Leonid Troyanovsky   (2007-04-10 11:28:00) [3]


> Pattern   (10.04.07 11:14) [2]

> ...'Test message^Z');


'Test message'+^Z

--
Regards, LVT.


Pattern   (2007-04-10 11:14:00) [4]

Леонид, спасибо за ответ, только я его не понял...
Вместо #17#90 что я должен написать? #27#90? Или так и ввести текстом

...'Test message^Z');

???


Leonid Troyanovsky   (2007-04-10 11:04:00) [5]


> Pattern   (10.04.07 10:59)  

> message'+#17#90);


Код Ctrl+Z - ^Z

--
Regards, LVT.


Наверх

Титульная страница Поиск, карта сайта Написать письмо