C++串口通信

更新时间:2023-06-25 16:11:16 阅读: 评论:0

C++串⼝通信⽬录
⼀、⽬的:
1、MFC接受串⼝发送来的信号处理事情
⼆、参考
1、MFC显⽰串⼝输⼊信息:
①总结:good:我⾃⼰总结的,⾮常好⽤
1、mfc如何多串⼝编程
①总结:but:失败
1、VS2015找不到ActiveX: Microsoft communication contro
①总结:but:失败
a、VS2015打开没有发现类似选项,可能要下载东西进⾏安装
1、VS2010找不到ActiveX: Microsoft communication contro
①总结:but:失败
1、MFC 串⼝编程详细教程图⽂并茂
1、windows纯C++实现串⼝通信
①总结:but:亲测:运⾏就会报错
1、
①总结:but:失败,没有库
1、
①总结:but:失败
1、c++串⼝通信实例
①总结:good:成功
三、步骤:有缺陷,⽆法读取到⼀些串⼝数据如AA,请参考另⼀篇
1、参考:c++串⼝通信实例
1、运⾏结果
①C++程序和串⼝根据可以实现通信
②main中InitPort总是报错,猜测可能是因为虚拟串⼝导致,但是不影响程序的相互通信
③能够判断输⼊的和预留的字符串是否是相等的
④⽬前这个参考的代码中有缺陷,当输⼊“AA”,代码得到的却是“2A”,所以代码中需要对“2A”进⾏作假,如果为“2A”变为“AA”
2、SerialPort.h
///
这是头⽂件的代码,主要是定义了⼀个类
///
#ifndef SERIALPORT_H_
#define SERIALPORT_H_
#include <process.h>
#include "TChar.h"
#include <string>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <Windows.h>
using namespace std;
定园
/** 串⼝通信类
*
*  本类实现了对串⼝的基本操作
*  例如监听发到指定串⼝的数据、发送指定数据到串⼝
*/
typedef enum AxisType
{
AXIS_XX = 2,
AXIS_YY = 3,
AXIS_ZZ = 1,
AXIS_OO = 4,
}AXIS_TYPE;
class CSerialPort
{
苏翊鸣冬奥
public:
CSerialPort(void);
~CSerialPort(void);
不用客气用英语怎么说public:
/** 初始化串⼝函数
*
*  @param:  UINT portNo 串⼝编号,默认值为1,即COM1,注意,尽量不要⼤于9
*  @param:  UINT baud  波特率,默认为9600
*  @param:  char parity 是否进⾏奇偶校验,'Y'表⽰需要奇偶校验,'N'表⽰不需要奇偶校验
*  @param:  UINT databits 数据位的个数,默认值为8个数据位
*  @param:  UINT stopsbits 停⽌位使⽤格式,默认值为1
*  @param:  DWORD dwCommEvents 默认为EV_RXCHAR,即只要收发任意⼀个字符,则产⽣⼀个事件
*  @return: bool  初始化是否成功
*  @note:  在使⽤其他本类提供的函数前,请先调⽤本函数进⾏串⼝的初始化
*        /n本函数提供了⼀些常⽤的串⼝参数设置,若需要⾃⾏设置详细的DCB参数,可使⽤重载函数
*          /n本串⼝类析构时会⾃动关闭串⼝,⽆需额外执⾏关闭串⼝
*  @e:
*/
//bool InitPort(UINT  portNo = 3, UINT  baud = CBR_19200, char  parity = 'N', UINT  databits = 8, UINT  stopsbits = 1, DWORD dwCommEvents = EV_RXCHAR); bool InitPort(UINT  portNo, UINT  baud, char  parity, UINT  databits , UINT  stopsbits, DWORD dwCommEvents);
/** 串⼝初始化函数
*
*  本函数提供直接根据DCB参数设置串⼝参数
*  @param:  UINT portNo
夏花儿*  @param:  const LPDCB & plDCB
*  @return: bool  初始化是否成功
*  @note:  本函数提供⽤户⾃定义地串⼝初始化参数
*  @e:
*/
bool InitPort(UINT  portNo, const LPDCB& plDCB);
/** 开启监听线程
*
*  本监听线程完成对串⼝数据的监听,并将接收到的数据打印到屏幕输出
*  @return: bool  操作是否成功
*  @note:  当线程已经处于开启状态时,返回fla
*  @e:
*/
bool OpenListenThread();
*
*
*  @return: bool  操作是否成功
*  @note:  调⽤本函数后,监听串⼝的线程将会被关闭
*  @e:
中外名人名言*/
bool CloListenTread();
/** 向串⼝写数据
*
*  将缓冲区中的数据写⼊到串⼝
*  @param:  unsigned char * pData 指向需要写⼊串⼝的数据缓冲区
*  @param:  unsigned int length 需要写⼊的数据长度
*  @return: bool  操作是否成功
*  @note:  length不要⼤于pData所指向缓冲区的⼤⼩
*  @e:
*/
bool WriteData(unsigned char *pData,  int length);
/** 获取串⼝缓冲区中的字节数
*
*
*  @return: UINT  操作是否成功
酿酒坊*  @note:  当串⼝缓冲区中⽆数据时,返回0
*  @e:
*/
UINT GetBytesInCOM();
警句名言
/*UINT WriteData1(unsigned long long int *pData1, unsigned int length);*/
财鱼
/** 读取串⼝接收缓冲区中⼀个字节的数据
*
*
*  @param:  char & cRecved 存放读取数据的字符变量
*  @return: bool  读取是否成功
*  @note:
*  @e:
*/
bool ReadChar(unsigned char &cRecved);
unsigned char *MotorMoveXY(unsigned char x, unsigned char y);//xy相对移动 unsigned char *StopMotor(unsigned char sm1);
unsigned char *SetSpeed(AXIS_TYPE enAxisType, int speed);
unsigned char *SetRunSpeed(int TY, int speed);
private:
/** 打开串⼝
*
*
*  @param:  UINT portNo 串⼝设备号
*  @return: bool  打开是否成功
*  @note:
*  @e:
*/
bool openPort(UINT  portNo);
/** 关闭串⼝
*
*
*  @return: void  操作是否成功
*  @note:
*  @e:
*/
void CloPort();

本文发布于:2023-06-25 16:11:16,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1037410.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   监听   可能   函数   线程   需要
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图