From 03693dc0f40a5a27d53091ea5321ec8bea747066 Mon Sep 17 00:00:00 2001 From: Vladimir Date: Sun, 24 May 2026 16:31:49 +0300 Subject: [PATCH] Stub CAT serial on macOS --- CATSerial.pas | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/CATSerial.pas b/CATSerial.pas index 499a0bc..c68549b 100644 --- a/CATSerial.pas +++ b/CATSerial.pas @@ -18,11 +18,17 @@ unit CATSerial; {$MODE Delphi} {$ENDIF} +{$IFDEF DARWIN} + {$DEFINE CAT_SERIAL_STUB} +{$ENDIF} + interface uses Classes, SysUtils, + {$IFNDEF CAT_SERIAL_STUB} Serial, // FPC cross-platform serial unit + {$ENDIF} {$IFDEF MSWINDOWS}Windows,{$ENDIF} SyncObjs, CATEngine; @@ -43,6 +49,10 @@ type Parity: TCATSerialParity; end; + {$IFDEF CAT_SERIAL_STUB} + TSerialHandle = PtrInt; + {$ENDIF} + TCATSerialPort = class; { TCATSerialThread — per-port listener thread } @@ -107,11 +117,16 @@ end; function TCATSerialThread.TryOpenPort: Boolean; var + {$IFNDEF CAT_SERIAL_STUB} cfg: TCATSerialConfig; h: TSerialHandle; par: TParityType; + {$ENDIF} begin Result := False; + {$IFDEF CAT_SERIAL_STUB} + Exit; + {$ELSE} cfg := FOwner.Config; h := SerOpen(cfg.PortName); {$IFDEF MSWINDOWS} @@ -131,6 +146,7 @@ begin FHandle := h; FOwner.Handle := h; Result := True; + {$ENDIF} end; procedure TCATSerialThread.ProcessBuffer; @@ -156,6 +172,9 @@ var ch: Byte; n: LongInt; begin + {$IFDEF CAT_SERIAL_STUB} + Exit; + {$ELSE} if not TryOpenPort then Exit; try while not Terminated do begin @@ -173,6 +192,7 @@ begin FOwner.Handle := -1; {$ENDIF} end; + {$ENDIF} end; { ── TCATSerialPort ────────────────────────────────────────────────────────── } @@ -220,6 +240,9 @@ end; procedure TCATSerialPort.SendStr(const S: string); var buf: AnsiString; begin + {$IFDEF CAT_SERIAL_STUB} + Exit; + {$ELSE} {$IFDEF MSWINDOWS} if FHandle = INVALID_HANDLE_VALUE then Exit; {$ELSE} @@ -234,6 +257,7 @@ begin // ignore write errors (port may have been closed) end; FLock.Release; + {$ENDIF} end; { ── TCATSerialManager ─────────────────────────────────────────────────────── }