新聞中心
linux下串口通信編程實(shí)戰(zhàn)

串口通信可以實(shí)現(xiàn)硬件和計(jì)算機(jī)之間的信息交互,因此在各種設(shè)備的編程中應(yīng)用較為廣泛。本文主要介紹如何在Linux環(huán)境下使用C語言進(jìn)行串口通信編程。
1、打開串口:
首先,我們需要在Linux下打開串口,這一步包括以下幾個(gè)步驟:
A 、根據(jù)串口名稱及其相應(yīng)的設(shè)備文件打開串口:
例如:串口名稱為Serial0,那么設(shè)備文件就是/dev/ttyS0,此時(shí)使用open函數(shù)打開串口:
int fd = open(“/dev/ttyS0”, O_RDWR | O_NOCTTY | O_NDELAY);
其中fd是返回的文件描述符,其他參數(shù)分別表示以可讀可寫、非調(diào)制模式打開以及不懂阻塞的形式打開串口。
B 、獲取串口屬性:
當(dāng)打開串口成功之后,可以使用tcgetattr函數(shù)獲取串口屬性:
struct termios opt;
tcgetattr(fd, &opt);
C、設(shè)置串口屬性:
通過上述函數(shù)將串口屬性獲取成功之后,就可以改變其屬性,如波特率、數(shù)據(jù)位等,例如設(shè)置波特率為115200:
cfsetispeed(&opt, B115200);
cfsetospeed(&opt, B115200);
D、設(shè)置本地模式:
設(shè)置本地模式時(shí)要用到字段c_cflag:
opt.c_cflag &= ~CSIZE; //屏蔽其他標(biāo)志位
opt.c_cflag |= CS8; //數(shù)據(jù)位為8位
opt.c_cflag &= ~PARENB; //無校驗(yàn)位
opt.c_cflag &= ~CSTOPB; //1位停止位
opt.c_cc[VTIME] = 150; //設(shè)置超時(shí)15 seconds
opt.c_cc[VMIN] = 0; //讀取字符的最少個(gè)數(shù)
E 、激活配置:
將以上設(shè)置好的參數(shù)應(yīng)用到串口中,使用tcsetattr函數(shù)即可:
tcsetattr(fd, TCSANOW, &opt);
2、進(jìn)行數(shù)據(jù)傳輸:
當(dāng)打開串口以及設(shè)置串口屬性激活配置之后,就可以使用read函數(shù)和write函數(shù)來進(jìn)行數(shù)據(jù)傳輸:
write(fd, buf, len);該函數(shù)可以用于向串口發(fā)送數(shù)據(jù),buf指向發(fā)送緩沖區(qū),len為待發(fā)送數(shù)據(jù)的長度;
read(fd, buf, len);該函數(shù)可以用于從串口接受數(shù)據(jù),buf指向接收緩沖區(qū),len為緩沖區(qū)的長度。
3、關(guān)閉串口:
當(dāng)完成全部操作之后,使用close函數(shù)關(guān)閉串口:
close(fd);
以上就是Linux下串口通信的過程,串口通信的原理同樣適用于Windows環(huán)境,只是API函數(shù)及其參數(shù)會(huì)有些不同而已。
成都創(chuàng)新互聯(lián)科技公司主營:網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、小程序制作、成都軟件開發(fā)、網(wǎng)頁設(shè)計(jì)、微信開發(fā)、成都小程序開發(fā)、網(wǎng)站制作、網(wǎng)站開發(fā)等業(yè)務(wù),是專業(yè)的成都做小程序公司、成都網(wǎng)站建設(shè)公司、成都做網(wǎng)站的公司。創(chuàng)新互聯(lián)公司集小程序制作創(chuàng)意,網(wǎng)站制作策劃,畫冊(cè)、網(wǎng)頁、VI設(shè)計(jì),網(wǎng)站、軟件、微信、小程序開發(fā)于一體。
分享文章:Linux下串口通信編程實(shí)戰(zhàn)(linux下串口通信編程)
分享地址:http://m.fisionsoft.com.cn/article/dpdicoi.html


咨詢
建站咨詢
