最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于python編寫一個串口數(shù)據(jù)輸出程序

 更新時間:2025年10月24日 10:14:05   作者:Love丶伊卡洛斯  
這篇文章主要為大家詳細(xì)介紹了如何基于python編寫一個串口數(shù)據(jù)輸出程序,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,有需要的小伙伴可以了解下

前言

開發(fā)起因

串口調(diào)試工具,在串口斷開后需要重新選擇進行連接,這個過程會耗費一定的時間,而我們的模塊上電就開始打印各種日志,導(dǎo)致部分日志丟失。所以就有了這個程序

功能介紹

基于python3實現(xiàn)監(jiān)聽指定端口,獲取串口打印數(shù)據(jù)存入log.txt文件,并自動重連。

開發(fā)環(huán)境

  • 操作系統(tǒng):win10
  • 語言:python3.8.15
  • 編輯器:VS Code
  • 依賴庫:pyserial (pip install pyserial)

項目地址

github gitee

目錄結(jié)構(gòu)

  • config.json (配置文件)
  • log.txt (日志文件)
  • main.exe (編譯打包好的程序)
  • main.py (程序源碼)
  • package.json (程序打包的相關(guān)配置 auto-py-to-exe)

使用

1.配置

自行修改為合適的配置即可。

{
    // 連接的串口名
    "serial_port": "COM17",
    // 波特率
    "serial_baudrate": 115200,
    // 斷開連接后的重連間隔(s),太短電腦可能會藍屏,注意!
    "interval_time": 1
}

2.運行

雙擊main.exe即可。或搭建環(huán)境,運行 python main.py。

源碼

config.json

{
    "serial_port": "COM17",
    "serial_baudrate": 115200,
    "interval_time": 1
}

main.py (外置配置版)

# 開發(fā)起因:串口調(diào)試工具,在串口斷開后需要重新選擇進行連接,這個過程會耗費一定的時間,而我們的模塊上電就開始打印各種日志,導(dǎo)致部分日志丟失。所以就有了這個程序
# 開發(fā)環(huán)境 py3.8
# 依賴庫 pyserial
import serial as pyserial
import time
from datetime import datetime
import sys
import json

# 連接的串口名
serial_port = 'COM17'
# 波特率
serial_baudrate = 115200
# 斷開連接后的重連間隔(s),太短電腦可能會藍屏,注意!
interval_time = 1

# 打開本地文件
with open('config.json', 'r', encoding='utf-8') as f:
    # 通過load方法將文件內(nèi)容讀入到字典中
    data = json.load(f)

try:
    serial_port = data['serial_port']
    serial_baudrate = data['serial_baudrate']
    interval_time = data['interval_time']
    print("[當(dāng)前配置]\n串口名:{}\n波特率:{}\n重連間隔(s):{}".format(serial_port, serial_baudrate, interval_time))
    f.close()
except Exception as e:
    print(e)
    print("解析config.json出錯,請檢查配置是否正確")
    sys.exit()

def get_current_date_string(format="%Y-%m-%d"):
    """返回當(dāng)前日期的字符串表示形式,格式為 YYYY-MM-DD"""
    return datetime.today().strftime(format)

while True:
    try:
        ser = pyserial.Serial(serial_port, serial_baudrate)
        if ser.isOpen():
            print("串口已連接")
            break
    except pyserial.SerialException:
        print("串口連接失敗,請檢查串口是否正確連接")
        time.sleep(interval_time)

while True:
    try:
        # 忽略無法解碼的字節(jié)
        data = ser.readline().decode('utf-8', 'ignore')
        print(data)
        file_path = "log-" + get_current_date_string() + ".txt"
        # 日志寫入本地
        with open(file_path, 'a') as f:
            f.write(data)
        f.close()
    except pyserial.SerialException:
        print("串口斷開,正在嘗試重新連接", end="")
        while True:
            try:
                ser = pyserial.Serial(SERIAL_PORT, SERIAL_BAUDRATE)
                if ser.isOpen():
                    print("\n串口已重新連接")
                    break
            except pyserial.SerialException:
                print(".", end="", flush=True)
                time.sleep(interval_time)

com_loop_link.py (寫死版)

# 開發(fā)起因:串口調(diào)試工具,在串口斷開后需要重新選擇進行連接,這個過程會耗費一定的時間,而我們的模塊上電就開始打印各種日志,導(dǎo)致部分日志丟失。所以就有了這個程序
# 開發(fā)環(huán)境 py3.8
# 依賴庫 pyserial
import serial as pyserial
import time

# 連接的串口名
SERIAL_PORT = 'COM17'
# 波特率
SERIAL_BAUDRATE = 115200
# 斷開連接后的重連間隔,太短電腦可能會藍屏,注意!
sleep_time = 1

while True:
    try:
        ser = pyserial.Serial(SERIAL_PORT, SERIAL_BAUDRATE)
        if ser.isOpen():
            print("串口已連接")
            break
    except pyserial.SerialException:
        print("串口連接失敗,請檢查串口是否正確連接")
        time.sleep(sleep_time)

while True:
    try:
        # 忽略無法解碼的字節(jié)
        data = ser.readline().decode('utf-8', 'ignore')
        print(data)
        # 日志寫入本地
        with open('log.txt', 'a') as f:
            f.write(data)
    except pyserial.SerialException:
        print("串口斷開,正在嘗試重新連接", end="")
        while True:
            try:
                ser = pyserial.Serial(SERIAL_PORT, SERIAL_BAUDRATE)
                if ser.isOpen():
                    print("\n串口已重新連接")
                    break
            except pyserial.SerialException:
                print(".", end="", flush=True)
                time.sleep(sleep_time)

到此這篇關(guān)于基于python編寫一個串口數(shù)據(jù)輸出程序的文章就介紹到這了,更多相關(guān)python串口數(shù)據(jù)輸出程序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

肇源县| 邢台市| 合水县| 岫岩| 厦门市| 镇康县| 宣恩县| 新泰市| 潜山县| 汤原县| 肇庆市| 高台县| 饶平县| 潞城市| 民勤县| 安龙县| 灵台县| 静海县| 张家口市| 历史| 丰台区| 永济市| 奉贤区| 扎兰屯市| 平度市| 云霄县| 铜陵市| 临朐县| 建德市| 呼和浩特市| 福贡县| 会东县| 泸州市| 益阳市| 永平县| 张家界市| 阳信县| 郴州市| 苏尼特右旗| 仪征市| 兰坪|