As I mentioned last month, I bid on and won an 8×8 AV matrix switcher on eBay. The switcher arrived the Monday following the Saturday that I won it (speediest delivery ever!), so I took it home and plugged it all in.
I rummaged around for a serial cable to connect the switcher to boron, the Ubuntu file server and found something that I thought would do the job. Sadly the switcher has a male connector, whereas for a standard serial cable it should be a male connection on each end. So, slightly disappointed, I went ahead and ordered a M-F serial extension from eBay, assuming that this would do the job. This attempt also failed – the matrix switcher would not respond to any of the commands that I thought it should, and nothing was being returned either. After a bit more research in the little documentation that I had I noticed that the switcher requires a cross-over cable AKA a null modem cable.
The next cable I ordered was a M-M cable, so I got an M-F converter at the same time. Success! I now have the ability to control the matrix switcher via the RS232 on boron.
The following weekend I set about writing a prototype of the software to communicate with the switcher. The switcher operates in such a way that state is important, since switching channels requires at least 2 commands and at any time someone can press a button on the front panel to issue any command.
When a button is pressed on the front, a message is sent via the serial port to indicate the action that has taken place. Similarly, when an instruction is sent to the unit over the serial connection a reply is received indicating whether that command succeeded or not. Sometimes the switcher doesn’t notice that it’s been sent an instruction, so to get around that I ended up sending the same message up to 3 times.
The resulting prototype works quite well. I may release the source code at some point.
Here’s a video demonstrating the software and the switcher:
4 thoughts on “The VAMS-0808 matrix switcher and determining its protocol – part 2”
I enjoyed your video of the Vams and interface. I have been working on interfacing the Vams to a Symetrix Symnet 8X8 DSP unit at my job. I was interested in the fact that you have also discovered that the Vams will miss a serial command from time to time. I thought it was something I was doing wrong. It works fine about 8 out of 10 times but what I need is 100% of the time. I am surprised in the lack of documentation that the company gives in regards to the serial protocol which I derived using hyperterminal in windows. I am now concidering building and programing a small microcomputer RS232 interface using my own switching code protocol and switch the Vams using input switching pins 9 through 13 on the 15 pin link connector. The switch codes can be recorded by monitoring the output pins 1 through 5 which are open collector outputs. Pin 5 is the sync pulse and 1-4 are the data. I would be interested in finding out if you have discovered why the Vams serial interface is so unpredictable.
I can only hazard a guess that it is because of poor firmware/hardware design – perhaps the input buffer becomes temporarily locked, so any incoming data on the serial line just gets lost.
Their own control software actually takes the defect into account, as it sends every command 3 times. My version works quite reliably now, but I ended up writing it using an event-driven model which wouldn’t really be practical in languages that don’t have notions of events.
Interesting idea, using the link connector. I didn’t think of that. Let’s hope that method works a little more reliably. I’m going to be sticking to the standard RS232 interface though, since it works well enough to suit my needs.
hi l like to know what you have all hooked up to the device for audio and video and can you show it in action, and can you make 1 signal goto all outputs or so I only seen pics but never seen it all in action
can this also run under windows home server? or do you need to run Linux or can I write same program to run under windows I started kinda a while ago for my projector but was writing in visual basic 6.0