不思議なpython(六)のpythonのシリアルポート操作(pyserial)

4313 ワード

概要:最近のプロジェクトは突然pythonシリアルポート操作を使用します.これは、資料を調べて、ドキュメントをめくって、シリアルポート操作の簡単な使い方を書く時です.後でpyqtを使ってインタフェースを書いて、シリアルポートデバッグ端末を作る時間があります.
(1)pyserialライブラリのインストール
pip install pyserial

(2)pyserialライブラリの一般的な関数の紹介
serial = serial.Serial(‘COM 1’,115200)はCOM 1を開き、ボーレートを115200に設定し、COM 1はWindowsのみに適用される
serial = serial.Serial('/dev/ttyS 0',115200)は/dev/ttyS 0をオンにし、ボーレートを115200に設定し、Linuxのみに適用します.
print serial .portstrは最初のシリアルポートの識別を見ることができます
serial .write(「hello」)シリアルポートにデータを書く
serial .close()serialで表されるシリアルポートを閉じる
serial .Open()シリアルポートを開く
data = serial .read(num)num文字を読む
data = serial .readline()は1行のデータを読み、/nで終わり、/nがなければずっと読み、ブロックします.
serial .baudrate=9600ボーレートの設定
print serialは、現在のシリアルポートのステータス情報を表示できます.
serial .isOpen()現在のシリアルポートが開いているかどうか
serial.InWaiting()現在受信しているデータを判断
serial.flushInput()入力バッファデータの消去
serial.flushOutput()現在の出力を中止し、出力バッファデータをクリア
(3)例:他のシリアルポートから送信されたデータを取得して再表示する
#!/usr/bin/python
# coding=UTF-8

import serial

###################################################
#
#    :         hex  
#    :         
#    :       
#
###################################################

def hexshow(data):
    hex_data = ''
    hLen = len(data)
    for i in xrange(hLen):
        hvol = ord(data[i])
        hhex = '%02x' % hvol
        hex_data += hhex+' '
    print 'hexshow:', hex_data


###################################################
#
#    :           hex    
#    :       
#    :       
#
###################################################

def hexsend(string_data=''):
    hex_data = string_data.decode("hex")
    return hex_data



if __name__ == '__main__':
    serial = serial.Serial('/dev/ttyS0', 115200)
    print serial
    if serial.isOpen():
       print("open success")
    else:
        print("open failed")


    try:
        while True:
            count = serial.inWaiting()
            if count > 0:
                data = serial.read(count)
                if data != b'':
                    print("receive:", data)
                    serial.write(data)
                else:
                    serial.write(hexsend(data))
    except KeyboardInterrupt:
        if serial != None:
            serial.close()


ソース:https://download.csdn.net/download/absinjun/10582891