Python-シリアル通信
13820 ワード
Python-シリアル通信
シリアル通信(Serial Communication)とは、外付け機器とコンピュータとの間で、データ信号線、アース線等を介してビット毎にデータを伝送する通信方式である.1、前提条件:(1)一対の情報を送受信するCOMポートを提供するか、或いは仮想ツールを使ってCOMポートを作成する(vspd 7.2.308-アナログシリアルポートツール)(2)デバッグアシスタントが必要で、自動的に監視コンピュータのCOMポートを検索して、デバッグプログラム(XCOM V 2.0-シリアルポートデバッグツール)に使用する
2、プログラミング:
シリアル通信(Serial Communication)とは、外付け機器とコンピュータとの間で、データ信号線、アース線等を介してビット毎にデータを伝送する通信方式である.1、前提条件:(1)一対の情報を送受信するCOMポートを提供するか、或いは仮想ツールを使ってCOMポートを作成する(vspd 7.2.308-アナログシリアルポートツール)(2)デバッグアシスタントが必要で、自動的に監視コンピュータのCOMポートを検索して、デバッグプログラム(XCOM V 2.0-シリアルポートデバッグツール)に使用する
2、プログラミング:
#_*_ coding:utf-8 _*_
import serial # serial ,serial
import threading
#threading thread API 。 。
import serial.tools.list_ports #
port_list = list(serial.tools.list_ports.comports())
if len(port_list) == 0:
print(" !")
elif len(port_list) > 0:
for i in port_list: #
print(i) #
class Ser(object): #
def __init__(self,port):
self.port = port
#
self.ser = serial.Serial(self.port, baudrate= 9600, timeout = 1,)
def send_message(self):
if self.ser.isOpen(): #
print("
open %s success" % self.port) #
self.contunt = True
while self.contunt:
#com1 com2
self.contunts = input(" :")
self.ser.write(str(self.contunts).encode("gb2312"))
#encode()
# str2.encode('gb2312'), unicode str2 gb2312 。
# ,COM1 COM2 ,COM2( )
if self.contunts == "quiet": # Quiet ,
self.contunt = False
break #
else: # com1 ,
print("open failed")
self.ser.close() #
def receive_message(self):
if self.ser.isOpen(): #
print("
open COM1 sucess!")
print(" :")
self.receive = True #
while self.receive: #
receives = self.ser.readlines()
# readlines()
if receives == []:
# , , , continue
continue
elif receives == [b'quiet\r
']: # ,
self.receive = False
print("
COM1 ")
self.ser.close() #
break #
elif receives != []: # [] ,
for asr in receives: # for
read = asr.decode("gb2312") # bytes ,
print(read)
'''
decode() bytes str ,
, decode , utf-8
utf-8 python
'''
else: # com1 ,
print("
open failed")
self.ser.close() #
if __name__ == '__main__':
print("
!")
action = Ser("COM1") #
t1_send = threading.Thread(target = action.send_message())
# , send_message()
t1_send.start() #
t2_receive = threading.Thread(target = action.receive_message())
# , receive_message()
t2_receive.start() #
print("
!")