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: