On 08/29/16 18:00, Remco wrote:
Op 08/29/16 om 14:28 schreef Martijn Rijkeboer:
Hi,

I'm having trouble using the Stronglink SL500 RFID reader with OpenBSD.
The SL500 is a USB based RFID reader that attaches to ucom. When I
write data to it and try to read the response, I'm often getting
wrong results. Sometimes the program even lock and unplugging the
device is the only option. I'm using the test program attached below.
This program should produce the following output (as it always does on
Linux):

$ ./test
received: 0xaa 0xbb 0x06 0x00 0x11 0x12 0x07 0x01 0x00 0x05
received: 0xaa 0xbb 0x06 0x00 0x11 0x12 0x07 0x01 0x00 0x05


When I run the program on OpenBSD-current (AMD64) I get the following:

$ ./test
received: 0xaa 0xbb 0x06 0x00 0x11 0x12 0x07 0x01 0x00 0x05
received: 0xaa 0xbb 0x06 0x00 0x11 0x12 0x07 0x01 0x00 0x05
$ ./test
received: 0x0a 0xbb 0x06 0x00 0x00 0x00 0x07 0x01 0x02 0x04
received: 0xaa 0xbb 0x06 0x00 0x11 0x12 0x07 0x01 0x00 0x05
$ ./test
received: 0xaa 0xbb 0x06 0x00 0x11 0x12 0x07 0x01 0x00 0x05
received: 0x0a 0xaa 0xbb 0x06 0x00 0x11 0x12 0x07 0x01 0x00
$ ./test
received: 0xaa 0xbb 0x06 0x00 0x11 0x12 0x07 0x01 0x00 0x05
received: 0x0a 0xaa 0xbb 0x06 0x00 0x11 0x12 0x07 0x01 0x00


In the output above the first run is correct. In the second run the
first response is incorrect. In the third and fourth run the second
response is incorrect. Any suggestions what is wrong? To me it looks
like a bug in ucom or uslcom, but I could also be doing something
wrong...

I've included the test program, lsusb output and dmesg output below.


Kind regards,


Martijn Rijkeboer



Test program
============


O_NONBLOCK: not sure this is necessary.

The O_NONBLOCK is indeed not necessary.


Check return values, at least of read and write (EAGAIN, partial
read/write ?),
they will probably tell you what's wrong.

None of the calls returned -1, but issuing a `tcflush(fd, TCIOFLUSH)'
before sending the first data fixed the problem. Thanks for your time.

Kind regards,


Martijn Rijkeboer

Reply via email to