Python與串列埠的資料通訊

2021-09-28 21:31:19 字數 984 閱讀 9548

你想通過串列埠讀寫資料,典型場景就是和一些硬體裝置打交道(比如乙個機械人或感測器)。

儘管你可以通過使用python內建的i/o模組來完成這個任務,但對於序列通訊最好的選擇是使用 pyserial包 。 這個包的使用非常簡單,先安裝pyserial,使用類似下面這樣的**就能很容易的開啟乙個串列埠:

import serial

ser = serial.serial('/dev/tty.usbmodem641', # device name varies

baudrate=9600,

bytesize=8,

parity='n',

stopbits=1)

裝置名對於不同的裝置和作業系統是不一樣的。 比如,在windows系統上,你可以使用0, 1等表示的乙個裝置來開啟通訊埠」com0」和」com1」。 一旦埠開啟,那就可以使用read()readline()write()函式讀寫資料了。例如:

ser.write(b'g1 x50 y50\r\n')

resp = ser.readline()

大多數情況下,簡單的串列埠通訊從此變得十分簡單。

儘管表面上看起來很簡單,其實串列埠通訊有時候也是挺麻煩的。 推薦你使用第三方包如pyserial的乙個原因是它提供了對高階特性的支援 (比如超時,控制流,緩衝區重新整理,握手協議等等)。舉個例子,如果你想啟用rts-cts握手協議, 你只需要給serial()傳遞乙個rtscts=true的引數即可。 其官方文件非常完善,因此我在這裡極力推薦這個包。

時刻記住所有涉及到串列埠的i/o都是二進位制模式的。因此,確保你的**使用的是位元組而不是文字 (或有時候執行文字的編碼/解碼操作)。 另外當你需要建立二進位制編碼的指令或資料報的時候,struct模組也是非常有用的。

Activity資料通訊

若要從子activity獲取返回資訊時,可呼叫以下activity方法 public void startactivityforresult intent intent,int requestcode 該方法的第乙個引數為intent,第二個引數是請求 請求碼是先傳送給子activity,然後再返回...

資料通訊基礎

通道的最高碼元傳輸速率 根據奈氏 nyquist 準則,理想碼元傳輸速率n 2w baud 其中w是理想低通訊道的頻寬,單位為hz,baud是波特,是碼元傳輸速度的單位。通道的極限資訊傳輸速率 shannon用資訊理論的理論推導出了頻寬受限且有高斯白雜訊干擾的通道的極限 無差錯的資訊傳輸速率。其中w...

資料通訊概述

基本概念的介紹 模擬通訊 頻分復用 數字通訊 時分復用 一則離散訊息包含的資訊量 i log ap i log a p i loga p 資料通訊 依照通訊協議,資料傳輸技術在兩個功能單元之間傳遞資料資訊 資料通訊業務 分組交換業務 數字資料業務 幀中繼業務 寬頻業務 資料通訊系統 資料終端裝置dt...