一、安裝串口驅動程序
在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下的串口通信有了更深入的了解。