DemoUart does not compile under BlackBox 1.7.2007

All except GUI problems
Post Reply
Wojtek
Posts: 1
Joined: Thu Nov 27, 2014 3:11 am
Location: Rochester, New York, USA
Contact:

DemoUart does not compile under BlackBox 1.7.2007

Post 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
luowy
Posts: 87
Joined: Thu Dec 17, 2015 1:32 pm

Re: DemoUart does not compile under BlackBox 1.7.2007

Post 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.
Post Reply