Forum

RS 232 LowLevel

now it’s me needing help.

i have a WS 2308 Weatherstation which is connected via RS232 and already working with the provided software.
protocol isn’t open but pretty well sniffed and wiki’d by other users of this cheap weather station.

PortMon allows me to sniff the communication.

i didn’t get communication with vvvv by now. may be the key ^to that problem is DTR & RTS:
DTR and RTS are not used for handshake. They are steady DTR at negative voltage and RTS at positive voltage.

Since there is no ground it seems that the WS2300 uses the DTR and RTS to define high and low. DTR must be low and RTS must be high for the communication to work. ^

portmon reports this with the provided software:

0 0.04236349 heavy weather.e IRP_MJ_CREATE VCP1 SUCCESS Options: Open
1 0.00000262 heavy weather.e IOCTL_SERIAL_GET_BAUD_RATE VCP1 SUCCESS
2 0.00000134 heavy weather.e IOCTL_SERIAL_GET_LINE_CONTROL VCP1 SUCCESS
3 0.00000114 heavy weather.e IOCTL_SERIAL_GET_CHARS VCP1 SUCCESS
4 0.00000109 heavy weather.e IOCTL_SERIAL_GET_HANDFLOW VCP1 SUCCESS
5 0.00294674 heavy weather.e IOCTL_SERIAL_SET_BAUD_RATE VCP1 SUCCESS Rate: 2400
6 0.00297578 heavy weather.e IOCTL_SERIAL_SET_RTS VCP1 SUCCESS
7 0.00298839 heavy weather.e IOCTL_SERIAL_SET_DTR VCP1 SUCCESS
8 0.00205017 heavy weather.e IOCTL_SERIAL_SET_LINE_CONTROL VCP1 SUCCESS StopBits: 1 Parity: NONE WordLength: 8
9 0.00000159 heavy weather.e IOCTL_SERIAL_SET_CHAR VCP1 SUCCESS EOF:0 ERR:0 BRK:0 EVT:0 XON:11 XOFF:13
10 0.00285957 heavy weather.e IOCTL_SERIAL_SET_HANDFLOW VCP1 SUCCESS Shake:1 Replace:40 XonLimit:129 XoffLimit:129
11 0.00000136 heavy weather.e IOCTL_SERIAL_SET_QUEUE_SIZE VCP1 SUCCESS InSize: 1298 OutSize: 1298
12 0.00000115 heavy weather.e IOCTL_SERIAL_SET_TIMEOUTS VCP1 SUCCESS RI:-1 RM:0 RC:0 WM:0 WC:0
13 0.00000164 heavy weather.e IOCTL_SERIAL_GET_BAUD_RATE VCP1 SUCCESS
14 0.00000143 heavy weather.e IOCTL_SERIAL_GET_LINE_CONTROL VCP1 SUCCESS
15 0.00000125 heavy weather.e IOCTL_SERIAL_GET_CHARS VCP1 SUCCESS
16 0.00000119 heavy weather.e IOCTL_SERIAL_GET_HANDFLOW VCP1 SUCCESS
17 0.00269025 heavy weather.e IOCTL_SERIAL_SET_BAUD_RATE VCP1 SUCCESS Rate: 2400
18 0.00321782 heavy weather.e IOCTL_SERIAL_SET_RTS VCP1 SUCCESS
19 0.00272427 heavy weather.e IOCTL_SERIAL_SET_DTR VCP1 SUCCESS
20 0.00295292 heavy weather.e IOCTL_SERIAL_SET_LINE_CONTROL VCP1 SUCCESS StopBits: 1 Parity: NONE WordLength: 8
21 0.00000152 heavy weather.e IOCTL_SERIAL_SET_CHAR VCP1 SUCCESS EOF:0 ERR:0 BRK:0 EVT:0 XON:11 XOFF:13
22 0.00294538 heavy weather.e IOCTL_SERIAL_SET_HANDFLOW VCP1 SUCCESS Shake:1 Replace:40 XonLimit:129 XoffLimit:129
23 0.00000119 heavy weather.e IOCTL_SERIAL_SET_QUEUE_SIZE VCP1 SUCCESS InSize: 1298 OutSize: 1298
24 0.00000108 heavy weather.e IOCTL_SERIAL_SET_TIMEOUTS VCP1 SUCCESS RI:-1 RM:0 RC:0 WM:0 WC:0
25 0.00293181 heavy weather.e IOCTL_SERIAL_SET_RTS VCP1 SUCCESS
26 0.00296685 heavy weather.e IOCTL_SERIAL_CLR_DTR VCP1 SUCCESS

having set vvvv to 2400baud, 8bit, 1 stopbit, no parity i am wondering about the settings of software handshaking and hardware handshaking.

XON:11 XOFF:13
seems to indicate the setting XonXoff for sowtware handshaking.

i don’t get managed to SET_HANDFLOW and SET_QUEUE_SIZE to the values you see above.

10 0.00274028 vvvv.exe IOCTL_SERIAL_SET_HANDFLOW VCP1 SUCCESS Shake:1 Replace:43 XonLimit:512 XoffLimit:1
11 0.00000177 vvvv.exe IOCTL_SERIAL_SET_QUEUE_SIZE VCP1 SUCCESS InSize: 2048 OutSize: 2048
12 0.00004220 vvvv.exe IOCTL_SERIAL_SET_TIMEOUTS VCP1 SUCCESS RI:1 RM:0 RC:1 WM:0 WC:0

any help possible?

ok. the WS2300 seems to be different from the WS2000 which very old versions of vvvv supported. and this protocol is another candidate for the list of most unnecessary bizarr rs232 complications.

i suspect an electrical issue. try checking DTR & RTS with a voltmeter with the provided application running and the weather station connected.

now check if you can simulate the same voltages with vvvv.

i somehow expect this might not work, as there is no option
SupplyReversePower, but one of the other defaults might do.

as DTR & RTS do not seem to be used for data, you could try connecting them directly to +12V and -12V the PCs power

or use another rs232 port with the supplied software just for power and another rs232 port with vvvv for the data.

integrating a new option in the rs232 node would be probably trivial, so we can think of integrating it into the next version.

thx o"schatz",

for your prompt and detailed answer. while i can’t wait for a next beta i tried with beta1 (!) which i had around here. didn’t find that node in there…

but i found a possible workaround.
the provided software writes a history file to disk so lets do the RegExpr again…