[racket] Beginner: advice COM port I/O

From: Richard Cleis (rcleis at mac.com)
Date: Fri Dec 30 18:13:43 EST 2011

I'm not near a Winbox, so I can't try it. Normally, though, I loop the tx to the rx to ensure that the port can read what it writes.  Looping back normally involves little more than connecting pins 2 & 3 on the D-connector, if that is what you are using. 

I would also be wary of the terminator character being sent by displayln; the meter might care about the difference between newline, linefeed, and carriage return.

Unicode may be an issue here, too. You might need to use (string->bytes/utf-8  "V00"). You can look at the signal on an oscilloscope to see if only four characters are being sent at the rate required by the meter.

rac 

On Dec 30, 2011, at 2:59 PM, Gilbert Martinez wrote:

> I've been experimenting with Racket v5.2 and a GW Instek 8212 meter connected to my PC via COM1 (running WinXP SP3).
> 
> The meter responds to simple commands (e.g., "V00"  terminated with a line feed is read voltage) and I've written simple programs in Python, VB, and even QuickBasic  to query the device.
> 
> However, I've had no success in getting the device to respond from inside the Racket REPL.
> 
> I've pasted the code I'm using below:
> 
> #lang racket
> 
> (let*-values 
>     (((in out) (open-input-output-file "COM1"  #:mode 'binary)))
>   (displayln "V00" out)
>   (printf "~C~a~n" #\tab (read-bytes 1 in))
>   (close-input-port in)
>   (close-output-port out)) 
> 
> 
> Running from the interpreter just gives me the output below:
> 	
> #<eof>
> > 
> 
> A tester in-line with the serial cable shows I am actually writing to the port (I see a square-wave signal), so I know that I am at least writing to the port. 
> 
> Any hints or pointers would be appreciated.
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20111230/28848cce/attachment.html>

Posted on the users mailing list.