home *** CD-ROM | disk | FTP | other *** search
/ synchro.net / synchro.net.tar / synchro.net / main / BBS / D32_01.ZIP / COMBASE.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1999-11-25  |  8.9 KB  |  285 lines

  1. unit ComBase;
  2. (*
  3. **
  4. ** Serial and TCP/IP communication routines for DOS, OS/2 and Win9x/NT.
  5. ** Tested with: TurboPascal   v7.0,    (DOS)
  6. **              VirtualPascal v2.0,    (OS/2, Win32)
  7. **              FreePascal    v0.99.12 (DOS, Win32)
  8. **              Delphi        v4.0.    (Win32)
  9. **
  10. ** Version : 1.01
  11. ** Created : 21-May-1998
  12. ** Last update : 14-May-1999
  13. **
  14. ** Note: (c)1998-1999 by Maarten Bekers
  15. **
  16. *)
  17.  
  18. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  19.  INTERFACE
  20. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  21.  
  22. {$IFDEF VirtualPascal}
  23. uses Use32;
  24. {$ENDIF}
  25.  
  26. {$IFDEF MSDOS}
  27.   Type ShortString = String;
  28. {$ENDIF}
  29.  
  30. type SliceProc = procedure;
  31.  
  32. type TCommObj = Object
  33.         DontClose  : Boolean;
  34.         InitFailed : Boolean;
  35.         ErrorStr   : ShortString;
  36.         BlockAll   : Boolean;
  37.  
  38.         constructor Init;
  39.         destructor Done;
  40.  
  41.         procedure Com_OpenQuick(Handle: Longint); virtual;
  42.         function  Com_Open(Comport: Byte; BaudRate: Longint; DataBits: Byte;
  43.                            Parity: Char; StopBits: Byte): Boolean; virtual;
  44.         function  Com_OpenKeep(Comport: Byte): Boolean; virtual;
  45.         procedure Com_GetModemStatus(var LineStatus, ModemStatus: Byte); virtual;
  46.  
  47.         procedure Com_SetLine(BpsRate: longint; Parity: Char; DataBits, Stopbits: Byte); virtual;
  48.         function  Com_GetBPSrate: Longint; virtual;
  49.  
  50.         procedure Com_GetBufferStatus(var InFree, OutFree, InUsed, OutUsed: Longint); virtual;
  51.         procedure Com_SetDtr(State: Boolean); virtual;
  52.  
  53.         function  Com_CharAvail: Boolean; virtual;
  54.         function  Com_Carrier: Boolean; virtual;
  55.         function  Com_ReadyToSend(BlockLen: Longint): Boolean; virtual;
  56.  
  57.         function  Com_GetChar: Char; virtual;
  58.         function  Com_SendChar(C: Char): Boolean; virtual;
  59.         function  Com_GetDriverInfo: String; virtual;
  60.         function  Com_GetHandle: Longint; virtual;
  61.         function  Com_InitSucceeded: Boolean; virtual;
  62.  
  63.         procedure Com_Close; virtual;
  64.         procedure Com_SendBlock(var Block; BlockLen: Longint; var Written: Longint); virtual;
  65.         procedure Com_SendWait(var Block; BlockLen: Longint; var Written: Longint; Slice: SliceProc); virtual;
  66.         procedure Com_ReadBlock(var Block; BlockLen: Longint; var Reads: Longint); virtual;
  67.         procedure Com_PurgeOutBuffer; virtual;
  68.         procedure Com_PurgeInBuffer; virtual;
  69.         procedure Com_PauseCom(CloseCom: Boolean); virtual;
  70.         procedure Com_ResumeCom(OpenCom: Boolean); virtual;
  71.         procedure Com_FlushOutBuffer(Slice: SliceProc); virtual;
  72.         procedure Com_SendString(Temp: ShortString); virtual;
  73.         procedure Com_SetFlow(SoftTX, SoftRX, Hard: Boolean); virtual;
  74.      end; { object TCommObj }
  75.  
  76. Type PCommObj = ^TCommObj;
  77.  
  78. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  79.  IMPLEMENTATION
  80. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  81.  
  82. constructor TCommObj.Init;
  83. begin
  84.   DontClose := false;
  85.   InitFailed := false;
  86.   BlockAll := false;
  87.   ErrorStr := '';
  88. end; { constructor Init }
  89.  
  90. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  91.  
  92. destructor TCommObj.Done;
  93. begin
  94. end; { destructor Done }
  95.  
  96. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  97.  
  98. function TCommObj.Com_Open(Comport: Byte; BaudRate: Longint; DataBits: Byte;
  99.                    Parity: Char; StopBits: Byte): Boolean;
  100. begin
  101. end; { func. Com_Open }
  102.  
  103. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  104.  
  105. procedure TCommObj.Com_OpenQuick(Handle: Longint);
  106. begin
  107. end; { proc. TCommObj.Com_OpenQuick }
  108.  
  109. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  110.  
  111. procedure TCommObj.Com_Close;
  112. begin
  113. end; { proc. TCommObj.Com_Close }
  114.  
  115. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  116.  
  117. function TCommObj.Com_GetChar: Char;
  118. begin
  119. end; { func. TCommObj.Com_GetChar }
  120.  
  121. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  122.  
  123. function TCommObj.Com_SendChar(C: Char): Boolean;
  124. begin
  125. end; { proc. TCommObj.Com_SendChar }
  126.  
  127. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  128.  
  129. procedure TCommObj.Com_SendBlock(var Block; BlockLen: Longint; var Written: Longint);
  130. begin
  131. end; { proc. TCommObj.Com_SendBlock }
  132.  
  133. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  134.  
  135. procedure TCommObj.Com_ReadBlock(var Block; BlockLen: Longint; var Reads: Longint);
  136. begin
  137. end; { proc. TCommObj.Com_ReadBlock }
  138.  
  139. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  140.  
  141. function TCommObj.Com_CharAvail: Boolean;
  142. begin
  143. end; { func. TCommObj.Com_CharAvail }
  144.  
  145. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  146.  
  147. function TCommObj.Com_Carrier: Boolean;
  148. begin
  149. end; { func. Comm_Carrier }
  150.  
  151. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  152.  
  153. procedure TCommObj.Com_SetDtr(State: Boolean);
  154. begin
  155. end; { proc. TCommObj.Com_SetDtr }
  156.  
  157. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  158.  
  159. function TCommObj.Com_OpenKeep(Comport: Byte): Boolean;
  160. begin
  161. end; { func. TCommObj.Com_OpenKeep }
  162.  
  163. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  164.  
  165. function TCommObj.Com_ReadyToSend(BlockLen: Longint): Boolean;
  166. begin
  167. end; { func. TCommObj.Com_ReadyToSend }
  168.  
  169. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  170.  
  171. procedure TCommObj.Com_GetModemStatus(var LineStatus, ModemStatus: Byte);
  172. begin
  173. end; { proc. TCommObj.Com_GetModemStatus }
  174.  
  175. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  176.  
  177. function TCommObj.Com_GetBPSrate: Longint;
  178. begin
  179. end; { func. TCommObj.Com_GetBPSrate }
  180.  
  181. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  182.  
  183. procedure TCommObj.Com_SetLine(BpsRate: longint; Parity: Char; DataBits, Stopbits: Byte);
  184. begin
  185. end; { proc. TCommObj.Com_SetLine }
  186.  
  187. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  188.  
  189. procedure TCommObj.Com_GetBufferStatus(var InFree, OutFree, InUsed, OutUsed: Longint);
  190. begin
  191. end; { proc. TCommObj.Com_GetBufferStatus }
  192.  
  193. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  194.  
  195. procedure TCommObj.Com_PurgeInBuffer;
  196. begin
  197. end; { proc. TCommObj.Com_PurgeInBuffer }
  198.  
  199. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  200.  
  201. procedure TCommObj.Com_PurgeOutBuffer;
  202. begin
  203. end; { proc. TCommObj.Com_PurgeOutBuffer }
  204.  
  205. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  206.  
  207. function TCommObj.Com_GetDriverInfo: String;
  208. begin
  209.   Com_GetDriverInfo := '';
  210. end; { func. Com_GetDriverInfo }
  211.  
  212. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  213.  
  214. function TCommObj.Com_GetHandle: Longint;
  215. begin
  216.   Com_GetHandle := -1;
  217. end; { func. Com_GetHandle }
  218.  
  219. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  220.  
  221. procedure TCommObj.Com_PauseCom(CloseCom: Boolean);
  222. begin
  223. end; { proc. Com_PauseCom }
  224.  
  225. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  226.  
  227. procedure TCommObj.Com_ResumeCom(OpenCom: Boolean);
  228. begin
  229. end; { proc. Com_ResumeCom }
  230.  
  231. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  232.  
  233. function TCommObj.Com_InitSucceeded: Boolean;
  234. begin
  235.   Com_InitSucceeded := NOT InitFailed;
  236. end; { func. Com_InitFailed }
  237.  
  238. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  239.  
  240. procedure TCommObj.Com_FlushOutBuffer(Slice: SliceProc);
  241. var InFree,
  242.     OutFree,
  243.     InUsed,
  244.     OutUsed  : Longint;
  245. begin
  246.   Com_GetBufferStatus(InFree, OutFree, InUsed, OutUsed);
  247.  
  248.   while (OutUsed > 1) AND (Com_Carrier) do
  249.    { X00 (fossil) will never go below 1 ! }
  250.     begin
  251.       Com_GetBufferStatus(InFree, OutFree, InUsed, OutUsed);
  252.  
  253.       if @Slice <> nil then
  254.         begin
  255.           Slice;
  256.           Slice;
  257.         end; { if }
  258.     end; { while }
  259. end; { proc. Com_FlushOutBuffer }
  260.  
  261. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  262.  
  263. procedure TCommObj.Com_SendWait(var Block; BlockLen: Longint; var Written: Longint; Slice: SliceProc);
  264. begin
  265.   Com_SendBlock(Block, BlockLen, Written);
  266. end; { proc. Com_SendWait }
  267.  
  268. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  269.  
  270. procedure TCommObj.Com_SendString(Temp: ShortString);
  271. var Written: Longint;
  272. begin
  273.   Com_SendBlock(Temp[1], Length(Temp), Written);
  274. end; { proc. Com_SendString }
  275.  
  276. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  277.  
  278. procedure TCommObj.Com_SetFlow(SoftTX, SoftRX, Hard: Boolean);
  279. begin
  280. end; { proc. Com_Setflow }
  281.  
  282. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  283.  
  284. end. { unit Combase }
  285.