Linux串口編程
- 串口通信是指一次只傳送一個數據位。雖然在通信的時候串口有 8 位或者 9 位等,但是在物理層面傳輸的時候,它仍然是以單個 bit 的方式傳輸的
- 一般特指 RS232 標準的接口
- 在 linux 下串口編程流程如下:
打開串口
核心是用open函數打開串口
if((fd = open(uart3,O_RDWR|O_CREAT,0777))<0){
printf("open %s failed!\n",uart3);
}
else{
printf("open %s is success!\n",uart3);
}
串口初始化
初始化一般無論在哪個平臺都有現成代碼,直接使用即可。這里的接口形式為int set_opt(int fd,int nSpeed, int nBits, char nEvent, int nStop)
- fd為串口句柄
- nSpeed為設置的波特率
- nBites為數據位
- nEvent為校驗位
- nStop為停止位
- 例如
set_opt(fd, 115200, 8, 'N', 1);
串口發送
核心是通過write函數傳送數據
if((fd = open(uart3, O_RDWR|O_NOCTTY|O_NDELAY))<0){
printf("open %s is failed",uart3);
}
else{
printf("open %s is success\n",uart3);
set_opt(fd, 115200, 8, 'N', 1);
while(i--)
{
wr_static = write(fd,buffer, strlen(buffer));
if(wr_static<0)
printf("write failed\n");
else{
printf("wr_static is %d\n",wr_static);
}
sleep(1);
}
}
close(fd);
串口接收
核心是通過read和write來讀取數據
if((fd = open(uart3, O_RDWR|O_NOCTTY))<0)
printf("open %s is failed",uart3);
else{
set_opt(fd, 115200, 8, 'N', 1);
write(fd,uart_out, strlen(uart_out));
while(1){
while((nByte = read(fd, buffer, 512))>0){
buffer[nByte+1] = '\0';
write(fd,buffer,strlen(buffer));
memset(buffer, 0, strlen(buffer));
nByte = 0;
}
}
}
智能推薦
C——Linux下的串口編程(轉)
之前在學習安信可A7模塊時,是在PC上使用串口調試助手做了GPS的坐標數據信息的采集,同時分析了一些語句的含義。在這過程中,涉及到對嵌入式開發人員一個非常重要的知識:串口通信。在前篇也說到,我們將會自己寫程序來對GPS數據進行解析,而這些數據正是靠串口來傳輸的。所以,本篇博文將進行關于串口通信的學習。 一、串口接頭 首先我們得知道串口長什么樣,常用的串口接頭有兩種,一種是9針串口(簡稱DB-9),...
Linux下C語言串口應用編程
在編寫Linux串口的C程序之前,需要包含以下頭文件: #include <termios.h> 在Linux系統中,一切皆文件,所以串口設備也是一類文件,學習過Linux驅動程序的學員都知道,Linux有三類設備:字符設備,塊設備,網絡設備。那么串口設備屬于字符設備。所以串口設備的命名一般為/dev/ttySn(n = 0、1、2......),如果該串口為USB轉串口,可能名稱為/...
Linux 串口編程簡介和實例學習
Linux 串口編程簡介和實例學習 一、無論是從linux官方直接下載的原生態內核還是任何一家芯片廠家提供的linux內核,都已經把串口驅動寫好了,所以在linux串口編程中,是完全不需要動手去寫串口驅動的。對于一般的程序員來說涉及比較多的是串口應用編程,這里我們就介紹一下如何調用內核提供的接口,如何進行初始化配置以及發送和接收數據。 二、查看串口設備節點,在linux系統,串口的設備節點以tty...
linux 多線程串口編程總結
最近在玩DJI M100,調用API獲取GPS位置時發現高程定位完全是錯的(負的幾百多米),查了一下文檔說高程數據是由氣壓計得到的,而飛行控制時又需要比較可靠的高度信息,于是乎決定用上我們實驗室的搭載Ublox芯片的板子搞事情,在子線程通過串口接收板子的定位結果,在主線程調用,開發環境為Ubuntu16.04/14.04,前者為虛擬機,后者為manifold。 1. &nbs...
Linux下串口編程流程介紹
目錄 一、串口編程中struct termios結構體 二、使用串口流程 1、打開串口 2、串口配置流程 a、tcgetattr() 與 tcsetattr()控制終端 b、cfsetispeed() 與 cfsetospeed()設置波特率 c、使用掩碼設置數據位 d、使用c_cflag和c_iflag設置奇偶校驗 e、設置停止位 f、設置最少字符和等待時間 3、讀寫數據 4、關閉串口 &ems...
猜你喜歡
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...