(***************************************************************************

    :Program.    OSert.mod
    :Contents.   Demonstration of Serlib.mod
    :Author.     Frank Schummertz
    :Address.    Emmastrasse 20, 5600 Wuppertal 2
    :Tel.        +49-202-595130
    :EMail.      Fido     : 2:241/4006.3
    :EMail.      Zerberus : FRANK_SCHUMMERTZ@TTB.ZER
    :Copyright.  Public Domain
    :Language.   Oberon
    :Translator. AmigaOberon V1.17
    :History.    03-Mar-1990 : V1.0
    :Remarks.    Sends an AT$\r to the modem (help-command for the 
    :Remarks.    US Robotics Courier HST / HST DS)
    :Remarks.    Because of the dollar-sign up here the compiler will
    :Remarks.    show a warning. Please ignore it.

****************************************************************************)

MODULE OSert;

IMPORT  sl   : SerLib,
        s    : Serial,
        sys  : SYSTEM,
        d    : Dos,
        a    : ASCII,
        io;

VAR sld  : sl.SerLibDataPtr;
    sst  : sl.SerStatus;
    buf  : ARRAY 2048 OF CHAR;
    len  : LONGINT;

BEGIN
     sld := sl.OpenSerial ("serial.device", 0, 2400, 8, 1, LONGSET {s.sevenWire, s.shared});

     IF sld # NIL THEN
       sl.ChangeData (sld, 2400, 8, 1, LONGSET {s.radBoogie, s.sevenWire, s.shared});
       sl.WriteSer (sld, "AT$\r", 4);
       d.Delay (20);
       sl.GetStatus (sld, sys.ADR (sst));
       io.WriteString ("Bytes unread : ");
       io.WriteInt (sst.unread, 4);
       io.WriteLn;
       d.Delay (20);
       sl.WriteSer (sld, " ", 1);
       d.Delay (20);
       sl.GetStatus (sld, sys.ADR (sst));
       io.WriteString ("Bytes unread : ");
       io.WriteInt (sst.unread, 4);
       io.WriteLn;
       WHILE sst.unread > 0 DO
         len := sl.ReadSer (sld, buf, 2040);
         buf [len] := a.nul;
         io.WriteString (buf);
         sl.GetStatus (sld, sys.ADR (sst));
       END;

     ELSE
       io.WriteString ("couldn`t open serial.device\n");
     END;

CLOSE
     IF sld # NIL THEN
       sl.CloseSerial (sld);
     END;

END OSert.
