CSerialPort教程(9) - CSerialPort输出详细调试信息及日志

CSerialPort教程(9) - CSerialPort输出详细调试信息及日志

前言

CSerialPort项目是基于C++的轻量级开源跨平台串口类库,用于实现跨平台多操作系统的串口读写。

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

为了让开发者更好的使用CSerialPort进行开发,特编写基于4.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)

结果:

availableFriendlyPorts:
1 - COM1 ELTIMA Virtual Serial Port  EVSERIAL7
3 - COM2 ELTIMA Virtual Serial Port  EVSERIAL7

Please Input The Index Of Port(1 - 2)
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
Open COM1 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 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
COM1 - Count: 1, Length: 29, Str: https://blog.csdn.net/itas109, Hex: 0x68 0x74 0x74 0x70 0x73 0x3A 0x2F 0x2F 0x62 0x6C 0x6F 0x67 0x2E 0x63 0x73 0x64 0x6E 0x2E 0x6E 0x65 0x74 0x2F 0x69 0x74 0x61 0x73 0x31 0x30 0x39
[CSERIALPORT_DEBUG] CSerialPortWinBase::writeData - write. len: 29, hex(top100): 68747470733A2F2F626C6F672E6373646E2E6E65742F69746173313039

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::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

Reference:

  1. https://github.com/itas109/CSerialPort
  2. https://gitee.com/itas109/CSerialPort
  3. https://blog.csdn.net/itas109
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

itas109

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值