书接上回,已经创建了虚拟串口,接下来就要用代码进行调试。
源代码参考https://github.com/ayowin/WZSerialPort,感谢大佬。
代码部分,对于C++的目录结构其实我之前了解的并不深入,之前用过keil写单片机程序,集成在IDE里面还是比较方便的,所以对多文件编译底层流程就不太清楚。
代码部分
操作系统
Ubuntu 20.04.6
目录结构
-
头文件( .h )。放置各种声明,用于被cpp文件包含。(include/WzSerialPort.h)
-
模块文件(.cpp)。放置一些函数定义,也称为功能模块。(WzSerialPort.cpp)
-
主程序文件(.cpp)。包含main()的文件,程序入口,调用模块文件实现的方法。(main.cpp)
include/WzSerialPort.h
#ifndef _WZSERIALPORT_H
#define _WZSERIALPORT_H
class WzSerialPort
{
public:
WzSerialPort();
~WzSerialPort();
// 打开串口,成功返回true,失败返回false
// portname(串口名): 在Windows下是"COM1""COM2"等,在Linux下是"/dev/ttyS1"等
// baudrate(波特率): 9600、19200、38400、43000、56000、57600、115200
// parity(校验位): 0为无校验,1为奇校验,2为偶校验,3为标记校验(仅适用于windows)
// databit(数据位): 4-8(windows),5-8(linux),通常为8位
// stopbit(停止位): 1为1位停止位,2为2位停止位,3为1.5位停止位
// synchronizeflag(同步、异步,仅适用与windows): 0为异步,1为同步
bool open(const char* portname, int baudrate, char parity, char databit, char stopbit, char synchronizeflag=1);
//关闭串口,参数待定
void close();
//发送数据或写数据,成功返回发送数据长度,失败返回0
int send(const void *buf,int len);
//接受数据或读数据,成功返回读取实际数据的长度,失败返回0
int receive(void *buf,int maxlen);
private:
int pHandle[16];
char synchronizeflag;
};
#endif
WzSerialPort.cpp
#include "include/WzSerialPort.h"
#include <iostream>
#include