#ifndef _SERIALPORT_H
#define _SERIALPORT_H
#include <iostream>
using namespace std;
enum FlowControl
{
	NoFlowControl,
	CtsRtsFlowControl,
	CtsDtrFlowControl,
	DsrRtsFlowControl,
	DsrDtrFlowControl,
	XonXoffFlowControl
};
using namespace std;
class SerialPort
{
public:


	SerialPort();
	~SerialPort();

	// 打开串口,成功返回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 async, 1 sync
	bool open(const char* portname, int baudrate, char parity, char databit, char stopbit, FlowControl fc, char synchronizeflag = 1);

	
	//发送数据或写数据，成功返回发送数据长度，失败返回0
	int send(const void *buf,int len);

	//接受数据或读数据，成功返回读取实际数据的长度，失败返回0
	int receive(void *buf,int maxlen);
	//关闭串口
	void close();
private:
	int pHandle[16];
	char synchronizeflag;
};

bool xGet_relay_com(char* com_name);
#endif

