新聞中心
linux C語言開發(fā)串口通信應(yīng)用程序

串口通信(Serial port communication)乃是Linux平臺上最常見的一種通信接口,能實現(xiàn)另一臺計算機(jī)、外圍設(shè)備等的通訊。本文以Linux操作系統(tǒng)作為示例,利用C語言來開發(fā)其串口通信應(yīng)用。
首先,要把串口連接到Linux系統(tǒng)中,可以使用open()函數(shù)來將串口打開,示例代碼如下:
“`c
int fd;
/**
* O_RDWR 可讀寫模式
* O_NOCTTY 如果不是終端設(shè)備則忽略控制終端的請求
* O_NDELAY 如果沒有數(shù)據(jù)立即返回
*/
fd = open(“/dev/ttyS0”,O_RDWR|O_NOCTTY|O_NDELAY);
if(fd == -1)
{
perror(“open ttyS0 is failed\n”);
exit(1);
}
其次,要想讓串口正常運(yùn)轉(zhuǎn),必須進(jìn)行串口參數(shù)的設(shè)置,如波特率、校驗位等,示例代碼如下:
```c
//設(shè)置串口號
struct termios uart_config;
//設(shè)置串口參數(shù):
/**
*tcgetattr() 用來----獲取與終端相關(guān)的參數(shù).
*tcsetattr() 用來----設(shè)置終端參數(shù).
*參數(shù) have數(shù)據(jù),want 也是數(shù)據(jù),如果 have 不等于 want,立刻改變
*/
tcgetattr(fd,&uart_config);
cfsetispeed(&uart_config,B115200);//設(shè)置接收字符的波特率
cfsetospeed(&uart_config,B115200);//設(shè)置發(fā)送字符的波特率
uart_config.c_cflag |=CLOCAL|CREAD; //忽略 Modem 控制線 CREN:使能接收
/*
*設(shè)置數(shù)據(jù)位:
*CS8--8個數(shù)據(jù)位,即 8-bits,一個字節(jié)
*CS7--7個數(shù)據(jù)位,即 7-bits
*CS6--6個數(shù)據(jù)位,即 6-bits
*/
uart_config.c_cflag&=~CSIZE;
uart_config.c_cflag|=CS8;
uart_config.c_cflag&=~CRTSCTS;//關(guān)閉硬件流控
uart_config.c_iflag|=IGNPAR;//忽略接收到的奇偶校驗出錯
tcsetattr(fd,TCSANOW,&uart_config);
最后,就是利用read()以及write()函數(shù)來讀取以及發(fā)送數(shù)據(jù),示例代碼如下:
“`c
//發(fā)送字符
char send_buf[2] = {0};
send_buf[0] = 0x01;
write(fd,send_buf,1);
//接收字符
char recv_buf[2] = {0};
read(fd,&recv_buf,1);
以上就是Linux下C語言開發(fā)串口通信應(yīng)用程序的步驟,此外,還可以添加close()函數(shù)來關(guān)閉打開的串口,如下:
```c
close(fd);
總之,Linux C語言能夠很好地支持串口通信,只需要把步驟按順序執(zhí)行,就可以開發(fā)出能夠?qū)崿F(xiàn)串口功能的應(yīng)用程序。
成都創(chuàng)新互聯(lián)建站主營:成都網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、網(wǎng)站改版的網(wǎng)站建設(shè)公司,提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、成都網(wǎng)站推廣、成都網(wǎng)站優(yōu)化seo、響應(yīng)式移動網(wǎng)站開發(fā)制作等網(wǎng)站服務(wù)。
分享名稱:LinuxC語言開發(fā)串口通信應(yīng)用程序(linuxc串口通信)
網(wǎng)頁網(wǎng)址:http://www.dlmjj.cn/article/dhcoohs.html


咨詢
建站咨詢
