实验动机
本来在Python中使用pyserial package快乐写串口,但是由于系统迁移需要改为C++,于是开始了C++菜鸟痛苦写串口过程。实现目标为PC作为上位机,Arduino作为下位机控制电机驱动使步进电机移动。全项目包括串口通讯模块Serial,电机控制模块Motor,和调用两个模块的main.cpp。本文具体记录串口通讯的调用,以及发送长字符串如何debug。
C++串口通讯代码
代码参考别的博文,做了面向对象的分离。系统为Windows,编译环境为VS2019。串口函数主要用到了windows.h中包含的定义。关于这个库的介绍可以看这里(1条消息) C++ windows.h详解_张耘嘉的博客-CSDN博客_c++ windows.h
话不多说,上代码。
Serial.h
#ifndef SERIALCLASS_H_INCLUDED
#define SERIALCLASS_H_INCLUDED
#define ARDUINO_WAIT_TIME 200
#include <windows.h>
#include <stdlib.h>
#include <conio.h>
class Serial
{
private:
HANDLE hSerial; //Serial comm handler
bool connected; //Connection status
COMSTAT status; //Get various information about the connection
DWORD errors; //Keep track of last error
public:
//Initialize Serial communication with the given COM port
Serial();
Serial(const char *portName);
//Close the connection
~Serial();
//Read data in a buffer, if nbChar is greater than the
//maximum number of