新聞中心
linux串口編程實現(xiàn)數(shù)據(jù)回顯

Linux串口編程,指的是在Linux系統(tǒng)中開發(fā)基于UART協(xié)議的串口設備軟件。其中在工業(yè)應用比較多的是實現(xiàn)字節(jié)數(shù)據(jù)的收發(fā),根據(jù)收發(fā)的數(shù)據(jù)類型、消息的組織形式不同,串口編程的實現(xiàn)方式也會有不同的變化。比如,在某些數(shù)據(jù)回顯的應用中,需要實現(xiàn)發(fā)送數(shù)據(jù)并收到發(fā)送數(shù)據(jù)的原樣返回,一般稱為數(shù)據(jù)回顯效果。
要實現(xiàn)數(shù)據(jù)回顯效果,需要借助Linux系統(tǒng)的串口編程功能,開發(fā)一段串口通信的應用程序,程序的具體實現(xiàn)邏輯如下:
1.定義相應的變量,設置串口的讀寫超時時間,打開串口:
struct termios tio;
/* 設置串口的讀寫超時時間 */
tio.c_cc[VMIN] = 0;
tio.c_cc[VTIME] = 5;
/*打開串口句柄*/
fd = open(DEVICE, O_RDWR | O_NOCTTY);
if(fd
{
printf(“open serial port fail\r\n”);
return -1;
}
2.配置串口參數(shù):
/* 設置串口主要參數(shù) */
tio.c_cflag = CS8 | CLOCAL | CREAD;
/* 8N1, 使能接收 */
tio.c_cflag &= ~PARENB;
tio.c_cflag &= ~CSTOPB;
tio.c_cflag &= ~CSIZE;
/* 設置波特率 */
cfsetispeed(&tio,BAUDRATE);
cfsetospeed(&tio,BAUDRATE);
tcsetattr(fd,TCSANOW,&tio);
3.實現(xiàn)數(shù)據(jù)發(fā)送和接收:
while(state == TRANSFERING_DATA)
{
/* 發(fā)送數(shù)據(jù) */
write(fd, buffer, n);
/* 接收數(shù)據(jù) */
n = read(fd, buffer, dataSize);
/* 數(shù)據(jù)處理 */
if(state == RECV_OK)
{
printf(“data_received >> %s \n”, buffer);
……. ………………
}
}
4.關閉串口:
/* 關閉串口句柄 */
close(fd);
以上是Linux系統(tǒng)中串口編程實現(xiàn)數(shù)據(jù)回顯的步驟,也就是收發(fā)兩端發(fā)送的數(shù)據(jù)也是一致的。如果你也是一個Linux的新手,想要學習串口編程實現(xiàn)數(shù)據(jù)回顯以上的步驟,可以搜索相關的博客教程,或構建一個樣例工程進行試驗,以便進行功能驗證及代碼調(diào)試。
香港云服務器機房,創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)云服務器廠商,回大陸優(yōu)化帶寬,安全/穩(wěn)定/低延遲.創(chuàng)新互聯(lián)助力企業(yè)出海業(yè)務,提供一站式解決方案。香港服務器-免備案低延遲-雙向CN2+BGP極速互訪!
文章標題:Linux串口編程實現(xiàn)數(shù)據(jù)回顯(linux串口回顯)
網(wǎng)站鏈接:http://fisionsoft.com.cn/article/djgsppe.html


咨詢
建站咨詢
