⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 portctl.h

📁 一个简单实用的串口类
💻 H
字号:
// SerialCtl.h: interface for the SerialCtl class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SERIALCTL_H__EBE94BCF_8352_44EF_B11D_5DF017064C65__INCLUDED_)
#define AFX_SERIALCTL_H__EBE94BCF_8352_44EF_B11D_5DF017064C65__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <Afxmt.h>

#define XON        0x11
#define XOFF       0x13
#define INBUF      409600
#define OUTBUF     409600
#define READBUFLEN 50
#define MAXNUM     409600
#define WM_SERIALGET  WM_USER + 50

// 监听串口线程
UINT hCommWatchPro(LPVOID pParam);

class AFX_CLASS_EXPORT SerialCtl
{
public:
  	  SerialCtl();

	  // 打开通信串口
	  void OpenSerial();

      // 关闭通信串口
	  void CloseSerial();

      // 串口设置
	  void SetSerial(CString Com = "COM1", long Baud = 9600, int Data = 8, int End = 1, CString Parity = "NONE");

      // 写串口
	  BOOL WriteSerial(const BYTE * SendData, const DWORD SendLen);

	  // 读串口
	  void ReadSerial(BYTE * resData, int * length);

      // 读串口2(针对IPC设计)      
	  int ReadSerial2(BYTE * resData, int length);

	  // 清空串口缓冲区
	  void ClearSerialBuf();

      // 监听串口
	  void ListenSerial(long delayRead = 100, long circleTimeSpan = 100);
    
	  // 停止监听串口
	  void StopListenSerial();

      // 判断串口是否打开
	  bool IsSerialOpen();

	  // 得到版本信息
	  CString GetVersion();

	  // 得到版本信息
	  float GetVer();

      // 
	  BOOL isCanSend();

// Attributes
public:
      // 串口结构
	  struct SERIAL
	  {
           char COM[10];
	       unsigned long BAUD;
	       unsigned int DATA;
	       unsigned int END;
	       unsigned char PARITY;
	  };

// Operations
public:
	  HANDLE      hCom;
	  OVERLAPPED  m_OverRead;
      COMSTAT     ComStat;
	  long        DelayRead,
		          CircleTimeSpan;
      long        m_lParam;  // 消息参数(如:CDM1000、ASM...)
private:
	  SERIAL      Serial;
      DCB         dcb;
      COMMCONFIG  CommConfig;
      OVERLAPPED  m_OverWrite;
	  HANDLE      hCommWatchThread;
	  BYTE        Data[MAXNUM];
	  char        strData[MAXNUM];
	  bool        OPEN_FLAG;
};

#endif // !defined(AFX_SERIALCTL_H__EBE94BCF_8352_44EF_B11D_5DF017064C65__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -