Re: [ros-users] C++ type conversion error

Top Page
Attachments:
Message as email
+ (text/plain)
+ (text/html)
Delete this message
Reply to this message
Author: Tucker Hermans
Date:  
To: ros-users
CC: ros-users
Subject: Re: [ros-users] C++ type conversion error
Your PI definition shouldn't have the assignment operator:

#define PI = 3.14159265358979323846264338327950288419716

should be

#define PI 3.14159265358979323846264338327950288419716

-Tucker


On Thu, Jul 29, 2010 at 3:09 PM, ibwood <> wrote:

>
> Hi everyone,
>
> I was really close to successfully compiling a code of mine, when I ran
> into
> this error:
>
> "expected constructor, destructor, or type conversion before "=" token"
>
> in lines 126-129 (with ms1, ms2, ms3, ms4 assignments). What does it mean
> and how can I fix it?
>
>
> Here is the code:
>
>
> #define PI = 3.14159265358979323846264338327950288419716
>
> #include "ros/ros.h"
> #include "std_msgs/String.h"
>
> #include <sstream>
> #include <cmath>
> #include <iostream>
>
> #include <sys/ioctl.h>
> #include <sys/types.h>
> #include <sys/stat.h>
> #include <stdio.h>
> #include <limits.h>
> #include <string.h>
> #include <fcntl.h>
> #include <errno.h>
> #include <termios.h>
> #include <unistd.h>
>
> using namespace std;
>
>  const double r=0.125, R=0.55, ratio=127;       // initialize constants

>
>  int main(int argc, char **argv)
>  {
>        unsigned ms1, ms2, ms3, ms4;                    //motor speeds of
> omnimaxbot
>        int i, j, wr, rd, x=0, y=0, z=0, fd, numSent=0;
>        char parseChar[1], stringIn[50];

>
>        // unsigned long bytes_read     = 0;            //Number of bytes
> read from port
>        // unsigned long bytes_written  = 0;            //Number of bytes
> written to the port

>
>        int bStatus;
>        struct termios options;         //Contains various port settings

>
>
>
>        // attempt to open serial port

>
>        fd = open("/dev/HCS12",O_RDWR | O_NOCTTY | O_NDELAY);

>
>        // set settings for serial port

>
>        system("stty -F /dev/HCS12 115200 cs8 -cstopb -parity -icanon hupcl
> -crtscts min 1 time 1");

>
>
>        // check for errors opening port

>
>        if (fd == -1 )

>
>        {

>
>                printf("open_port: Unable to open /dev/HCS12");

>
>        }

>
>
>        else // if no error

>
>        {

>
>                fcntl(fd, F_SETFL,0);

>
>                printf("Test Port HCS12 has been successfully opened and %d
> is the file
> description\n",fd);

>
>        }

>
>        // get current settings of serial ports
>        tcgetattr(fd, &options);

>
>        // set the read and write speeds
>        cfsetispeed(&options, B115200);
>        cfsetospeed(&options, B115200);

>
>        // set parity
>        options.c_cflag &= ~CSIZE;
>        options.c_cflag |= CS8;

>
>        if (bStatus != 0)
>        {
>                cout << "byte status error!" << endl;
>        }

>
>        // initalize node
>        ros::init(argc, argv, "joyTalker");
>        ros::NodeHandle joyTalker;

>
>        // Publish to topic joyChatter
>        ros::Publisher pub =
> joyTalker.advertise<std_msgs::String>("joyChatter",
> 1000);

>
>        ros::Rate r(10);

>
>        while (joyTalker.ok())
>        {
>                parseChar[0]=0;

>
>                for(j=0; j<50; j++)
>                {
>                        stringIn[j]=0;
>                }

>
>                i=0;

>
>                while(parseChar[0] != 10)
>                {
>                        if(i==50)       // exceeds the allowable size
>                        {
>                                break;
>                        }

>
>                        rd = read(fd,parseChar,1);
>                        // printf("%s ",parseChar);
>                        if ((parseChar[0] > 43) && ((parseChar[0] < 58) ||
> (parseChar[0]==32)))
>                        {
>                                stringIn[i]=parseChar[0];
>                                i++;
>                        }

>
>                        if (wr != 0)
>                        {
>                                cout << "byte status error!!!" << endl;
>                        }

>
>                        // kinematics of the omnimaxbot
>                        ms1 =
> ((x/sqrt(2))+y+(R*tan((z/ratio)*(2*PI))))/((2*PI)*r);
>                        ms2 =
> (-(x/sqrt(2))+y+(R*tan((z/ratio)*(2*PI))))/((2*PI)*r);
>                        ms3 =
> ((x/sqrt(2))+y-(R*tan((z/ratio)*(2*PI))))/((2*PI)*r);
>                        ms4 =
> (-(x/sqrt(2))+y-(R*tan((z/ratio)*(2*PI))))/((2*PI)*r);

>
>                        fd = open("/dev/Driver1&2",O_RDWR | O_NOCTTY |
> O_NDELAY);

>
>                        if (fd == -1 )

>
>                        {

>
>                                perror("open_port: Unable to open
> /dev/Driver1&2");

>
>                        }

>
>                        // send to ROS node for communication
>                        numSent = sprintf(stringIn, "%3d,%3d\n", ms1, ms2);
>                        // status[0] = Serial_SendBlock(stringIn, numSent,
> &numSentS);

>
>                        fd = open("/dev/Driver3&4",O_RDWR | O_NOCTTY |
> O_NDELAY);

>
>                        if (fd == -1 )

>
>                        {

>
>                                perror("open_port: Unable to open
> /dev/Driver3&4");

>
>                        }

>
>                        // send to ROS node for communication
>                        numSent = sprintf(stringIn, "%3d,%3d\n", ms3, ms4);
>                        // status[0] = Serial_SendBlock(stringIn, numSent,
> &numSentS);
>                }

>
>                printf("got this string %s\n",stringIn);

>
>                // convert message to string for ROS node communication
>                std_msgs::String msg;
>                std::stringstream ss;
>                ss << stringIn;
>                ROS_INFO("%s", ss.str().c_str());
>                msg.data = ss.str();
>                // publish data under topic joyChatter
>                pub.publish(msg);

>
>                ros::spinOnce();
>        }

>
>
> return 0;
> }
>
> --
> View this message in context:
> http://ros-users.122217.n3.nabble.com/C-type-conversion-error-tp1004701p1004701.html
> Sent from the ROS-Users mailing list archive at Nabble.com.
>
>
> ------------------------------------------------------------------------------
> The Palm PDK Hot Apps Program offers developers who use the
> Plug-In Development Kit to bring their C/C++ apps to Palm for a share
> of $1 Million in cash or HP Products. Visit us here for more details:
> http://p.sf.net/sfu/dev2dev-palm
> _______________________________________________
> ros-users mailing list
>
> https://lists.sourceforge.net/lists/listinfo/ros-users
> _______________________________________________
> ros-users mailing list
>
> https://code.ros.org/mailman/listinfo/ros-users
>