synaser.pas - fixed compiler defines for WIN64 support

git-svn-id: https://svn.code.sf.net/p/synalist/code/trunk@119 7c85be65-684b-0410-a082-b2ed4fbef004
This commit is contained in:
geby 2010-01-27 21:37:13 +00:00
parent 6f399a9260
commit 7c3b22b616

View File

@ -1,9 +1,9 @@
{==============================================================================|
| Project : Ararat Synapse | 007.003.000 |
| Project : Ararat Synapse | 007.004.000 |
|==============================================================================|
| Content: Serial port support |
|==============================================================================|
| Copyright (c)2001-2008, Lukas Gebauer |
| Copyright (c)2001-2010, Lukas Gebauer |
| All rights reserved. |
| |
| Redistribution and use in source and binary forms, with or without |
@ -33,7 +33,7 @@
| DAMAGE. |
|==============================================================================|
| The Initial Developer of the Original Code is Lukas Gebauer (Czech Republic).|
| Portions created by Lukas Gebauer are Copyright (c)2001-2008. |
| Portions created by Lukas Gebauer are Copyright (c)2001-2010. |
| All Rights Reserved. |
|==============================================================================|
| Contributor(s): |
@ -69,9 +69,16 @@ case with my USB modem):
#)
}
//old Delphi does not have MSWINDOWS define.
{$IFDEF WIN32}
{$IFNDEF MSWINDOWS}
{$DEFINE MSWINDOWS}
{$ENDIF}
{$ENDIF}
{$IFDEF FPC}
{$MODE DELPHI}
{$IFDEF WIN32}
{$IFDEF MSWINDOWS}
{$ASMMODE intel}
{$ENDIF}
{define working mode w/o LIBC for fpc}
@ -86,7 +93,7 @@ unit synaser;
interface
uses
{$IFNDEF WIN32}
{$IFNDEF MSWINDOWS}
{$IFNDEF NO_LIBC}
Libc,
KernelIoctl,
@ -156,7 +163,7 @@ const
{:stopbit value for 2 stopbits}
SB2 = 2;
{$IFNDEF WIN32}
{$IFNDEF MSWINDOWS}
const
INVALID_HANDLE_VALUE = THandle(-1);
CS7fix = $0000020;
@ -280,7 +287,7 @@ type
FAtTimeout: integer;
FInterPacketTimeout: Boolean;
FComNr: integer;
{$IFDEF WIN32}
{$IFDEF MSWINDOWS}
FPortAddr: Word;
function CanEvent(Event: dword; Timeout: integer): boolean;
procedure DecodeCommError(Error: DWord); virtual;
@ -298,7 +305,7 @@ type
procedure GetComNr(Value: string); virtual;
function PreTestFailing: boolean; virtual;{HGJ}
function TestCtrlLine: Boolean; virtual;
{$IFNDEF WIN32}
{$IFNDEF MSWINDOWS}
procedure DcbToTermios(const dcb: TDCB; var term: termios); virtual;
procedure TermiosToDcb(const term: termios; var dcb: TDCB); virtual;
{$ENDIF}
@ -313,7 +320,7 @@ type
{: data Control Block with communication parameters. Usable only when you
need to call API directly.}
DCB: Tdcb;
{$IFNDEF WIN32}
{$IFNDEF MSWINDOWS}
TermiosStruc: termios;
{$ENDIF}
{:Object constructor.}
@ -778,7 +785,7 @@ begin
DoStatus(HR_SerialClose, FDevice);
end;
{$IFDEF WIN32}
{$IFDEF MSWINDOWS}
function TBlockSerial.GetPortAddr: Word;
begin
Result := 0;
@ -878,7 +885,7 @@ begin
end;
procedure TBlockSerial.Connect(comport: string);
{$IFDEF WIN32}
{$IFDEF MSWINDOWS}
var
CommTimeouts: TCommTimeouts;
{$ENDIF}
@ -892,7 +899,7 @@ begin
FBuffer := '';
FDevice := comport;
GetComNr(comport);
{$IFDEF WIN32}
{$IFDEF MSWINDOWS}
SetLastError (sOK);
{$ELSE}
{$IFNDEF FPC}
@ -901,7 +908,7 @@ begin
fpSetErrno(sOK);
{$ENDIF}
{$ENDIF}
{$IFNDEF WIN32}
{$IFNDEF MSWINDOWS}
if FComNr <> PortIsClosed then
FDevice := '/dev/ttyS' + IntToStr(FComNr);
// Comport already owned by another process? {HGJ}
@ -968,7 +975,7 @@ begin
end;
function TBlockSerial.SendBuffer(buffer: pointer; length: integer): integer;
{$IFDEF WIN32}
{$IFDEF MSWINDOWS}
var
Overlapped: TOverlapped;
x, y, Err: DWord;
@ -983,7 +990,7 @@ begin
Flush;
RTS := True;
end;
{$IFNDEF WIN32}
{$IFNDEF MSWINDOWS}
result := FileWrite(integer(Fhandle), Buffer^, Length);
serialcheck(result);
{$ELSE}
@ -1085,7 +1092,7 @@ begin
end;
function TBlockSerial.RecvBuffer(buffer: pointer; length: integer): integer;
{$IFNDEF WIN32}
{$IFNDEF MSWINDOWS}
begin
Result := 0;
if PreTestFailing then {HGJ}
@ -1407,7 +1414,7 @@ begin
RecvStreamSize(Stream, Timeout, x);
end;
{$IFNDEF WIN32}
{$IFNDEF MSWINDOWS}
function TBlockSerial.WaitingData: integer;
begin
{$IFNDEF FPC}
@ -1447,7 +1454,7 @@ begin
Result := Waitingdata;
end;
{$IFNDEF WIN32}
{$IFNDEF MSWINDOWS}
function TBlockSerial.SendingData: integer;
begin
SetSynaError(sOK);
@ -1467,7 +1474,7 @@ begin
end;
{$ENDIF}
{$IFNDEF WIN32}
{$IFNDEF MSWINDOWS}
procedure TBlockSerial.DcbToTermios(const dcb: TDCB; var term: termios);
var
n: integer;
@ -1590,7 +1597,7 @@ begin
end;
{$ENDIF}
{$IFNDEF WIN32}
{$IFNDEF MSWINDOWS}
procedure TBlockSerial.SetCommState;
begin
DcbToTermios(dcb, termiosstruc);
@ -1607,7 +1614,7 @@ begin
end;
{$ENDIF}
{$IFNDEF WIN32}
{$IFNDEF MSWINDOWS}
procedure TBlockSerial.GetCommState;
begin
SerialCheck(tcgetattr(integer(FHandle), termiosstruc));
@ -1626,7 +1633,7 @@ end;
procedure TBlockSerial.SetSizeRecvBuffer(size: integer);
begin
{$IFDEF WIN32}
{$IFDEF MSWINDOWS}
SetupComm(Fhandle, size, 0);
GetCommState;
dcb.XonLim := size div 4;
@ -1639,7 +1646,7 @@ end;
function TBlockSerial.GetDSR: Boolean;
begin
ModemStatus;
{$IFNDEF WIN32}
{$IFNDEF MSWINDOWS}
Result := (FModemWord and TIOCM_DSR) > 0;
{$ELSE}
Result := (FModemWord and MS_DSR_ON) > 0;
@ -1648,7 +1655,7 @@ end;
procedure TBlockSerial.SetDTRF(Value: Boolean);
begin
{$IFNDEF WIN32}
{$IFNDEF MSWINDOWS}
ModemStatus;
if Value then
FModemWord := FModemWord or TIOCM_DTR
@ -1670,7 +1677,7 @@ end;
function TBlockSerial.GetCTS: Boolean;
begin
ModemStatus;
{$IFNDEF WIN32}
{$IFNDEF MSWINDOWS}
Result := (FModemWord and TIOCM_CTS) > 0;
{$ELSE}
Result := (FModemWord and MS_CTS_ON) > 0;
@ -1679,7 +1686,7 @@ end;
procedure TBlockSerial.SetRTSF(Value: Boolean);
begin
{$IFNDEF WIN32}
{$IFNDEF MSWINDOWS}
ModemStatus;
if Value then
FModemWord := FModemWord or TIOCM_RTS
@ -1701,7 +1708,7 @@ end;
function TBlockSerial.GetCarrier: Boolean;
begin
ModemStatus;
{$IFNDEF WIN32}
{$IFNDEF MSWINDOWS}
Result := (FModemWord and TIOCM_CAR) > 0;
{$ELSE}
Result := (FModemWord and MS_RLSD_ON) > 0;
@ -1711,14 +1718,14 @@ end;
function TBlockSerial.GetRing: Boolean;
begin
ModemStatus;
{$IFNDEF WIN32}
{$IFNDEF MSWINDOWS}
Result := (FModemWord and TIOCM_RNG) > 0;
{$ELSE}
Result := (FModemWord and MS_RING_ON) > 0;
{$ENDIF}
end;
{$IFDEF WIN32}
{$IFDEF MSWINDOWS}
function TBlockSerial.CanEvent(Event: dword; Timeout: integer): boolean;
var
ex: DWord;
@ -1753,7 +1760,7 @@ begin
end;
{$ENDIF}
{$IFNDEF WIN32}
{$IFNDEF MSWINDOWS}
function TBlockSerial.CanRead(Timeout: integer): boolean;
var
FDSet: TFDSet;
@ -1794,7 +1801,7 @@ begin
end;
{$ENDIF}
{$IFNDEF WIN32}
{$IFNDEF MSWINDOWS}
function TBlockSerial.CanWrite(Timeout: integer): boolean;
var
FDSet: TFDSet;
@ -1858,7 +1865,7 @@ end;
procedure TBlockSerial.EnableRTSToggle(Value: boolean);
begin
SetSynaError(sOK);
{$IFNDEF WIN32}
{$IFNDEF MSWINDOWS}
FRTSToggle := Value;
if Value then
RTS:=False;
@ -1883,7 +1890,7 @@ end;
procedure TBlockSerial.Flush;
begin
{$IFNDEF WIN32}
{$IFNDEF MSWINDOWS}
SerialCheck(tcdrain(integer(FHandle)));
{$ELSE}
SetSynaError(sOK);
@ -1893,7 +1900,7 @@ begin
ExceptCheck;
end;
{$IFNDEF WIN32}
{$IFNDEF MSWINDOWS}
procedure TBlockSerial.Purge;
begin
{$IFNDEF FPC}
@ -1921,7 +1928,7 @@ end;
function TBlockSerial.ModemStatus: integer;
begin
Result := 0;
{$IFNDEF WIN32}
{$IFNDEF MSWINDOWS}
{$IFNDEF FPC}
SerialCheck(ioctl(integer(FHandle), TIOCMGET, @Result));
{$ELSE}
@ -1938,7 +1945,7 @@ end;
procedure TBlockSerial.SetBreak(Duration: integer);
begin
{$IFNDEF WIN32}
{$IFNDEF MSWINDOWS}
SerialCheck(tcsendbreak(integer(FHandle), Duration));
{$ELSE}
SetCommBreak(FHandle);
@ -1949,7 +1956,7 @@ begin
{$ENDIF}
end;
{$IFDEF WIN32}
{$IFDEF MSWINDOWS}
procedure TBlockSerial.DecodeCommError(Error: DWord);
begin
if (Error and DWord(CE_FRAME)) > 1 then
@ -2050,7 +2057,7 @@ end;
function TBlockSerial.SerialCheck(SerialResult: integer): integer;
begin
if SerialResult = integer(INVALID_HANDLE_VALUE) then
{$IFDEF WIN32}
{$IFDEF MSWINDOWS}
result := GetLastError
{$ELSE}
{$IFNDEF FPC}
@ -2236,7 +2243,7 @@ end;
{$ENDIF}
{----------------------------------------------------------------}
{$IFDEF WIN32}
{$IFDEF MSWINDOWS}
function GetSerialPortNames: string;
var
reg: TRegistry;
@ -2265,7 +2272,7 @@ begin
end;
end;
{$ENDIF}
{$IFNDEF WIN32}
{$IFNDEF MSWINDOWS}
function GetSerialPortNames: string;
var
Index: Integer;