RB-530 Buttons sticking in .NET


I recently received a response box to use in our experiments here at the School of Psychology. After downloading the example XIDlib for .NET I made a quick test program showing the button states. Everything worked well and it was very straightforward getting it to receive data from the RB but when I started button mashing (pressing the buttons very fast) some of the states got very confused. This is very repeatable, and wondered whether this was a problem with the onboard PIC logic or something going on with the serial communication?
When debugging with the buttons in this confused state, I can see that the message received via the serial port when I release a single button gets sent as a button press, and vice versa.
Any ideas? Many thanks,


Matt, I doubt that the problem is in the hardware or its firmware as it’s been around and tested for several years now.

Alas, the .NET library is not officially supported by us. It was graciously contributed Mr. Ben Vaessen of Launch IT in Holland. If you do find a bug in it or find ways to improve it, we’d be very grateful if you can send the changes.

When you say “pressing the buttons very fast”, how fast are you talking about it?

Hi Hisham, thanks for your reply.
I’m talking about 5-10 button presses a second or so, but not on the same button (button mashing all 5). I just couldn’t really see what the problem in the .NET code would be since it is simply a serial connection to the box, receiving data via the emulated USB drivers. Once in the confused state, I can hold a button down, put a breakpoint, and then release the button and clearly see the corresponding data sent via the serial port. And that data is incorrect - opposite polarity, and it can even say the wrong button number if another button is also in this ‘confused’ state.

I’m assuming I would get precisely the same results using any other serial port connection too, e.g. C++ or Matlab. Obviously, button mashing is not a typical experimental style, but I need to be able to use it in our experiments here and expect great reliability from it.
Any ideas what I can do to make this work for us here? I am willing to use any programming language to get the job done.


The RB Series response pads can easily handle 25-50 presses, depending on the protocol, e.g. ASCII vs. XID modes. The problem is most likely in the .NET code.

If you can, try the C++ code that we released. At least, it’s a library that was developed in-house, and we support it; if you find a bug, we’ll fix it.