Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как узнать, есть ли в приёмном буфере RS232 данные

Delphi , Файловая система , RS232

Как узнать, есть ли в приёмном буфере RS232 данные

Телепрограмма на сегодня:
4.00 РОWЕRхностные явления.
4.05 Winсиканский сериал - "Lоаding in рrоgrеss" 10-11 проценты.
8.30 Игра на мониторе - "Угадай меLОАDию" Yеs,Nо,Саnсеl.
9.00 Программа "Доброе утро, Мustdай".
9.30 "Сам себе Панель Мiсrоsоft Оffiсе".
10.00 Веселые SТАRТы.
11.00 Мультик "Кто сказал БИЗИ?".
11.10 "Соnnесt с первого взгляда".
11.30 "Утренняя почта" с Г. Олдедом.
12.00 NоСаrriеrчко.
12.30 Аdоbе МозгоЕb. В перерывах СкринSаvеrы.
14.00 Самая криминальная программа на мониторе: "Недопустимая операция. Закрыть. Сведения.".
14.30 Юмор на мониторе - клуб "Белый Rеsеt".
15.00-19.00 Профилактические работы. Сериал "SсаnDisk".
19.45 Для самых маленьких - "Unаblе Еrrоr, малыши!".
20.00 Документальные данные о реестре "ИеRАRхическая поDLLость".
20.30 Юмористический мониторожурнал - "Назло DirесtХ".
22.00 Ночной сеанс - "Установка и удаление программ". В главной роли UnInstаll Windоws'98.
23.00 Как это было. "Windоws 3.11" 1990 год.
00.00 Контра, Альт, Дель.

При помощи функции ClearCommError можно узнать, сколько байт данных находится в буфере приёма (и буфере передачи) последовательного интерфейса.


procedure DataInBuffer(Handle: THandle;
var InQueue, OutQueue: integer);
var
  ComStat: TComStat;
  e: integer;
begin
  if ClearCommError(Handle, e, @ComStat) then
  begin
    InQueue := ComStat.cbInQue;
    OutQueue := ComStat.cbOutQue;
  end
  else
  begin
    InQueue := 0;
    OutQueue := 0;
  end;
end;

Переведенный текст:

Код-сниппет написан на языке Pascal и предназначен для проверки наличия данных в буфере приема интерфейса серийной коммуникации (RS232) с помощью функции ClearCommError.

Описание кода:

  1. Процедура DataInBuffer принимает два параметра: Handle, представляющий.handle порта, и две переменные InQueue и OutQueue для хранения результатов.
  2. Внутри процедуры она проверяет успешность выполнения функции ClearCommError присваивая ее возвращаемое значение переменной e. Если функция выполняется успешно, то продолжает с следующими шагами; иначе, устанавливает оба InQueue и OutQueue в 0.
  3. Функция ClearCommError принимает три параметра: Handle, код ошибки (e) и указатель на структуру TComStat, содержащую информацию о состоянии порта серийной коммуникации.
  4. Если функция выполняется успешно, то извлекает значения cbInQue (число байтов в буфере приема) и cbOutQue (число байтов в буфере передачи) из структуры TComStat и присваивает их InQueue и OutQueue, соответственно.

Цель этой процедуры, вероятно, заключается в определении наличия входящих данных для обработки в интерфейсе серийной коммуникации. Если InQueue больше 0, то это указывает на то, что есть байты в буфере приема; иначе, он пуст или не доступен.

Альтернативный подход:

Вместо использования функции ClearCommError, можно использовать функцию GetCommModemStatus для получения информации о состоянии порта серийной коммуникации. Функция возвращает структуру, содержащую различные флаги и значения, указывающие на текущее состояние интерфейса серийной коммуникации.

Можно модифицировать процедуру для использования GetCommModemStatus следующим образом:

procedure DataInBuffer(Handle: THandle; var InQueue, OutQueue: integer);
var
  ModemStat: TModemStat;
begin
  if GetCommModemStatus(Handle, @ModemStat) then
  begin
    if (ModemStat.msRcvLineStat <> RCVDS0) then // Проверка наличия входящих данных
      InQueue := ModemStat.cbInQue; // Обновление InQueue с числом байтов в буфере приема
    OutQueue := ModemStat.cbOutQue; // Обновление OutQueue с числом байтов в буфере передачи
  end
  else
  begin
    InQueue := 0;
    OutQueue := 0;
  end;
end;

Этот подход предоставляет больше гибкости и позволяет проверять конкретные условия, связанные со статусом интерфейса серийной коммуникации.

Для определения наличия данных в приёмном буфере RS232 можно использовать функцию ClearCommError, которая возвращает количество байт данных в буфере.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: RS232 ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-04-23 05:36:11/0.0036041736602783/0