Fwd: Re: C program to write to the com port - RESOLVED

From: vittorio (vdemart1_at_tin.it)
Date: 09/09/05

  • Next message: Frank Mueller - emendis GmbH: "Re: How to install Vmware5 in FreeBSD?"
    To: freebsd-questions@freebsd.org
    Date: Fri, 9 Sep 2005 13:53:49 +0200
    
    

    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*,
    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 for
    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

    ---------- Messaggio inoltrato ----------

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

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

    -------------------------------------------------------
    _______________________________________________
    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"


  • Next message: Frank Mueller - emendis GmbH: "Re: How to install Vmware5 in FreeBSD?"

    Relevant Pages

    • Re: cannot find entry symbol _start
      ... > int main ... > on FreeBSD 5.3 with gcc: ... It seems you need to link with some runtime support as well, ...
      (comp.unix.programmer)
    • strange bit-shifting
      ... $ cat test_shl.c ... int main ... FreeBSD 6.2-RELEASE-p2 amd64 ... gcc version 3.4.6 20060305 ...
      (freebsd-hackers)
    • Re: strange bit-shifting
      ... On 04/03/07 12:22, Andriy Gapon wrote: ... int main ... FreeBSD 6.2-RELEASE-p2 amd64 ... gcc version 3.4.6 20060305 ...
      (freebsd-hackers)
    • gcc strangeness
      ... one of my friends has raisen very strange issue regarding gcc rounding: ... Using builtin specs. ... gcc version 2.95.4 20020320 [FreeBSD] ... int main ...
      (freebsd-hackers)
    • Re: data types
      ... Usually short is smaller than an int. ... Your compiler is either *really* old or broken or both. ... recommend either a version of gcc,, or Visual Studio ... Microsoft's Visual Studio Express has an onerous EULA). ...
      (comp.lang.c)