準備著手寫乙個串列埠工具,當前程式設計環境,並沒有辦法接好下位機平台,需要模擬出乙個串列埠,不斷傳送資訊,方便除錯串列埠工具。
#列出所有當前的com口
port_list = list(serial.tools.list_ports.comports())
port_list_name =
class serialport:
def __init__(self,port,buand):
self.port = serial.serial(port,buand)
self.port.close()
if not self.port.isopen():
self.port.open()
def port_open(self):
if not self.port.isopen():
self.port.open()
def port_close(self):
self.port.close()
def send_data(self):
#date = datetime.now().strftime('%y-%m-%d %h:%m:%s.%f')[:-3]
while true:
date = datetime.now().strftime('%h:%m:%s.%f')[:-3]
print("send:",date)
self.port.write(date.encode())
time.sleep(1)
def read_data(self):
while true:
count = self.port.inwaiting()
if count > 0:
rec_str = self.port.read(count)
print("receive:",rec_str.decode())
def show_all_com():
if len(port_list) <= 0:
print("the serial port can't find!")
else:
for itms in port_list:
if __name__ == '__main__':
baunrate = 115200
print("1.list all com")
show_all_com()
print(port_list_name)
print("2.open write port ",port_list_name[0])
serialport_w = port_list_name[0]
mserial_w = serialport(serialport_w,baunrate)
print("3.start write thread")
t1 = threading.thread(target=mserial_w.send_data)
t1.setdaemon(true)
t1.start()
print("4.open read port ",port_list_name[1])
serialport_r = port_list_name[1]
mserial_r = serialport(serialport_r,baunrate)
print("5.start read thread")
t2 = threading.thread(target=mserial_r.read_data)
t2.setdaemon(true)
t2.start()
#do something else, make main thread alive there
while true:
time.sleep(10)
啟動乙個子執行緒,開啟com3 ,將當前時間作為資料,寫入到串列埠
啟動另乙個子執行緒,開啟com4,讀取串列埠中寫入的資料
1.串列埠中寫入的資料為byte型別,str to byte 需要 encode(), 預設使用utf-8
2.從串列埠中讀取的資料,也是byte型別,byte to str 需要decode(), 預設使用utf-8
3.虛擬串列埠是兩個裝置直接的通訊 ,需要在com3 中寫 ,在com4中讀,筆者犯過乙個低階錯誤,com3寫,也在com3中讀,不會出任何資料
4.子執行緒設定為守護執行緒,主線程退出,子執行緒隨之退出,後續可以在主線程中處理讀取到的資料
python虛擬串列埠 python 虛擬串列埠通訊
準備著手寫乙個串列埠工具,當前程式設計環境,並沒有辦法接好下位機平台,需要模擬出乙個串列埠,不斷傳送資訊,方便除錯串列埠工具。這兩個串列埠是互相接通的,乙個com 可以當作上位機,乙個com可以當作下位機 2.python 實現向乙個串列埠內寫資料,另乙個串列埠內接受資料 usr bin pytho...
c 藍芽虛擬串列埠 C 虛擬串列埠通訊
將主埠com8拆分成 com1和com2兩個虛擬埠 com8接收的訊息會傳遞給com1和com2 serialport spsend spsend,spreceive用虛擬串列埠連線,它們之間可以相互傳輸資料。spsend傳送資料 serialport spreceive spreceive接受資料...
python串列埠通訊
然後需要安裝python的serial庫 pip install pyserial在pyserial中設定串列埠的操作為 serial.serial portx,bps,timeout waittime 其中,portx為埠名稱,bps為波特率,timeout為超時時間,以秒為單位,所以操作非常簡單...