Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.03;
Скачать: CL | DM;

Вниз

Код сочетания клавиш   Найти похожие ветки 

 
Pattern   (2007-04-10 10:59) [0]

Пишу программу по работе с 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);

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


 
Leonid Troyanovsky ©   (2007-04-10 11:04) [1]


> Pattern   (10.04.07 10:59)  

> message"+#17#90);


Код Ctrl+Z - ^Z

--
Regards, LVT.


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

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

..."Test message^Z");

???


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


> Pattern   (10.04.07 11:14) [2]

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


"Test message"+^Z

--
Regards, LVT.


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

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


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

Чтобы уж завершить эту эпопею (вдруг кому пригодится), напишу как на самом деле производится отправка:
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;

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



Страницы: 1 вся ветка

Текущий архив: 2007.06.03;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.05 c
15-1178615955
Jan1
2007-05-08 13:19
2007.06.03
Защита программы от крэка


5-1154942814
Nic
2006-08-07 13:26
2007.06.03
Научиться писать компоненты


3-1173941316
Still Swamp
2007-03-15 09:48
2007.06.03
Есть ли способ выгрузить данные из датасета в поток?


2-1179132870
Taniana
2007-05-14 12:54
2007.06.03
Подскажите путь в программе с IP-адресом!!!


1-1176127944
SkySpeed
2007-04-09 18:12
2007.06.03
Как в режиме RunTime НОРМАЛЬНО изменить форму TForm?