Главная страница
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.073 c
15-1178289480
antonn
2007-05-04 18:38
2007.06.03
запуск службы с заданием приоритета


2-1179003400
aha
2007-05-13 00:56
2007.06.03
Как можно выполнить следующую процедуру ? имеется множество


15-1178712342
syte_ser78
2007-05-09 16:05
2007.06.03
Вопрос к знатокам сопромата


15-1178907173
Другой
2007-05-11 22:12
2007.06.03
Подскажите, пожалуйста, чей стих


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