Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.03.09;
Скачать: [xml.tar.bz2];

Вниз

Зарпет обработки события   Найти похожие ветки 

 
olega ©   (2008-02-13 14:15) [0]

Добрый день! Для работы с GSM-модемом я использую компонент TBComPort 2.10 (http://www.delphisources.ru/pages/sources/system/2005_year/bcom_port.html). В случае если на модем приходит СМС, он выдает в СОМ-порт строку "+CMTI: "MT",1". В компоненте есть прерывние OnRxChar, которое вызывается в случае появления во входном буфере СОМ-порта данных. Его обработчик - это функция синхронного чтения порта. Таким образом, когда приходит СМС, программа автоматом улавливает этот момент и считывает указанную выше строку.
Для дальнейшей работы мне необходимо считать СМС. Для этого я посылаю команду "AT+CMGR=1". Для контроля правильности ее выполнения необходимо проверять ответы от модема. НО с прерыванием это делать не удобно. Как можно его временно запретить, чтобы считывать ответы от модема "вручную", а когда обработаю пришедшую СМС, востановить прерывание и ожидать новой СМС?


 
Семеныч   (2008-02-13 14:35) [1]

procedure TForm1.BComPort1RxChar(...); // Обработчик OnRxChar
begin
 BComPort1.OnRxChar := nil;
 try
   ... // Обработка
 finally
   BComPort1.OnRxChar := BComPort1RxChar;
 end;
end;


 
DiamondShark ©   (2008-02-13 14:50) [2]


> НО с прерыванием это делать не удобно.

Это почему же?
Дубовую state-machine трудно организовать?

...
FState: integer;

procedure TBComPort1.OnRxChar;
begin
 case FState of
 ...
 17: begin // состояние "ждать уведомления от модема"
    ЧитатьКомандуОтМодкма();
    if команда = "+CMTI: "MT",1" then
    begin
      ПослатьКомандуМодему("AT+CMGR=1");
      FState := 18;
    end;
   ...
 end;
 18: begin // состояние "ждать ответа на "AT+CMGR=1""
    // читать и чего-то делать с ответом
    FState := 38;
 end
 ...
 end;
end;



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

Форум: "Начинающим";
Текущий архив: 2008.03.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.045 c
2-1202915231
Malik
2008-02-13 18:07
2008.03.09
Печать через ShellExecute


2-1202718597
Петр
2008-02-11 11:29
2008.03.09
timer+forma


2-1202760380
Steep
2008-02-11 23:06
2008.03.09
строки....


2-1202988963
Photo33
2008-02-14 14:36
2008.03.09
2 bmp в один


15-1201692184
Cerberus
2008-01-30 14:23
2008.03.09
А это нормально?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский