rikirobot——STM32hardware.h结合串口和ros_lib

roslib是所有ROS客户机库和工具的基本依赖项

#pragma once//由编译器提供保证:同一个文件不会被包含多次,保证头文件只被编译一次。注意这里所说的“同一个文件”是指物理上的一个文件,而不是指内容相同的两个文件。
#include "hardwareserial.h"
HardwareSerial Serial(SERIAL1);
#define SERIAL_CLASS  HardwareSerial

class STM32Hardware {
  public:
  	STM32Hardware(SERIAL_CLASS* io , long baud= 57600){
      iostream = io;//输入输出流
      baud_ = baud;
    }
    STM32Hardware()
    {
      iostream = &Serial;
      baud_ = 57600;
    }
    STM32Hardware(STM32Hardware& h){
	  this->iostream = iostream;
      this->baud_ = h.baud_;
    }

    void setBaud(long baud){
      this->baud_= baud;
    }

    int getBaud(){return baud_;}

    void init(){
      iostream->begin(baud_);
    }

    int read(){
      if(iostream->available()){
	  	return iostream->read();
      }else{
	    return -1;
      }
    };

    void write(uint8_t* data, int length){
      for(int i=0; iwrite(data[i]);
      }
    }

    unsigned long time(){return millis();}

  protected:
    SERIAL_CLASS* iostream;
    long baud_;
};

struct与class:
struct中的默认访问控制权限是public,而class的默认访问控制权限是private
为了隐藏结构体内的成员,添加访问控制标识:

struct RecTangle{
private:
int width; int height; 
int pos_x; int pos_y;
public:
int Right(); // get right
int Bottom(); // get bottom
int Left(); // get left
int Top(); // get top
};

如果用class来代替struct,则需要添加访问控制标识.
比如用class来定义类C结构体

class RecTangle{
public:
int width; int height; 
int pos_x; int pos_y;
};

iostream.h与iostream
iostream.h是包含输入/输出流处理的头文件,iostream就什么都不是了
但用iostream要加名词空间namespace

#include 

或者是

#include 
 using namespace std;

二者都行。

C++中为了避免名字定义冲突,特别引入了“名字空间的定义”,即namespace。当代码中用时,输出可直接引用cout继承C语言的标准库文件,未引入名字空间定义,所以可直接使用。

当代码中引入时,输出需要引用std::cout<时,引入std::有以下方法:

1.
using namespace std;
cout<

2.
using std::cout;
cout<

3.最基本的
std::cout<

通常用#include 时,要用using namespace std;。
如果不用这个,就要在使用cout时,用后两种方法了。其他头文件也是同样的道理。

java中public、private、protected区别
类中的数据成员和成员函数据具有的访问权限包括:public、private、protect、friendly(包访问权限)
1、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用
2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。
3、protected:protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。

priavte 本类可见

public 所有类可见

protected 本包和所有子类都可见(本包中的子类非子类均可访问,不同包中的子类可以访问,不是子类不能访问)

friendly 本包可见(即默认的形式)(本包中的子类非子类均可访问,不同包中的类及子类均不能访问)

你可能感兴趣的:(rikirobot——STM32hardware.h结合串口和ros_lib)