Nasłuch portu - set-read-response-procedure

Posted by jadamski413@gmail.com on 04-Apr-2018 15:43

Witam.

Mam mały problem. Miałem napisaną komunikację pomiędzy dwoma kompami - jeden z nich tylko nasłuchiwał.
Był to prosty program - okno utworzone w AppBuilder z jednym button'em, który wołał procedurę "start":

======================================
  def var hSocket as handle no-undo.
  def var mRead as memptr no-undo. // Bufor odczytu z portu
                                                                    // Ustawiam go na 1024 bajty

  set-size(mRead) = 1024.

  ................
  ................
  run start.
  ................
  ................

// Procedura inicjująca nasłuch
PROCEDURE start:
  hSocket:connect ('-H 192.168.0.222 -S 1111').
  if hSocket:connected() then do:
  hSocket:set-read-response-procedure( "czytajPort").

  MY-BLOCK:
    DO ON ERROR UNDO MY-BLOCK, LEAVE MY-BLOCK:
      wait-for read-response of hSocket.
    END.
  end.
END PROCEDURE.

// Procedura czytająca port

PROCEDURE czytajPort:
  def var xTxt as char no-undo init ''.
  def var x as int no-undo init 0.

  x = hSocket:get-bytes-available().
  hSocket:read (mRead, 1, x).
  xTxt = get-string(mRead, 1).
  message 'Odczytany komunikat: ' xTxt view-as alert-box info buttons OK.

END PROCEDURE.

======================================

Oczywiście pominąłem tu wszelkie obsługi błędów i inne niepotrzebne bzdety.

Wszystko działa pięknie, ale chciałem to przenieść na wersję obiektową.
Utworzyłem projekt w OE VisualDesigner, utworzyłem obiekt okno typu "ABL MDI Form".
Dodałem button "Start" i tu moja wiedza się skończyła.

Jak dodać w ramach klasy procedurę czytającą, czyli jak wykonać:


hSocket:set-read-response-procedure( "czytajPort").


i jak zdefiniować procedurę "start":


PROCEDURE czytajPort:
...
END PROCEDURE.

All Replies

This thread is closed