Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

автоматическое считывание с com порта


Denis_kas ©   (2010-11-21 14:27:00) 

Господа программисты. Как и при помощи чего можно считать информацию с ком порта автоматически (т.е. не по кнопке, а именно по приходу информации в порт).
Задача в следующем.
Имеется 2 компа соединенных через ком порты. Требуется сделать так, что бы по приходу 1 пакета информации в порт, принимающая сторона тутже выдала квитанцию о принятии.

На данный момент все происходит по кнопке "принять", "отправить" и естественно ни о какой квитанции речи быть не может..


tesseract   (2010-11-25 11:30:00) [1]

Открывать порт в отдельном потоке в OVERLAPPED режиме и ставить маску  EV_RXCHAR или просто считывать по байту в GetOverlappedResult.


Вариант   (2010-11-22 05:44:00) [2]


> Denis_kas   (21.11.10 14:27)

Варианты:
1)
Изучить работу с портами через Windows API - в чем помогут книга Павла Агурова
"Последовательные интерфейсы ПК. Практика программирования"
или статьи по теме на различных сайтах + MSDN (функции SetCommMask, WaitCommEvent, ReadFile и еще приличный список функций)
2)
Установить какой-либо нормальный компонент работы с портом и изучить работу с ним

Первое даст больше в  личном плане для дальнейшей работы под Windows и не только с портом.


MBo   (2010-11-22 05:44:00) [3]

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

Есть так же море готовых компонентов, у которых обычно есть событие вроде OnRXChar (например, ComPort автора Dejan Crnila)


Германн   (2010-11-21 15:24:00) [4]


> Read_Device

Не знаю такую функцию WinAPI.

> А что требуется, вроде понятно описал

Понятно.


Denis_kas   (2010-11-21 15:22:00) [5]

Как именно принимаю:

procedure Tmain.Button3Click(Sender: TObject);
var
...
begin

...
  result := Read_Device(hCOM, o, Length(Input_Buffer), Input_Buffer);

  if (result <> 0) then begin
       Application.MessageBox('Ошибка чтения порта', 'Ошибка', MB_OK);
  end;
...
  end;


А что требуется, вроде понятно описал.. или нет?


Германн   (2010-11-21 15:18:00) [6]


> Как и при помощи чего можно считать информацию с ком порта
> автоматически


> На данный момент все происходит по кнопке "принять"

А как именно?


Наверх

Титульная страница Поиск, карта сайта Написать письмо