Главная страница
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.047 c
3-1173464796
databaser
2007-03-09 21:26
2007.06.03
Поиск в найденном


15-1178189164
CCili
2007-05-03 14:46
2007.06.03
Какая-то функция, соединяющая Word, Excel


2-1179218175
Vlad Oshin
2007-05-15 12:36
2007.06.03
Cannot perform this operation on a close dataset. В чем дело?


11-1160597543
doozer
2006-10-12 00:12
2007.06.03
RxLibrary и ICS WSocket


5-1154951820
Vaitek__
2006-08-07 15:57
2007.06.03
Храние ресурсов в компоненте