#pragma once #include #include using namespace std; typedef struct{ wstring name; UINT port_num; uint32_t baurate; uint8_t data_bits; uint8_t stop_bits; uint8_t verify; uint8_t flow_control; }UartInfo; typedef struct { wstring ip; uint32_t port; uint32_t socket_fd; }TcpClientInfo; typedef struct { wstring ip; uint32_t port; uint32_t socket_fd; }TcpServerInfo; class SerialPort { public: SerialPort(); ~SerialPort(); private: //使用CreateFile打开串口,同步方式打开 static HANDLE OpenPort(UINT PortNo = 1); public: //通过查询注册表方式获取系统里面的串口,返回串口数量,指针指向串口列表 static UINT GetPortNum(UINT** PortList); //从指定串口缓冲区读取数据 static UINT GetByte(UINT PortNo); //关闭指定串口,并从map删除 static void ClosePort(UINT PortNo); //关闭所有串口 static void ClearAllPort(); //初始化指定端口,成功后存入map static int InitPort(UINT PortNo, UINT Baud = 9600, byte Parity = 0, byte Data = 8, byte Stop = 0); //初始化串口 //从指定端口读取数据,返回值表示读取的bytes, static int ReadPort(UINT PortNo, char* P_recved, int length); //往指定串口发送数据,返回实际写入 static int WritePort(UINT PortNo, const char* pData, int length = 0); //检查指定串口状态 static int PortState(UINT PortNo); //清空指定串口缓冲区 static void ClearCom(UINT PortNo); //指定端口RTS信号检测,用于脚踏开关信号触发, static int CheckRTS(UINT PortNo); public: //static UINT PortNum; //串口端口号 static map ComMap; };