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

____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to