C++收发串口数据(并解决C++多文件编译问题)

书接上回,已经创建了虚拟串口,接下来就要用代码进行调试。

源代码参考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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值