How to Receive ASCII Data

How to Receive ASCII Data

The example below is an alternative the INPUT command in the ACR controller. The routine will read one ASCII character at a time from the PC or other device. To end the transmission from the third-party controller, we look for a carriage return  (ASC 13) as in  IF (ASC($V0)=13) within the ReceiveData subroutine. This can then allow the programmer to continue program execution if desired as compared to the INPUT command which inhibits program execution.

Notes: The ACR9000's USB port uses Stream1. If using Ethernet, ACR-View will connect to the first available of the 4 streams (Stream2 - 5).

To see the stream number when connected, type STREAM

Below sample uses Stream#3 while leaving ACR-View with Stream#2 connected. This will not run from ACR-View's terminal emulator. Use connect via HyperTerminal or Putty (use Port 5002 which is the ASCII port)

If testing with PBOOT within the program, use ACR-View and CLOSE #3 before doing a REBOOT command to test the power-up function.

PROGRAM

DIM LV4

DIM $V(10,50)

OPEN "STREAM3:" AS #3 : REM Open communication to PC

_loop

print #3, "enter something"

$V2="" : GOSUB ReceiveData

print #3, "something is: ",$V1

goto loop

 

 

_ReceiveData

$V1=""

WHILE (3)

 IF (KBHIT(3))

 $V2=GETCH(3)

 IF (ASC($V2)=13)  : rem ASC 13 is carriage return

  BREAK  : REM Break out of the WHILE loop

 ELSE

 $V1=$V1+$V2

 endif

 endif

WEND

RETURN

ENDP

 

jw 12/2016

updated 3/7/17jh