Главная страница
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.045 c
5-1155359824
Chinbeg
2006-08-12 09:17
2007.06.03
Переопределение события


15-1178103104
IMHO
2007-05-02 14:51
2007.06.03
Что за мода такая?


15-1178379472
ArtemESC
2007-05-05 19:37
2007.06.03
Ищу простую утилиту для сравнения содержимого...


1-1176116441
AbrosimovA
2007-04-09 15:00
2007.06.03
Какую директиву использовать


2-1179297317
Darvin
2007-05-16 10:35
2007.06.03
Вызов метода процедурного типа