[REBOL] Help with serial port
From: parki:whatevernot at: 30-Aug-2003 10:27
I am trying to control my X.10 devices on my Mac OS X box from Rebol
(which would be cool to the max :-). I am also a relative Rebol newbie,
but loving the experience - very fun.
Anyways, I know the /dev/tty port that I am interested in (I have
determined that this works fine with a Mac OS X app called HomeRun).
This is USA19QI14P1.1. Note that I am using a USB->serial port adaptor,
but I know this all works (as I can turn lights on and off with
HomeRun).
Now, when I look in /dev, there are actually two references to
USA19QI14P1.1:
/dev/tty.USA19QI14P1.1
/dev/cu.USA19QI14P1.1
My understanding is thatthe /dev/tty.* port is the one to use (and that
the /dev/cu.* ports are outdated).
So, I try:
>> system/ports/serial: [tty.USA19QI14P1.1]
== [tty.USA19QI14P1.1]
>> p: open serial://port1/4800/8/none/1
This hangs - it never returns from the open command.
So, I try:
>> system/ports/serial: [cu.USA19QI14P1.1]
== [cu.USA19QI14P1.1]
>> p: open serial://port1/4800/8/none/1
This works - I get a return value for p. I know that I need to set the
X.10 protocol to no handshaking, so:
p/rts-cts: false
Now, the protocol for X.10 is pretty simple - I want to send down two
bytes 0x06 and 0x61, and the device should respond with a checksum. I
am a little unsure how to send down exactly two bytes (with no line
feed or other bytes). So I try (where 0x06 = #"^F" and 0x61 = #"a"):
insert p [ #"^F" #"a" ]
When I send these, I can see a flicker on the USD->serial adaptor LED,
so something is definitely happening.
Once these bytes are sent, I expect to get a checksum byte back from
the device, so I try:
d: copy p
But this hangs.
I am completely stumped - everything seems to be kinda working, but I
cannot get any data back from the X.10 device.
Any help would be appreciated.
parki...