Linux下讀寫UART串列埠的程式碼
Linux下讀寫UART串列埠的程式碼,從IBM Developer network上拿來的東西,操作比較的複雜,就直接跳過了,好在程式碼能用,記錄一下~
兩個有用的函式~
- ////////////////////////////////////////////////////////////////////////////////
- /**
- *@brief 設定串列埠通訊速率
- *@param fd 型別 int 開啟串列埠的檔案控制代碼
- *@param speed 型別 int 串列埠速度
- *@return void
- */
- int speed_arr[] = {B115200, B38400, B19200, B9600, B4800, B2400, B1200, B300,
-
B115200, B38400, B19200, B9600, B4800, B2400, B1200, B300, };
- int name_arr[] = {115200, 38400, 19200, 9600, 4800, 2400, 1200, 300,
- 115200, 38400, 19200, 9600, 4800, 2400, 1200, 300, };
- void set_speed(int fd, int speed){
- int i;
- int status;
- struct termios Opt;
- tcgetattr(fd, &Opt);
-
for ( i= 0; i < sizeof(speed_arr) / sizeof(int
- if (speed == name_arr[i]) {
- tcflush(fd, TCIOFLUSH);
- cfsetispeed(&Opt, speed_arr[i]);
- cfsetospeed(&Opt, speed_arr[i]);
- status = tcsetattr(fd, TCSANOW, &Opt);
- if (status != 0) {
-
perror("tcsetattr fd1"
- return;
- }
- tcflush(fd,TCIOFLUSH);
- }
- }
- }
- ////////////////////////////////////////////////////////////////////////////////
- /**
- *@brief 設定串列埠資料位,停止位和效驗位
- *@param fd 型別 int 開啟的串列埠檔案控制代碼
- *@param databits 型別 int 資料位 取值 為 7 或者8
- *@param stopbits 型別 int 停止位 取值為 1 或者2
- *@param parity 型別 int 效驗型別 取值為N,E,O,,S
- */
- int set_Parity(int fd,int databits,int stopbits,int parity)
- {
- struct termios options;
- if ( tcgetattr( fd,&options) != 0) {
- perror("SetupSerial 1");
- return(FALSE);
- }
- options.c_cflag &= ~CSIZE;
- switch (databits) /*設定資料位數*/
- {
- case 7:
- options.c_cflag |= CS7;
- break;
- case 8:
- options.c_cflag |= CS8;
- break;
- default:
- fprintf(stderr,"Unsupported data size\n"); return (FALSE);
- }
- switch (parity)
- {
- case'n':
- case'N':
- options.c_cflag &= ~PARENB; /* Clear parity enable */
- options.c_iflag &= ~INPCK; /* Enable parity checking */
- break;
- case'o':
- case'O':
- options.c_cflag |= (PARODD | PARENB); /* 設定為奇效驗*/
- options.c_iflag |= INPCK; /* Disnable parity checking */
- break;
- case'e':
- case'E':
- options.c_cflag |= PARENB; /* Enable parity */
- options.c_cflag &= ~PARODD; /* 轉換為偶效驗*/
- options.c_iflag |= INPCK; /* Disnable parity checking */
- break;
- case'S':
- case's': /*as no parity*/
- options.c_cflag &= ~PARENB;
- options.c_cflag &= ~CSTOPB;break;
- default:
- fprintf(stderr,"Unsupported parity\n");
- return (FALSE);
- }
- /* 設定停止位*/
- switch (stopbits)
- {
- case 1:
- options.c_cflag &= ~CSTOPB;
- break;
- case 2:
- options.c_cflag |= CSTOPB;
- break;
- default:
- fprintf(stderr,"Unsupported stop bits\n");
- return (FALSE);
- }
- /* Set input parity option */
- if (parity != 'n')
- options.c_iflag |= INPCK;
- tcflush(fd,TCIFLUSH);
- options.c_cc[VTIME] = 150; /* 設定超時15 seconds*/
- options.c_cc[VMIN] = 0; /* Update the options and do it NOW */
- if (tcsetattr(fd,TCSANOW,&options) != 0)
- {
-
perror(
相關推薦
Linux下讀寫UART串列埠的程式碼
Linux下讀寫UART串列埠的程式碼,從IBM Developer network上拿來的東西,操作比較的複雜,就直接跳過了,好在程式碼能用,記錄一下~ 兩個有用的函式~ //////////////////////////////////////////////////////
Linux下用C實現串列埠讀寫
http://hi.baidu.com/weiweisuo1986/item/b33200134ceaac6871d5e81d 之前要做一個和串列埠相關的專案,才認真研究了下串列埠,首先就是要實現串列埠和PC機的通訊。 串列埠的驅動一般不需要我們寫,都是很成熟的驅動
Linux學習筆記-Linux下讀寫檔案
在Linux程式設計需要讀寫檔案時,有兩種方式: (1)ANSIC: 使用stdio.h裡的函式。fopen, fclose, fwrite, fread (2)Linux API:Linux提供了另外一套API用於操作檔案。open, clos
Linux下讀寫FLASH驅動——MTD裝置分析
最近在學習驅動讀寫flash的程式碼部分。經歷了可笑的過程:開始我知道flash用通過spi口來讀寫。所以就到了driver/spi 下面看相關程式碼。發現有個spidev.c裡面有read/write/ioctl等函式。而且還有一個davinci_spi_
java linux下讀寫中文
import java.io.*; import java.text.SimpleDateFormat; import java.util.*; public class TestFile { //寫檔案,支援中文字元,在linux redhad下測試過 p
在linux上寫好串列埠程式後,利用windows上的串列埠除錯助手互發資料
我是用QT4在Linux上寫的串列埠程式,具體的程式碼就不寫了,網上搜一下很多。這裡主要說一下寫完程式碼之後,之前也行。要做的事情。 1,使用命令在終端上檢視有哪些串列埠驅動。 可以看出ttyS0 ttyS1能用 .一般ttyS0指com1,ttyS1指co
用控制元件(CMSComm)讀串列埠程式碼(高效率,不同於網上常見的,決沒有抄襲)!
讀串列埠的程式碼在網上是鋪天蓋地,但他們幾乎完全是一樣的,第一個人寫出來的才是英雄,其它的不是。這段程式碼類似於下面: VARIANT variant_inp; COleSafeArray safearray_inp; LONG len,k; BYTE rxdata[204
linux UART串列埠驅動開發
內容簡介: 介紹了Linux下的串列埠驅動的設計層次及介面, 並指出串列埠與TTY終端之間的關聯層次(串列埠可作TTY終端使用), 以及Linux下的中斷處理機制/中斷共享機制, 還有串列埠緩衝機制當中涉及的軟中斷機制; 其中有關w83697/w83977 IC方面的知識, 具體參考相關手冊, 對串列埠的配
AM335X下Linux使用所有6個串列埠,包括UART4、UART5
AM335X開發板總共有6個串列埠,其中因為UART4和UART5與其他功能複用,所以我們在使用的時候,並不使用所有串列埠。但是有的時候,我們恰恰是要用到儘量多的串列埠,這種情況下,則可以簡單的修改一下核心程式碼。UART4和UART5功能複用情況如下: UART4 和 can 功能有衝
linux裝置驅動,tty串列埠程式設計 如何檢視linux下串列埠是否可用?串列埠名稱等
如何檢視linux下串列埠是否可用?串列埠名稱等? 檢視串列埠是否可用,可以對串列埠傳送資料比如對com1口,echo lyjie126 > /dev/ttyS0 檢視串列埠名稱使用 ls -l /dev/ttyS* 一般情況下串列埠的名稱全部在dev下面,如果你沒
linux常用讀寫程式碼操作
1、讀程式碼less命令:[[email protected] scripts]$ less -N ChangeLog-N 表示顯示行號Enter顯示下一行g定位到文字第一行G定位到文字最後一行f下翻一頁(forward)b上翻一頁(back)2、vim命令:(1)
UNICODE環境下讀寫txt文件操作
clas c程序 delete tag 編碼 eno 字符編碼 empty readline 內容轉載自http://blog.sina.com.cn/s/blog_5d2bad130100t0x9.html UNICODE環境下讀寫txt文件操作 (2011-07
Linux ttyUSB*讀寫許可權獲取
1. 檢視ttyUSB裝置 如果檢視所有tty裝置可以將ttyUSB* 改為tty* 2. 單次生效 本條指令的生效週期是本次關比機器之前 3. 永久生效 &
dd命令測試linux磁碟讀寫速度操作
1、先熟悉兩個特殊的裝置: (1)/dev/null:回收站、無底洞。 (2)/dev/zero:產生字元。 2、測試磁碟寫能力 time dd if=/dev/zero of=/testw.dbf bs=4k
Linux嵌入式開發環境之串列埠配置
開發平臺:Ubuntu 串列埠工具:putty 安裝方法:su apt-get install putty 串列埠使用方法: 1、將串列埠連線至PC,在命令列輸入putty,開啟putty介面 2、將連線方式設為serial,裝置選擇為/dev/ttyUSB0(本機為USB轉串列埠,其他情況可嘗試/
windows下C語言版串列埠接收程式(基於VS2017)
#include "pch.h" #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <stdio.h> #include <windows.h> #include <s
windows下C語言版串列埠傳送程式(基於VS2017)
#include "pch.h" #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <windows.h> #include <string.h> #include <conio.h&
UART串列埠通訊淺談之(三)--字元與資料的轉換
版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/solar_Lan/article/details/78093692 學串列埠通訊的應用主要是實現微控制器和電腦之間的資訊互發,可以用電腦控制微控制器的一些資訊,可以把微控制器的一些資訊狀況發給電腦
UART串列埠通訊淺談之(二)--暫存器設定
1.1 通訊的三種基本型別 常用的通訊通常可以分為單工、半雙工、全雙工通訊。 單工就是指只允許一方向另外一方傳送資訊,而另一方不能回傳資訊。比如我們的電視遙控器,我們的收音機廣播等,都是單工通訊技術。 半雙工是指資料可以在雙方之間相互傳播,但是同一時刻只能其中一方發給另外一方,
UART串列埠通訊淺談之(一)--基礎概述
通訊按照傳統的理解就是資訊的傳輸與交換。UART(Universal Asynchronous Receiver/Transmitter,即通用非同步收發器)序列通訊是微控制器最常用的一種通訊技術,通常用於微控制器和電腦之間以及微控制器和微控制器之間的通訊。 以下我們以STC98C52微控制器為