CSerialPort教程4.3.x (8) - CSerialPort调试模式的使用

CSerialPort教程4.3.x (8) - CSerialPort调试模式的使用

前言

CSerialPort项目是一个基于C/C++的轻量级开源跨平台串口类库,可以轻松实现跨平台多操作系统的串口读写,同时还支持C#, Java, Python, Node.js等。

CSerialPort项目的开源协议自 V3.0.0.171216 版本后采用GNU Lesser General Public License v3.0

为了让开发者更好的使用CSerialPort进行开发,特编写基于4.3.x版本的CSerialPort教程系列。

CSerialPort项目地址:

本文将介绍CSerialPort如何输出详细调试信息及日志。

1. 开启CSerialPort输出详细调试信息及日志

默认情况下,CSerialPort不会输出详细调试信息及日志。

可以通过宏定义CSERIALPORT_DEBUG来开启输出调试信息及日志(v4.2.2及以后版本支持)。

可以输出串口初始化、发送、接收、写缓冲区等详细调试信息。

相关代码位于include\CSerialPort\SerialPort_global.h

复制代码
#ifdef CSERIALPORT_DEBUG
#include <stdio.h>
#include <string.h> // strrchr
#ifdef _WIN32
#ifndef __func__
#define __func__ __FUNCTION__
#endif
#define LOG_INFO(format, ...) printf("[CSERIALPORT_DEBUG] %s - " format "\n", __func__, ##__VA_ARGS__)
#else
#define LOG_INFO(format, ...) printf("[CSERIALPORT_DEBUG] %s - " format "\n", __func__, ##__VA_ARGS__)
#endif
#else
#define LOG_INFO(format, ...)
#endif

2. 控制台中查看CSerialPort详细调试信息

控制台示例程序位于examples\CommNoGui,通过在CMakeLists.txt中增加宏定义CSERIALPORT_DEBUG开启输出调试信息及日志。

复制代码
add_definitions(-DCSERIALPORT_DEBUG)

结果:

复制代码
Version: https://github.com/itas109/CSerialPort - V4.3.0.230215

availableFriendlyPorts:
1 - COM1 USB-SERIAL CH340  USB\VID_1A86&PID_7523&REV_0264

Please Input The Index Of Port(1 - 1)
1
Port Name: COM1
[CSERIALPORT_DEBUG] CSerialPortWinBase::openPort - portName: COM1, baudRate: 9600, dataBit: 8, parity: 0, stopBit: 0, flowControl: 0, mode: async, readBufferSize:4096(4096), readIntervalTimeoutMS: 0, minByteReadNotify: 1
[CSERIALPORT_DEBUG] CSerialPortWinBase::openPort - open COM1. code: 0, message: success
Open COM1 Success. Code: 0, Message: success
[CSERIALPORT_DEBUG] CSerialPortWinBase::writeData - write. len: 5, hex(top100): 3132333435
[CSERIALPORT_DEBUG] CSerialPortWinBase::writeData - write. len: 7, hex(top100): 69746173313039
[CSERIALPORT_DEBUG] CSerialPortWinBase::commThreadMonitor - write buffer(usedLen 12). len: 12, hex(top100): 313233343569746173313039
[CSERIALPORT_DEBUG] CSerialPortWinBase::commThreadMonitor - onReadEvent. portName: COM1, readLen: 12
[CSERIALPORT_DEBUG] CSerialPortWinBase::readData - read. len: 12, hex(top100): 313233343569746173313039
COM1 - Count: 1, Length: 12, Str: 12345itas109, Hex: 0x31 0x32 0x33 0x34 0x35 0x69 0x74 0x61 0x73 0x31 0x30 0x39

3. MFC等GUI中查看CSerialPort详细调试信息

有GUI的程序不能直接查看控制台输出的信息,这里我们使用重定向的方式将控制台信息输出到日志。

这里以examples\CommMFC为例。

CMakeLists.txt中增加宏定义CSERIALPORT_DEBUG开启输出调试信息及日志。

复制代码
add_definitions(-DCSERIALPORT_DEBUG)

控制台中以重定向的方式运行CommMFC.exe

复制代码
CommMFC.exe > CSerialPort.log

正常操作后,关闭CommMFC.exe。

结果:

CSerialPort.log

复制代码
[CSERIALPORT_DEBUG] CSerialPortWinBase::openPort - portName: COM1, baudRate: 9600, dataBit: 8, parity: 0, stopBit: 0, flowControl: 0, mode: async, readBufferSize:4096(4096), readIntervalTimeoutMS: 0, minByteReadNotify: 1
[CSERIALPORT_DEBUG] CSerialPortWinBase::openPort - open COM1. code: 0, message: success
[CSERIALPORT_DEBUG] CSerialPortWinBase::writeData - write. len: 29, hex(top100): 68747470733A2F2F626C6F672E6373646E2E6E65742F69746173313039
[CSERIALPORT_DEBUG] CSerialPortWinBase::commThreadMonitor - write buffer(usedLen 29). len: 29, hex(top100): 68747470733A2F2F626C6F672E6373646E2E6E65742F69746173313039
[CSERIALPORT_DEBUG] CSerialPortWinBase::commThreadMonitor - onReadEvent. portName: COM1, readLen: 29
[CSERIALPORT_DEBUG] CSerialPortWinBase::readData - read. len: 29, hex(top100): 68747470733A2F2F626C6F672E6373646E2E6E65742F69746173313039

License

License under CC BY-NC-ND 4.0: 署名-非商业使用-禁止演绎


Reference:

  1. https://github.com/itas109/CSerialPort
  2. https://gitee.com/itas109/CSerialPort
  3. https://blog.csdn.net/itas109
相关推荐
一川月白7092 天前
51单片机---硬件学习(电子琴、主从应答模式、modbus模型、DS18B20传感器显示温度)
嵌入式硬件·51单片机·串口通信·异步通信·串行通信·同步通信·并行通信
sheepwjl3 天前
《嵌入式硬件(三):串口通信》
网络·嵌入式硬件·网络协议·串口通信
XYiFfang6 天前
【Python+requests】解决Python requests中的ProxyError:SSL版本错误问题详解
python·debug·ssl·常见错误·代理配置
青草地溪水旁8 天前
C++ 登录状态机项目知识笔记
c++·ubuntu·debug·vscode远程调试
快乐肚皮12 天前
IntelliJ IDEA Debug 模式功能指南
java·ide·intellij-idea·debug
AAA修煤气灶刘哥20 天前
日志排查不用慌!从采集到 ELK 实战,手把手教你搞定线上问题
后端·面试·debug
摸着石头过河的石头21 天前
前端调试全攻略:从PC到移动端的一站式实战指南
前端·debug
大熊猫侯佩21 天前
「内力探查术」:用 Instruments 勘破 SwiftUI 卡顿迷局
swiftui·debug·xcode
楚Y6同学25 天前
QT之键盘控制虚拟遥控系统开发总结
开发语言·c++·qt·串口通信
每天开心1 个月前
🐞一次由事件冒泡引发的 React 弹窗关闭 Bug 排查与解决
前端·javascript·debug