Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 9 Sep 2005 13:53:49 +0200
From:      vittorio <vdemart1@tin.it>
To:        freebsd-questions@freebsd.org
Subject:   Fwd: Re: C program to write to the com port - RESOLVED
Message-ID:  <200509091353.49269.vdemart1@tin.it>

next in thread | raw e-mail | index | archive | help

As a C++ absolute beginner I'm trying to compile your testssc.c file with

g++ testssc.c -o testssc
(under freebsd 5.4, gcc version 3.4.2)

But...
I only get:

SerialPort.C: In function `int main(int, char*)':
SerialPort.C:62: error: invalid conversion from `unsigned char*' to `char*'
SerialPort.C:62: error:   initializing argument 1 of `int snprintf(char*,=20
size_t, const char*, ...)'
SerialPort.C:66: error: `err' undeclared (first use this function)
SerialPort.C:66: error: (Each undeclared identifier is reported only once f=
or=20
each function it appears in.)
SerialPort.C:69:3: warning: no newline at end of file

Could you please help to straighten things up?

Vittorio

=2D---------  Messaggio inoltrato  ----------

Subject: Re: C program to write to the com port - RESOLVED
Date: 02:23, venerd=EC 09 settembre 2005
=46rom: "Paul Hamilton" <paulh@bdug.org.au>
To: freebsd-questions@freebsd.org

=2E....................................................................
=2D------------------------------------------------------------------------=
=2D--
=2D-------
/*  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=3D"/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 =3D 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 &=3D ~CSIZE;  /* Mask the character size bits */
    options.c_cflag |=3D CS8;     /* Select 8 data bits */
    options.c_cflag &=3D ~PARENB; // set no parity
    options.c_cflag &=3D ~CSTOPB; // set 1 stop bit
    options.c_oflag &=3D ~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 |=3D (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=3D%x,%x,%x,%x\n", buf[0],buf[1],buf[2],buf[3]);

  if (write(fd, buf, 3) !=3D 3)
    err(1, "write");

    close(fd);
};
=2D------------------------------------------------------------------------=
=2D--
=2D-------

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 "freebsd-questions-unsubscribe@freebsd.org"

=2D------------------------------------------------------



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200509091353.49269.vdemart1>