Форум: "Основная";
Текущий архив: 2007.06.03;
Скачать: [xml.tar.bz2];
ВнизКод сочетания клавиш Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.034 c