Python-シリアル通信

13820 ワード

Python-シリアル通信
シリアル通信(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("
!"
)