Serial Communication Spec

Hi All,

I just received and powered on the contact closure board (ZSCAN16PROXR) and the relay expansion board (XR85) and having some problems / confusions

I installed the latest and greatest FTDI VCP drivers as off this posting.

Base Station Issues
When I launch the Base Station software after plugging in the ZSCAN16PROXR to my computer the Base Station software says it cannot connect to my device and then starts cycling through other baud rates in hopes it finds it. I know that I have the correct COM port selected as my C# test application is able to communicate with it and see the contact closure value change as I press the button wired to the board. Why is it cycling through the baud rates when I can successfully communicate with it using my own home grown software?

API Issues
I’m confused on the API a bit. I have been following the ProXr Quick Start Guide for the command set I can send to the board to get the status of specific contact closures. While the commands are correctly being processed by the board the response doesn’t seem to be lining up with those documented in the quick start guide. Specific it’s the header value from the board transmits to the host. For example, when I query the status of the bank 1 contact closures I send the following command

0xAA, 0x03, 0xFE,0xAF,0x00, 0x5A

The response as documented in the quick start guide says I should receive a message with a header value of 0xAA, but I am receiving a header value of 0x3F. The full response I receive when the contact is open is:

0x3F, 0x01, 0x00, 0x3F

I get the same response header value for all other commands I send the board including the “Test Communications Response Command (0xAA, 0x02, 0xFE, 0x21, 0xCB)” that I found on the website. Why is this? Is my board running older firmware or is the Quick Start Guide out of date?

Also Is there a spread sheet or some kind of website that details all the commands/API that can be sent to the controller and the expected response we should receive?

Hi,

The issues with the header byte I would attribute to buffer overrun in your C# application. It’s hard to say for sure but that would be my speculation since the checksum is 0x3F and coincidentally the header byte you are seeing is 0x3F as well. Seems like possibly your receive buffer for reading data back from the device may be too small.

As for Base Station not being able to communicate it is important to note that only one application can connect to a COM port at a time. If your software is connected to the board then Base Station will not be able to connect. Make sure to close all other software prior to running Base Station.

Firmware in these devices has been stable and unchanged for many years.

Thank you,
Travis Elliott

Thanks for the reply. A restart of my machine was able to get the base station software working properly with the device. As for the API header value being different in the response message from the device, I figure out that C# was re-encoding the data when calling SerialPort::ReadExisting(). Everything is working great now on my end.

1 Like