serial port 的操作

import serial
①選擇設備
ser=serial.Serial("/dev/ttyUSB0",9600,timeout=0.5)?#使用USB連接串行口
ser=serial.Serial("/dev/ttyAMA0",9600,timeout=0.5)?#使用樹莓派的GPIO口連接串行口
ser=serial.Serial(1,9600,timeout=0.5)#winsows系統使用com1口連接串行口
ser=serial.Serial("com1",9600,timeout=0.5)#winsows系統使用com1口連接串行口
ser=serial.Serial("/dev/ttyS1",9600,timeout=0.5)#Linux系統使用com1口連接串行口
print ser.name#打印設備名稱
print ser.port#打印設備名
ser.open() #打開端口
s = ser.read(10)#從端口讀10個字節
ser.write("hello")#向端口寫數據
ser.close()#關閉端口
data = ser.read(20)?#是讀20個字符


data = ser.readline()?#是讀一行,以/n結束,要是沒有/n就一直讀,阻塞。

data = ser.readlines()和ser.xreadlines()#都需要設置超時時間

ser.baudrate = 9600?#設置波特率

ser.isOpen()?#看看這個串口是否已經被打開

3、獲得串行口狀態
串行口的屬性:
name:設備名字
portstr:已廢棄,用name代替
port:讀或者寫端口
baudrate:波特率
bytesize:字節大小
parity:校驗位
stopbits:停止位
timeout:讀超時設置
writeTimeout:寫超時
xonxoff:軟件流控
rtscts:硬件流控
dsrdtr:硬件流控
interCharTimeout:字符間隔超時
? ? ? ?
①屬性

屬性的使用方法:
ser=serial.Serial("/dev/ttyAMA0",9600,timeout=0.5)
ser.open()

print?ser.name
print ser.port
print ser.baudrate#波特率
print ser.bytesize#字節大小
print ser.parity#校驗位N-無校驗,E-偶校驗,O-奇校驗
print ser.stopbits#停止位
print ser.timeout#讀超時設置
print ser.writeTimeout#寫超時
print ser.xonxoff#軟件流控
print ser.rtscts#硬件流控
print ser.dsrdtr#硬件流控
print ser.interCharTimeout#字符間隔超時
ser.close()
4、設置串行口狀態
需要用的常量


bytesize:FIVE BITS、SIXBITS、SEVENBITS、EIGHTBITS
parity: PARITY_NONE, PARITY_EVEN, PARITY_ODD, PARITY_MARK, PARITY_SPACE
stopbits: STOPBITS_ONE, STOPBITS_ONE_POINT_FIVE, STOPBITS_TWO
異常:
ValueError:參數錯誤
SerialException:找不到設備或不能配置
ser.baudrate=9600#設置波特率

ser.bytesize=8#字節大小
ser.bytesize=serial.EiGHTBITS#8位數據位

ser.parity=serial.PARITY_EVEN#偶校驗
ser.parity=serial.PARITY_NONE#無校驗
ser.parity=serial.PARITY_ODD#奇校驗

ser.stopbits=1#停止位
ser.timeout=0.5#讀超時設置
ser.writeTimeout=0.5#寫超時
ser.xonxoff#軟件流控
ser.rtscts#硬件流控
ser.dsrdtr#硬件流控
ser.interCharTimeout#字符間隔超時

5、Readline方法的使用

? ? ? ??是讀一行,以/n結束,要是沒有/n就一直讀,阻塞。


? ? ? ?使用readline()時應該注意:打開串口時應該指定超時,否則如果串口沒有收到新行,則會一直等待。如果沒有超時,readline會報異常。
6、serial.Serial類——原生端口
class serial.Serial?
{
? ? __init__(port=None, baudrate=9600, bytesize=EIGHTBITS,parity=PARITY_NONE, stopbits=STOPBITS_ONE, timeout=None, xonxoff=False, rtscts=False, writeTimeout=None, dsrdtr=False, interCharTimeout=None)
}
? ? #其中:
? ? # bytesize:FIVEBITS、SIXBITS、SEVENBITS、EIGHTBITS
? ? # parity: PARITY_NONE, PARITY_EVEN, PARITY_ODD, PARITY_MARK, PARITY_SPACE
? ? # stopbits: STOPBITS_ONE, STOPBITS_ONE_POINT_FIVE, STOPBITS_TWO
? ? #異常:
? ? #ValueError:參數錯誤
? ? #SerialException:找不到設備或不能配置

? ? open():打開串口

? ? close():立即關閉串口

? ? __del__():析構函數

? ? read(size=1):從串口讀size個字節。如果指定超時,則可能在超時后返回較少的字節;如果沒有指定超時,則會一直等到收完指定的字節數。

