EmbeddedRelated.com
Forums

Help with Arcom PC104 relay board

Started by sarpeyer July 10, 2007
Hi, I've got a rather specific request for help with the Linux commands for
the Arcom Aim104 PC104 relay board.

My situation is that I am a research scientist with essentially no Linux
experience. Luckily I have a couple of colleagues who do know about Linux.
Between us, we are setting out on an embedded computing project to try and
automate some lab equipment. I badly wanted to move away from Windows
because I have been automating lab equipment in Windows for far longer
than I care to remember and I think the drivers are often very poor. 

A PC104 format has been suggested as a route to be compatible with a
collaborator's project in the States. They use rugged Windows and Linux
PC104 platforms for remote site installations. I'd really like to hook
into this sometime so I started looking at Linux PC104 solutions. I pretty
rapidly honed in on the Arcom range, for instance the Pegasus, since Arcom
is a preferred supplier where I work.

So, to start off with, we are thinking of purchasing the Pegasus along
with a relay board; that would give us 8 relays and 8 opto-isolated
inputs. For the initial stages of our project this would suffice. Once we
have cracked how to run this board we could of course add other relay
boards, stepper motor boards etc. etc. in the PC104 stack.

A lot of the Pegasus manual went over my head, although the Linux people
seemed fairly confident they would be able to install the Linux
environment from it OK. The embedded Linux environment on the Pegasus
provides Linux commands to call board components, such as the relays,
which is great - I don't have to call some anonymous memory address or
suchlike, like in a DOS environment perhaps. 

So far so good, but it would be really great if somebody out there with
the same board could show us some sample code. If we can see how it's
done, we'd feel much more confident about parting with the cash to buy the
board. 

For instance, a comand like 
int aim104_relay8_set_masked(int fd, unsigned char mask, unsigned char
set)
seems to have rather more attributes than I can handle. 
Is fd the board ID? Is char mask something like 00100000 to specify which
relay to turn on (i.e, number 3)? But then what is the char set attribute?
And so on. The manual didn't say.

If this is all screamingly obvious to you then try to be patient with me.
Remember, I can pass your feedback back to somebody who knows Linux much
better than me. Ultimately it's my project though so I am trying to learn
as much as I can on the fly. Ideally I would learn Linux first, then
embedded Linux, and so on but as with so many things it hasn't turned out
that way.
Incidentally, if you think I could learn Linux rapidly then I'm up to the
challenge, if you could point me in the direction of a suitable book or
online resource. I'd still love to have some help from a fellow Aim104
relay board user though...

Thanks in advance

Sarpeyer