pyserial串口使用小例子

一、收发测试-服务端(已有串口设备可以忽略)

import datetime
import random
import sys
import time
import serial

com_name = "COM2"
com_baud_rate = 115200
ser = serial.Serial(com_name, com_baud_rate)

if __name__ == '__main__':
    ser.close()

    try:
        ser.open()
    except serial.SerialException as e:
        print("Error opening serial port: %s" % e)
        ser.close()
        sys.exit()

    echo_bytes = "服务端收到了你的回答,你发送的是:\n".encode("utf-8")
    prompt_bytes = "server@com2#\n".encode()
    try:
        # ser.readline()
        while True:
            ser.write(prompt_bytes)
            ser.flush()
            read_data = ser.readline()
            ser.write(echo_bytes)
            ser.write(read_data)
            # ser.write(b"\n")
            # time.sleep(1)

    finally:
        ser.close()

二、简单的串口助手,可以连接一的服务器端,或者已有设备

import datetime
import random
import sys
import time
from threading import Thread
import serial

import logging

logger = logging.getLogger(__name__)

log_file_name_suffix = "app.log"


def init_log():
    logger.setLevel(logging.DEBUG)
    # 创建日志格式
    # formatter = logging.Formatter('%(pastime)s - %(name)s - %(levelness)s - %(message)s')
    formatter = logging.Formatter('%(message)s')

    stdout_handler = logging.StreamHandler()
    stdout_handler.setLevel(logging.INFO)
    stdout_handler.setFormatter(formatter)
    # file_log_name = random.Random.
    file_handler = logging.FileHandler('app.log')
    file_handler.setLevel(logging.DEBUG)
    file_handler.setFormatter(formatter)

    # 添加处理程序到日志记录器
    logger.addHandler(stdout_handler)
    logger.addHandler(file_handler)


com_name = "COM1"
com_baud_rate = 115200
ser = serial.Serial(com_name, com_baud_rate)


def thead_read_com():
    while True:
        new_data = ser.readline()
        new_str = new_data.decode("utf-8")[:-1:]
        # server@com2#
        logger.info()
        # time.sleep(1)
        # print(new_data.decode("utf-8"), end="")


def thead_write_com():
    prompt_str = "@" + com_name + "#"
    while True:
        # logger.debug(prompt_str)
        input_str = input()
        logger.debug(input_str)
        ser.write(input_str.encode("utf-8"))
        ser.write(b"\n")
        ser.flush()


if __name__ == '__main__':
    init_log()
    logger.info(datetime.datetime.now())
    ser.close()

    try:
        ser.open()
    except serial.SerialException as e:
        logger.error("Error opening serial port: %s" % e)
        ser.close()
        sys.exit()

    try:
        Thread(target=thead_write_com).start()
        Thread(target=thead_read_com).start()
        while True:
            time.sleep(36)
    finally:
        ser.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值