? ? write(data):發送data,并返回發送字節數。如果bytes和bytearray可用(python 2.6以上),則接受其作為參數;否則接受str作為參數。
? ? #異常:SerialTimeoutException——配置了寫超時并發生超時時發生此異常。

? ? inWaiting():返回接收緩存中的字節數

? ? flush():等待所有數據寫出。

? ? flushInput():丟棄接收緩存中的所有數據

? ? flushOutput():終止當前寫操作,并丟棄發送緩存中的數據。

? ? sendBreadk(duration=0.25):發送BREAK條件,并于duration時間之后返回IDLE

? ? setBreak(level=True):根據level設置break條件。

? ? setRTS(level=True)

? ? setDTR(level=True)

? ? getCTS()

? ? getDSR()

? ? getRI()

? ? getCD()

? ? #只讀屬性:
? ? name:設備名字
? ? portstr:已廢棄,用name代替
? ? port:讀或者寫端口
? ? baudrate:波特率
? ? bytesize:字節大小
? ? parity:校驗位
? ? stopbits:停止位
? ? timeout:讀超時設置
? ? writeTimeout:寫超時
? ? xonxoff:軟件流控
? ? rtscts:硬件流控
? ? dsrdtr:硬件流控
? ? interCharTimeout:字符間隔超時

? ? #端口設置可以被讀入字典,也可從字典加載設置:
? ? getSettingDict():返回當前串口設置的字典
? ? applySettingDict(d):應用字典到串口設置

? ? #對提供io庫的系統(python 2.6或以上),Serial從io.RawIOBase派生。對其它系統,從FileLike派生。

? ? #異常:
? ? exception serial.SerialException
? ? exception serial.SerialTimeoutException

? ? #常量:
? ? serial.VERSION:pyserial版本

? ? #模塊函數和屬性:
? ? serial.device(number)

? ? serial.serial_for_url(url, *args, **kwargs)

? ? serial.protocol_handler_packages()

? ? serial.to_bytes(sequence):接收一個字符串或整數列表sequence,返回bytes實例
}

---------------------
作者:萬三豹
來源:CSDN
原文:https://blog.csdn.net/as472780551/article/details/79126927
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

轉載于:https://www.cnblogs.com/wolun666/p/11151332.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/386452.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/386452.shtml
英文地址,請注明出處:http://en.pswp.cn/news/386452.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

我在華為做Android外包的真實經歷!吊打面試官系列!

導語 本部分內容是關于Android進階的一些知識總結,涉及到的知識點比較雜,不過都是面試中幾乎常問的知識點,也是加分的點。 關于這部分內容,可能需要有一些具體的項目實踐。在面試的過程中,結合具體自身實踐經歷&…

logstash windows

最新在研究elastic stack (elk) : logstash 安裝,下載最新版本的logstash: 點擊打開鏈接 解壓到磁盤根目錄下:在logstash>bin 1、目錄下創建:logstash.conf 2、輸入內容: # Sample Logstash configuration for creating …

H3C端口狀態

轉載于:https://www.cnblogs.com/fanweisheng/p/11153315.html

還有人不知道什么是AndroidX的嗎?文末領取面試資料

談起Android框架體系架構,我先提個問:什么是Android框架體系架構 ? Android系統構架是安卓系統的體系結構,android的系統架構和其操作系統一樣,采用了分層的架構,共分為四層,從高到低分別是And…

zookeeper+kafka+logstash+elasticsearc+kibana

研究背景 1、之所以選用kafka是因為量起來的話單臺logstash的抗壓能力比較差 2、為了解決整個鏈路查詢的問題,多個Feign傳層的話,可以按照一個ID進行穿層,所以采用logback的MDC進行對唯一標識存儲并且在Feign的調用鏈放在Header里&#xff…

還沒吃透內存緩存LruCache實現原理的看這篇文章,跳槽薪資翻倍

目前情況:10屆某民辦大學本科生,實際接觸Android年限6年多了,工作年限五年半(注意,我說的是工作年限,不是工作經驗),今年1月份裸辭后歇了大半年,經常一周也收不到幾個off…

利用 Docker 搭建單機的 Cloudera CDH 以及使用實踐

利用 Docker 搭建單機的 Cloudera CDH 以及使用實踐 想用 CDH 大禮包,于是先在 Mac 上和 Centos7.4 上分別搞個了單機的測試用。其實操作的流和使用到的命令差不多就一并說了: 首先前往官方下載包: https://www.cloudera.com/downloads/quickstart_vm…

前端有用JavaScript技巧

