導航:首頁 > 編程語言 > python十六進制串口通信

python十六進制串口通信

發布時間:2023-08-30 15:30:04

⑴ 如何用python實現串口通信

Python非常適合寫一些測試的腳本,如快速的串口通信測試等。如果使用VC++ QT開發,可能用時較多,使用python,如果掌握使用方法,可以直接讀寫測試,配合設備或是串口助手,很快驗證與實現。
Python有沒有現成的串口API直接調用呢?經過實踐驗證,需要安裝一個叫 Pyserial的組件即可。這個可以在github上下載。

在windows 7 64bit 上可以使用嗎?當然可以使用,我安裝的python3.5為64位的。把下載後的文件,其中有一個serial的文件夾,拷貝到python35安裝路徑, C:\Python35\Lib\site-packages\serial
網上可以搜一下windows的安裝包,安裝完也是:C:\Python35\Lib\site-packages\serial ,可以用最新的版本,替換即可。
測試的方法:在python IDE里測試:
>>> import serial
這里如果報錯,是python版本與pyserial版本沒有配合好。如果正常,不返回,即可以導入serial模塊。
>>> ser=serial.Serial("COM5",115200)
這里為COM5,115200的波特率。如果打不開,請檢查安裝環境。
>>> ser.write('hello,serial test'.encode())
17
發送測試(如果返回位元組數,說明返回成功),這里需要轉換一個編碼為位元組。
以上測試,可以使用現在的設備或是串口助手,如安裝Virtual Serial Port Driver 7.2 虛擬串口軟體,設置一對串口,進行自發自收的測試。
>>> print(ser.readline())
b'abcdefg\r\n'
這里是串口接收,有接收的超時。設備或是串口助手發送一個字元串,以回車換行結束,這里就可以收到列印出來。
也可以用ser.read(),這里只接收一個字元來實現。
上面已經實現了基本的串口操作。
關閉串口為:
>>> ser.close()
如果使用python,一般寫個py文件,就像windows bat 批處理一樣,這是python強大的地方。如果寫一個py腳本呢?其實只要把上面的命令,一條條寫下來,就是一個腳本,測試如下:
import serialser=serial.Serial("COM5",115200,timeout=0.5)for i in range(0,100-1):ser.write('hello\r\n'.encode())print(ser.readline());ser.close()

⑵ plc與python之間實現通信

python語言與plc建立串口通信時,無法直接讀寫。
用到python的serial 模塊

在創建串口對象時需要定義其屬性與plc一致:

self.main_engine.baudrate = self.bps
self.main_engine.bytesize = 7
self.main_engine.parity = 'E'
self.main_engine.stopbits = 2

重點:在寫入數據後,需要寫16進制數"0D",結束標志位

self.main_engine.write("@00WD1010000152*".encode())
self.main_engine.write(binascii.a2b_hex("0D"))

⑶ 如何用python寫個串口通信的程序

打開串口後啟動一個線程來監聽串口數據的進入,有數據時,就做數據的處理。

⑷ Python Serial 串口能不能發送16進制的數字

pyserial默認的寫入格式是字元串,並不是16進制的。接收到的也是字元串,除非你在接收端設置了默認接受hex格式,就會顯示hex。我用過藍牙串口和Arino開發板的串口,收到的都是字元串。

⑸ Python Serial 串口能不能發送16進制的數字

以十六進制發送
import serial
t = serial.Serial('com1',9600)
t.write("\x55\x53".encode('utf-8'))

⑹ 用python輸入一個十進制數,輸出其二進制串,八進制串,十六進制串

好久沒寫過匯編的程序了,代碼估計我現在做不出來,能告訴你下原理~~~把3位十進制分別讀入後,存到內存的是相應符號的ASC2碼,將這個符號asc碼轉成數字的asc碼 比如9 存進去的是39H 要變成 1001,也就是9h,比如存入999 就通過10進制的計算可以求出來 轉成2進制的asc碼 存成一個16位的acs碼 要輸出2進制的時候每次讀最後一位,之後有個循環移位的命令,總共循環12次 將取出來的值變成可以輸出的字元asc碼 1---->31h 0----->30h 一個個輸出出來就可以了 八進制的,從最後一位開始讀,每3個二進制存成一個,將他變成對應的十進制,即 001 --->1,011----> 3,110-->6, 100---> 4 即4631最後的輸出,將每個數字轉成相應的可輸出二進制,之後挨個輸出出來,記得順序 4輸出是第一個,但卻是最後算出來的~~~~ 16進制的,從最後一位讀,每4位存成一個,之後將得到的字元轉成可以輸出的字元asc碼之後挨個輸出,注意順序就可以了相應的asc碼轉換可以參考那本書後面的附錄,裡面有各個符號對應的asc碼,進行簡單的計算就能夠得到~~~~~ 希望能對你有點啟發,要是1年前問我,估計很快就能做出來了,就是很久不用了,一直用C++來著,真是對不住啊~~~

⑺ Python serial

>>> import serial
>>> ser = serial.Serial(0) #開啟串口0
>>> ser.write("\xAA") #寫十六進制AA
>>> ser.close() #關閉串口

閱讀全文

與python十六進制串口通信相關的資料

熱點內容
黑馬python講義 瀏覽:131
php高並發測試 瀏覽:86
第二屆程序員節開幕式 瀏覽:82
運維程序員腳本 瀏覽:369
塑源碼燕窩的安全性 瀏覽:174
作業調度採用高響應比優先調度演算法 瀏覽:160
和平精英如何切換蘋果到安卓 瀏覽:530
資料庫調用表單的命令 瀏覽:920
程序員技能大賽 瀏覽:9
什麼app買品牌衣服 瀏覽:13
手機看世界名著哪個app好 瀏覽:493
運行命令切換列印機用戶 瀏覽:919
android滑動button 瀏覽:939
伺服器日誌可以干什麼 瀏覽:644
安卓系統空間怎麼清理軟體 瀏覽:343
維也納pdf 瀏覽:641
加密貨幣交易所哪個最好 瀏覽:816
linux的現狀 瀏覽:926
命令與征服叛逆者修改器 瀏覽:246
怎麼用ios玩安卓全民槍戰 瀏覽:668