下載 pyserial包
創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計與策劃設(shè)計,錦屏網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:錦屏等地區(qū)。錦屏做網(wǎng)站價格咨詢:13518219792
def OpenCom(self,*args): #設(shè)置端口和波特率 selComPort =‘com2’ #波特率 selBaudRate =9600 #奇偶校驗 selParity = 'N' try: if(not self.mySerial): self.mySerial = serial.Serial(port=selComPort, baudrate=selBaudRate,bytesize=8,parity=selParity,stopbits=1,timeout=5) else: if(self.mySerial.isOpen()): self.mySerial.close() self.mySerial = serial.Serial(port=selComPort, baudrate=selBaudRate, bytesize=8, parity=selParity, stopbits=1, timeout=5) self.lblInfo['text'] = '打開成功!' except Exception as ex: self.lblInfo['text'] = '打開失?。?
#使用com口發(fā)送modbus協(xié)議給終端設(shè)備。
def btnEmId_Click(self):
barray = bytearray([0x05, 0x03, 0xA#, 0x54, 0x00, 0x08])
vOldEmId = self.txbOldEmId.get()
vNewEmId = self.txbNewEmId.get()
barray[0] = int(vOldEmId)
barray[5] = int(vNewEmId)
#crc校驗
strInput = utils.crc16_append(barray)
print(barray)
n = self.mySerial.write(barray)
if(n 0):
str = self.mySerial.readall()
self.lblInfo['text'] = 'success!'
# for s in str:
# print (hex(s))
else:
self.lblInfo['text'] = 'error!'
用ser.isOpen()查看返回False,說明ser.close()起作用了啊。用管理員身份打開cmd,再執(zhí)行腳本試試?
python提供了豐富的module 對串口的操作同樣有對應(yīng)的module:serial
環(huán)境:python3.5 藍牙模塊:HC-05 波特率38400
首先導(dǎo)入serial模塊(通過pip install serial 安裝)
獲取串口ser 通過serial.Serial(地址,波特率,超時時間)
創(chuàng)建線程監(jiān)聽串口數(shù)據(jù)
使用 ser.in_waiting() 獲知數(shù)據(jù)量 這個函數(shù)返回當(dāng)前串口收到的數(shù)據(jù)長度
收取數(shù)據(jù)后進行詳細操作
使用 pyserial 就可以處理串口通信,這個包是跨平臺的。
示例程序在這里:
import?serial
#?創(chuàng)建serial實例
serialport?=?serial.Serial()
serialport.port?=?'COM1'
serialport.baudrate?=?9600
serialport.parity?=?'N'
serialport.bytesize?=?8
serialport.stopbits?=?1
serialport.timeout?=?0.6
try:
serialport.open()
serialport.setDTR(True)
serialport.setRTS(True)
except?Exception,?ex:
print?ex
#?發(fā)送數(shù)據(jù)
serialport.write(raw_data)
#?根據(jù)項目要求,可以開一個線程掃描接收數(shù)據(jù)