醬是創客的Python教學主題第1篇,以Python語言來實作教學,本篇教學將以Windows 10外接USB轉RS232 Serial並使用python的pySerial套件接收/發送byte實作,常見的應用就是使用AT command來發送簡訊
設備:
Windows PC一台
PYC U232 USB轉RS232 #露天拍賣 #蝦皮購物
接線方式:
Windows PC–USB–PYC U232(USB轉RS232)
PYC U232(USB轉RS232)–RS232線–自行撰寫的RS232設備(115200,N,8,1)
首先要先準備一台Windows PC,並安裝好Python最新的版本,並到Windows的cmd底下安裝python的pyserial套件
C:\Users\chosemaker\Desktop>pip install pyserial
接著我們安裝PYC U232的驅動程式,到他的官網下載驅動程式,裡面並附有如何在Windows安裝驅動程式的說明。接著到Windows裝置管理員,找出連接埠>>通訊連接埠,裡面會顯示出該USB的COM port 是多少,本範例使用COM1
開始來寫Python的程式
import serial, time ser = serial.Serial() ser.port = "COM1" #115200,N,8,1 ser.baudrate = 115200 ser.bytesize = serial.EIGHTBITS #number of bits per bytes ser.parity = serial.PARITY_NONE #set parity check ser.stopbits = serial.STOPBITS_ONE #number of stop bits ser.timeout = 0.5 #non-block read 0.5s ser.writeTimeout = 0.5 #timeout for write 0.5s ser.xonxoff = False #disable software flow control ser.rtscts = False #disable hardware (RTS/CTS) flow control ser.dsrdtr = False #disable hardware (DSR/DTR) flow control try: ser.open() except Exception as ex: print ("open serial port error " + str(ex)) exit() if ser.isOpen(): try: ser.flushInput() #flush input buffer ser.flushOutput() #flush output buffer #write 8 byte data ser.write([78, 78, 78, 78, 78, 78, 78, 78]) print("write 8 byte data: 78, 78, 78, 78, 78, 78, 78, 78") time.sleep(0.5) #wait 0.5s #read 8 byte data response = ser.read(8) print("read 8 byte data:") print(response) ser.close() except Exception as e1: print ("communicating error " + str(e1)) else: print ("open serial port error")
自行撰寫的RS232設備收到PC發的8 byte 0x78後,會回發一個8 byte裡面是可以直接顯示8個string “N”。建立一個new.py並放在/home/pi,執行python new.py就可以跑出以下
C:\Users\chosemaker\Desktop>python new.py write 8 byte data: 78, 78, 78, 78, 78, 78, 78, 78 read 8 byte data: b'NNNNNNNN'