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
相关推荐
mingshili3 天前
[python] 如何debug python脚本中C++后端的core dump
c++·python·debug
charlie1145141918 天前
从0开始的STM32之旅8 串口通信(II)
stm32·单片机·嵌入式硬件·c·串口通信
ViatorSun14 天前
「图文详解」Pycharm 远程服务器Debug
python·深度学习·算法·pycharm·debug·1024程序员节
tekin1 个月前
图解 微信开发者工具 小程序源码 调试、断点标记方法 , 微信小程序调试器,真机调试断点调试方法,小程序网络API请求调试方法 总结
微信小程序·debug·调试·断点·真机调试·miniapp·网络api请求调试方法
云卷风舒1 个月前
Fedora40使用Timeshift恢复数据后无法启动(解决办法)
linux·debug·fedora
Qiming_v1 个月前
ValueError: You cannot perform fine-tuning on purely quantized models.
debug·peft
Gogeof1 个月前
云原生化 - 工具镜像(简约版)
微服务·云原生·debug·工具
songgz1 个月前
Zig开发环境搭建
vscode·debug·zig
organic2 个月前
linux内核调试痛点之函数参数抓捕记
linux·debug·kernel
程序员晚枫2 个月前
一不小心,给腾讯云提了一个Bug
github·debug·腾讯