一、安装串口驱动程序
在Ubuntu系统里,默认情况下是不带有串口驱动程序的,需要手动安装。以FTDI USB转串口为例:
sudo apt-get install git
sudo git clone https://github.com/juliagoda/ftdi_sio.git
cd ftdi_sio
make
sudo make install
sudo modprobe ftdi_sio
安装之后可以通过如下命令来查看是否安装成功:
lsmod |grep ftdi_sio
如果出现ftdi_sio这一项,即表示安装成功。
二、查看串口设备
在Ubuntu下查看串口设备的过程中,可以使用ls -l /dev/serial/by-id
命令,也可以使用dmesg | grep tty
命令。
三、设置串口参数
在Ubuntu下,可以使用stty命令设置串口的参数,例如波特率、数据位、校验位、停止位等等。如下:
sudo stty -F /dev/ttyUSB0 115200 cs8 -cstopb -parity -icanon -echo
其中,-F表示指定串口设备文件,115200表示波特率,cs8表示数据位为8位,-cstopb表示停止位为1位,-parity表示校验位为无,-icanon表示模拟输入行编辑模式,-echo表示输出回显。
四、读写串口数据
在Ubuntu下,可以使用串口调试助手minicom等工具来进行串口的读写操作。也可以通过编写C语言程序,使用串口通信库来进行读写操作。
以下是一个简单的C语言程序,通过串口发送和接收数据:
#include
#include
#include
#include
#include
int main()
{
int fd = -1;
char buffer[100] = {0};
fd = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_NDELAY);
if(fd < 0)
{
perror("open error");
return -1;
}
struct termios options;
tcgetattr(fd, &options);
cfsetispeed(&options, B115200);
cfsetospeed(&options, B115200);
options.c_cflag |= (CLOCAL | CREAD);
options.c_cflag &= ~PARENB;
options.c_cflag &= ~CSTOPB;
options.c_cflag &= ~CSIZE;
options.c_cflag |= CS8;
options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
tcsetattr(fd, TCSANOW, &options);
char message[] = "hello world\n";
write(fd, message, strlen(message));
int count = read(fd, buffer, sizeof(buffer));
if(count > 0)
{
printf("receive data: %s", buffer);
}
close(fd);
return 0;
}
该程序使用了open
、tcgetattr
、cfsetispeed
、cfsetospeed
、tcsetattr
、write
、read
、close
等串口通信库函数。
五、总结
本文主要介绍了在Ubuntu下如何查看串口设备、安装串口驱动程序、设置串口参数、读写串口数据等操作。通过本文的介绍,相信读者已经对Ubuntu下的串口通信有了更深入的了解。