python的串口操作(pyserial)

本文轉自:https://blog.csdn.net/absinjun/article/details/81407790

一、安裝pyserial庫

pip install pyserial

二、pyserial庫常用函數介紹

serial = serial.Serial(‘COM1’, 115200)  打開COM1並設置波特率爲115200,COM1只適用於Windows
serial = serial.Serial(‘/dev/ttyS0’, 115200)  打開/dev/ttyS0並設置波特率爲115200, 只適用於Linux
print serial .portstr     能看到第一個串口的標識
serial .write(“hello”)     往串口裏面寫數據
serial .close()     關閉serial 表示的串口
serial .open()      打開串口
data = serial .read(num)      讀num個字符
data = serial .readline()     讀一行數據,以/n結束,要是沒有/n就一直讀,阻塞。
serial .baudrate = 9600       設置波特率
print serial      可查看當前串口的狀態信息
serial .isOpen()      當前串口是否已經打開
serial.inWaiting()     判斷當前接收的數據
serial.flushInput()     清除輸入緩衝區數據
serial.flushOutput()     中止當前輸出並清除輸出緩衝區數據

三、 實例: 獲取從其他串口發送來的數據並回顯

#!/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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章