Конференция "WinAPI" » автоматическое считывание с com порта
 
  • Denis_kas (21.11.10 14:27) [0]
    Господа программисты. Как и при помощи чего можно считать информацию с ком порта автоматически (т.е. не по кнопке, а именно по приходу информации в порт).
    Задача в следующем.
    Имеется 2 компа соединенных через ком порты. Требуется сделать так, что бы по приходу 1 пакета информации в порт, принимающая сторона тутже выдала квитанцию о принятии.

    На данный момент все происходит по кнопке "принять", "отправить" и естественно ни о какой квитанции речи быть не может..
  • Германн © (21.11.10 15:18) [1]

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


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

    А как именно?
  • Denis_kas (21.11.10 15:22) [2]
    Как именно принимаю:

    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;



    А что требуется, вроде понятно описал.. или нет?
  • Германн © (21.11.10 15:24) [3]

    > Read_Device

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

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

    Понятно.
  • Вариант (22.11.10 05:44) [4]

    > Denis_kas   (21.11.10 14:27)

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

    Первое даст больше в  личном плане для дальнейшей работы под Windows и не только с портом.
  • MBo © (22.11.10 05:44) [5]
    Последовательный порт извещает систему об изменениях своего состояния.
    Если самому писать всё взаимодействие с портом, то появление данных в порту поможет обнаружить функция WaitCommEvent с EV_RXCHAR в маске.

    Есть так же море готовых компонентов, у которых обычно есть событие вроде OnRXChar (например, ComPort автора Dejan Crnila)
  • tesseract © (25.11.10 11:30) [6]
    Открывать порт в отдельном потоке в OVERLAPPED режиме и ставить маску  EV_RXCHAR или просто считывать по байту в GetOverlappedResult.
 
Конференция "WinAPI" » автоматическое считывание с com порта
Есть новые Нет новых   [134431   +12][b:0][p:0.001]