[ros-users] C++ type conversion error

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: ibwood
Date:  
To: ros-users
Subject: [ros-users] C++ type conversion error

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