智能车的主板(上位机)是小车控制模块的核心,负责路况采集、行驶行为决策等重要功能。下位机(单片机)是小车执行模块的关键,负责直接操作电机、舵机等,来控制行驶的速度和方向。
通常需要上位机给下位机发送命令,如何在二者之间实现通信成为一个研究话题。本文给出了一种串口通信的方法,来实现这个功能。
上位机使用C语言编写,关键代码如下:
/**
*@brief 打开串口设备
*@param Dev 类型 char* 打开串口的设备名或者目录
*@return fd 类型 int 打开成功返回设备id,否则返回-1
*/
int openDev( char* Dev )
{
int fd = open( Dev, O_RDWR );//以可读写的方式打开串口
//fd = open( Dev,O_RDWR | 0_NOCTTY | O_NONBLOCK );
//| O_NOCTTY | O_NDELAY
if( -1 == fd )
{
perror( "Can't Open Serial Port" );
return -1;
}
else
return fd;
}
/**
*@brief 设置串口通信速率
*@param fd 类型 int 打开串口的文件句柄
*@param speed 类型 int 串口速度
*@return void
*/
void set_speed( int fd, int speed )
{
int i;
int status;
struct termios Opt;
tcgetattr( fd, &Opt );
for( i = 0; i < sizeof( speed