Page 1 of 1
DemoUart does not compile under BlackBox 1.7.2007
Posted: Tue Oct 26, 2021 3:33 am
by Wojtek
DemoUart does not compile under BlackBox 1.7.2007 (core) downlaoded from CPC, because CommV24 is using BYTE, while DemoUart is using SHORTCHAR.
In CommV24 we see:
PROCEDURE SendByte (c: Connection; x: BYTE);
PROCEDURE SendBytes (c: Connection; IN x: ARRAY OF BYTE; beg, len: INTEGER);
In DemoUart we see:
CommV24.SendChars (passConn, SHORT (msg), 0, LEN (msg$));
... which does not compile, of course.
Thanks,
Wojtek
Re: DemoUart does not compile under BlackBox 1.7.2007
Posted: Tue Oct 26, 2021 5:03 am
by luowy
Wojtek wrote:n DemoUart we see:
CommV24.SendChars (passConn, SHORT (msg), 0, LEN (msg$));
... which does not compile, of course.
use SYSTEM.VAL to cast!
if the msg is a char string, you have to convert it to a shorchar string;
The test module may be very verbose, but it covers all forms of msg;
Code: Select all
MODULE TestV24;
IMPORT CommV24, SYSTEM;
(*
In CommV24 we see:
PROCEDURE SendByte (c: Connection; x: BYTE);
PROCEDURE SendBytes (c: Connection; IN x: ARRAY OF BYTE; beg, len: INTEGER);
*)
PROCEDURE DemoUart(IN msg0: ARRAY OF SHORTCHAR);
VAR passConn: CommV24.Connection;
VAR msg2: ARRAY 256 OF SHORTCHAR;
VAR msg3: POINTER TO ARRAY OF SHORTCHAR;
TYPE T0=ARRAY OF BYTE;
TYPE T2=ARRAY 256 OF BYTE;
TYPE T3=POINTER TO ARRAY OF BYTE;
BEGIN
(* CommV24.SendChars (passConn, SHORT (msg), 0, LEN (msg$));*)
CommV24.SendBytes(passConn, SYSTEM.VAL(T0,msg0), 0, LEN(msg0$));
CommV24.SendBytes(passConn, SYSTEM.VAL(T2,msg2), 0, LEN(msg2$));
CommV24.SendBytes(passConn, SYSTEM.VAL(T3,msg3), 0, LEN(msg3$));
END DemoUart;
PROCEDURE DemoUart2(IN msg0: ARRAY OF CHAR);
VAR passConn: CommV24.Connection;
VAR msg2: ARRAY 256 OF CHAR;
VAR msg3: POINTER TO ARRAY OF CHAR;
TYPE T0=ARRAY OF BYTE;
TYPE T2=ARRAY 256 OF BYTE;
TYPE T3=POINTER TO ARRAY OF BYTE;
VAR msg00:POINTER TO ARRAY OF SHORTCHAR;
VAR msg20:ARRAY 256 OF SHORTCHAR;
VAR msg30:POINTER TO ARRAY OF SHORTCHAR;
BEGIN
(* CommV24.SendChars (passConn, SHORT (msg), 0, LEN (msg$));*)
NEW(msg00,LEN(msg0$)+1);
msg00^:=SHORT(msg0$);
msg20:=SHORT(msg2);
NEW(msg30,LEN(msg3$)+1);
msg30^ := SHORT(msg3$);
CommV24.SendBytes(passConn, SYSTEM.VAL(T3,msg00), 0, LEN(msg00$));
CommV24.SendBytes(passConn, SYSTEM.VAL(T2,msg20), 0, LEN(msg20$));
CommV24.SendBytes(passConn, SYSTEM.VAL(T3,msg30), 0, LEN(msg30$));
END DemoUart2;
END TestV24.