python串列埠通訊

2022-06-08 11:36:13 字數 1871 閱讀 7140

1 編碼:

def bytes(datadict):

strbody = json.dumps(datadict) # 將dict 資料妝化為字串

sendbuf = bytearray()

sendbuf += ('%04x' % len(strbody)).encode()

sendbuf += strbody.encode() # 將字串轉化為位元組陣列

crcval = crc16kermit().calculate(str(strbody)) sendbuf += crcval.encode() return sendbuf

2 解碼:

msg = json.loads(body.decode('

utf-8

')) #

先將位元組陣列解碼為字串 , json編碼的字串轉換回乙個python資料結構

3 crc16:

from ctypes import

c_ushort

class

crc16kermit(object):

crc16kermit_tab =

crc16kermit_constant = 0x8408

def__init__

(self):

ifnot len(self.crc16kermit_tab): self.init_crc16kermit() #

initialize the precalculated tables

def calculate(self, string=''

):

try:

ifnot isinstance(string, str): raise exception("

please provide a string as argument for calculation.")

ifnot string: return

0 crcvalue = 0x0000

for c in

string:

tmp = crcvalue ^ord(c)

crcvalue = c_ushort(crcvalue >> 8).value ^ int(self.crc16kermit_tab[(tmp & 0x00ff)], 0)

#after processing, the one's complement of the crc is calcluated and the

# low_byte = (crcvalue & 0xff00) >> 8high_byte = (crcvalue & 0x00ff) << 8crcvalue = low_byte |high_byte

return

"%04x

" %crcvalue

except

:

print("

calculate fail")

definit_crc16kermit(self):

'''the algorithm use tables with precalculated values

'''for i in range(0, 256):

crc =c_ushort(i).value

for j in range(0, 8):

if (crc & 0x0001):

crc = c_ushort(crc >> 1).value ^self.crc16kermit_constant

else

: crc = c_ushort(crc >> 1).value

python串列埠通訊

然後需要安裝python的serial庫 pip install pyserial在pyserial中設定串列埠的操作為 serial.serial portx,bps,timeout waittime 其中,portx為埠名稱,bps為波特率,timeout為超時時間,以秒為單位,所以操作非常簡單...

python 虛擬串列埠通訊

準備著手寫乙個串列埠工具,當前程式設計環境,並沒有辦法接好下位機平台,需要模擬出乙個串列埠,不斷傳送資訊,方便除錯串列埠工具。列出所有當前的com口 port list list serial.tools.list ports.comports port list name class serial...

樹莓派串列埠通訊python 樹莓派串列埠通訊設定

實驗環境樹莓派 3b 開發板 2018 06 27 raspbian stretch 樹莓派作業系統 使用 windows 10 通過網線連線遠端登陸訪問方式控制樹莓派 實驗目的 為了將樹莓派構建成乙個智慧型家居的資料中心,我們需要在樹莓派上連線 zigbee 無線通訊模組,實現與感測器的一對多通訊...