Hi, Thanks to the patience and persistens of Giorgos, Garret and David, I now have a *sample* program that will transmit 3 bytes of data (mini-ssc protocol), via a serial port to a 8 channel servo controller board. I will continue to develop this as needed.
DISCLAIMER: This is being posted for archival purposes, and no doubt can use a lot of improvement! ---------------------------------------------------------------------------- -------- /* Name: testssc.c * compile with: gcc testssc.c -o testssc * * Your serial cable should be plugged into com port 1. * You only need the pin 3 and pin 5 (DB9) plugged into the controller. * The servo should be plugged into the first servo channel/port. * This test program when run will move the servo from midrange, * to position 01. This is for demonstrational use only. * Tested with FreeBSD 5.4 * Paul Hamilton 8th Aug 2005 */ #include <sys/time.h> #include <sys/ioctl.h> #include <errno.h> #include <fcntl.h> #include <termios.h> /*Originally it was termio.h*/ #include <stdio.h> #include <unistd.h> // Use serial port 0 (com port 1) static char *opt_comport="/dev/cuaa0"; int main(int argc, char **argv) { int fd; struct termios options; unsigned char buf[4]; // ok, lets try opening the com port printf("Opening Com port: %s\n\n", opt_comport); if((fd = open(opt_comport, O_RDWR | O_NOCTTY )) < 0) { printf("Problems opening %s\n", opt_comport); return (-1); } // set the required com port parrameters options.c_cflag &= ~CSIZE; /* Mask the character size bits */ options.c_cflag |= CS8; /* Select 8 data bits */ options.c_cflag &= ~PARENB; // set no parity options.c_cflag &= ~CSTOPB; // set 1 stop bit options.c_oflag &= ~OPOST; // Raw output tcgetattr(fd, &options); /* * Set the baud rates to 9600... */ cfsetispeed(&options, B9600); cfsetospeed(&options, B9600); /* * Enable the receiver and set local mode... */ options.c_cflag |= (CLOCAL | CREAD); /* * Set the new options for the port... */ tcsetattr(fd, TCSANOW, &options); // ok, lets transmit our 3 bytes through com port 1 snprintf(buf,4,"%c%c%c%c",0xff,0x00,0x01,0); printf("buf=%x,%x,%x,%x\n", buf[0],buf[1],buf[2],buf[3]); if (write(fd, buf, 3) != 3) err(1, "write"); close(fd); }; ---------------------------------------------------------------------------- -------- Cheers, Paul Hamilton PS. I have three books on programming in C winging their way to Australia. I have a lot to learn :-) _______________________________________________ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"