數組去重 var arr [1, 2, 3, 3, 4];console.log(...new Set(arr))// [1, 2, 3, 4] 數組和布爾值 有時我們需要過濾數組中值為 false 的值. 例如(0, undefined, null, false) var myArray [1, 0 , undefined, null, false];myArray.filter(Boolean);//[1] 合并對象 const page…

還沒吃透內存緩存LruCache實現原理的看這篇文章,面試必會

前言 這篇文章主要是分享今年上半年的面試心得,現已就職于某大廠有三個月了,近期有很多公司均已啟動秋招,也祝大家在 2020 的下半年面試順利,獲得理想的offer! 之前找工作的那段時間感想頗多,總結一點面試…

fastjson反序列化漏洞原理及利用

重要漏洞利用poc及版本 我是從github上的參考中直接copy的exp,這個類就是要注入的類 import java.lang.Runtime; import java.lang.Process; public class Exploit { public Exploit() { try{ // 要執行的命令 String commands "calc.exe"; Process pc …

這個回答讓我錯失offer!offer拿到手軟

開頭 每到“金三銀四”的季節,總人很多人去尋找名叫“面經”一樣的東西,其實就是一個個具體的題目,然后臨陣磨槍,去“背”答案,如果一直是這樣的話,我相信你的能力不會有任何提高,即使工作三年…

Spark Windows

本文主要是講解Spark在Windows環境是如何搭建的 一、JDK的安裝 1、1 下載JDK 首先需要安裝JDK,并且將環境變量配置好,如果已經安裝了的老司機可以忽略。JDK(全稱是JavaTM Platform Standard Edition Development Kit)的安裝&…

ts

ts文件中使用以下注釋來臨時忽略規則出現的錯誤。如在定義變量是為定義類型就報錯誤 // tslint:disable——忽略該行以下所有代碼出現的錯誤提示// tslint:enable——當前ts文件重新啟用tslint// tslint:disable-line——忽略當前行代碼出現的錯誤提示// tslint:disable-next-l…

這個回答讓我錯失offer!成功收獲美團,小米安卓offer

前言 我們移動開發程序員應該首先明白一個要點,能夠學習的東西可以區分為『知識』和『技能』。 知識,就是你知道就知道、不知道就不知道的東西,比如『計算機系統中一個字節是包含8個bit』,你知道了之后就算掌握了。 技能&#…

vue 雙數據綁定原理

Vue的雙向數據綁定原理是什么? 答:vue.js 是采用數據劫持結合發布者-訂閱者模式的方式,通過Object.defineProperty()來劫持各個屬性的setter,getter,在數據變動時發布消息給訂閱者,觸發相應的監聽回調。 具…

Java lamda表達式快速分組

public class ProductDto {private long month;private String cate;private double count;} 分組 Map<String,List<ProductDto>> categoryMap alllist.getValue().stream().collect(Col lectors.groupingBy(ProductDto::getCate));求和 Double sumCount catego…

這么香的技術還不快點學起來,不吃透都對不起自己

大家應該看過很多分享面試成功的經驗&#xff0c;但根據幸存者偏差的理論&#xff0c;也許多看看別人面試失敗在哪里&#xff0c;對自己才更有幫助。 最近跟一個朋友聊天&#xff0c;他準備了幾個月&#xff0c;剛剛參加完字節跳動面試&#xff0c;第二面結束后&#xff0c;嗯&…

Unity3D熱更新之LuaFramework篇[06]--Lua中是怎么實現腳本生命周期的

前言 用c#開發的時候&#xff0c;新建的腳本都默認繼承自Monobehaviour, 因此腳本才有了自己的生命周期函數&#xff0c;如Awake,Start, Update, OnDestroy等。 在相應的方法中實現游戲邏輯&#xff0c;引擎會適時調用。 而Lua在這里做為c#的一個外延語言&#xff0c;自然是不受…

這么香的技術還不快點學起來,含BATJM大廠

前言 北京字節跳動科技有限公司成立于2012年3月&#xff0c;是最早將人工智能應用于移動互聯網場景的科技企業之一。其獨立研發的“今日頭條”客戶端&#xff0c;開創了一種全新的新聞閱讀模式。 我一直很向往這樣有創新精神&#xff0c;并做出了巨大成果的大公司&#xff0c…

.net Core把一個list集合里面的所有字段的數值匯總

前言&#xff1a;此隨筆僅供自己學習&#xff0c;如有不足還請指出 在很多時候&#xff0c;得到一個list集合&#xff0c;需要把里面的數據匯總&#xff0c;但我又不想寫那么多循環&#xff0c;于是去.net core 官方文檔找有沒有相關方法&#xff0c;很可惜我沒有找到&#xff…