python【串列埠操作】
阿新 • • 發佈:2021-09-13
import serial import sys from time import sleep import time TELNET_RETURN = "\n" try: ser = serial.Serial("COM11", 115200,timeout=0, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS) except: sys.exit("Error connecting device") result=ser.write(TELNET_RETURN.encode())#寫資料 # 串列埠要等0.5秒才有ser.inWaiting() > 0 for _ in range(10): print(time.strftime("%Y%m%d_%H_%M_%S", time.localtime())) queue = ser.inWaiting() if queue > 0: print(time.strftime("%Y%m%d_%H_%M_%S", time.localtime())) data = ser.read(1000) print (data) sleep(0.2) ser.close()
import serial # 匯入模組 try: # 埠,GNU / Linux上的/dev/ttyUSB0 等 或 Windows上的 COM3 等 portx = "COM3" # 波特率,標準值之一:50,75,110,134,150,200,300,600,1200,1800,2400,4800,9600,19200,38400,57600,115200 bps = 115200 # 超時設定,None:永遠等待操作,0為立即返回請求結果,其他值為等待超時時間(單位為秒) timex = 5 # 開啟串列埠,並得到串列埠物件 ser = serial.Serial(portx, bps, timeout=timex) # print("串列埠詳情引數:", ser) # print(ser.port) # 獲取到當前開啟的串列埠名 # print(ser.baudrate) # 獲取波特率 result = ser.write("我是東小東".encode("gbk")) # 寫資料 print("寫總位元組數:", result) # print(ser.read())#讀一個位元組 # print(ser.read(10).decode("gbk"))#讀十個位元組 # print(ser.readline().decode("gbk"))#讀一行 # print(ser.readlines())#讀取多行,返回列表,必須匹配超時(timeout)使用 # print(ser.in_waiting)#獲取輸入緩衝區的剩餘位元組數 # print(ser.out_waiting)#獲取輸出緩衝區的位元組數 # 迴圈接收資料,此為死迴圈,可用執行緒實現 while True: if ser.in_waiting: str = ser.read(ser.in_waiting).decode("gbk") if (str == "exit"): # 退出標誌 break else: print("收到資料:", str) print("---------------") ser.close() # 關閉串列埠 except Exception as e: print("---異常---:", e)