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
相关推荐
楚Y6同学1 天前
QT之键盘控制虚拟遥控系统开发总结
开发语言·c++·qt·串口通信
每天开心6 天前
🐞一次由事件冒泡引发的 React 弹窗关闭 Bug 排查与解决
前端·javascript·debug
zero_face15 天前
记录一次Spring5中事件通知机制bug引起的生产事故
后端·spring·debug
JosieBook19 天前
【web应用】如何进行前后端调试Debug? + 前端JavaScript调试Debug?
前端·chrome·debug
棋影21 天前
主流PLC串口自由协议通信标准化
串口通信·plc通信·modbus通信
JohnYan1 个月前
Bun技术评估 - 16 Debug
javascript·后端·debug
迷路爸爸1801 个月前
让 VSCode 调试器像 PyCharm 一样显示 Tensor Shape、变量形状、变量长度、维度信息
ide·vscode·python·pycharm·debug·调试
AverageJoe19911 个月前
一次vite热更新不生效问题排查
前端·debug·vite
LuciferHuang1 个月前
震惊!三万star开源项目竟有致命Bug?
前端·javascript·debug
R.X. NLOS1 个月前
VS Code远程开发新方案:使用SFTP扩展解决Remote-SSH连接不稳定问题
运维·服务器·ssh·debug·vs code