串口通信

 

//打开串口
//Usage: ComHandle=OpenRS232("COM1", 9600)
HANDLE OpenRS232(const char* ComName, DWORD BaudRate)
{
	HANDLE ComHandle;
	DCB CommDCB;
	COMMTIMEOUTS CommTimeouts;
	DWORD error;
	ComHandle=CreateFile(ComName, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
	error = GetLastError();

	if(error!=ERROR_SUCCESS) return INVALID_HANDLE_VALUE;
	else
	{
		GetCommState(ComHandle, &CommDCB);

		CommDCB.BaudRate=BaudRate;
		CommDCB.Parity=NOPARITY;
		CommDCB.StopBits=ONESTOPBIT;
		CommDCB.ByteSize=8;

		CommDCB.fBinary=1;  //Binary Mode only
		CommDCB.fParity=0;
		CommDCB.fOutxCtsFlow=0;
		CommDCB.fOutxDsrFlow=0;
		CommDCB.fDtrControl=0;
		CommDCB.fDsrSensitivity=0;
		CommDCB.fTXContinueOnXoff=0;
		CommDCB.fOutX=0;
		CommDCB.fInX=0;
		CommDCB.fErrorChar=0;
		CommDCB.fNull=0;
		CommDCB.fRtsControl=RTS_CONTROL_TOGGLE;
		CommDCB.fAbortOnError=0;

		SetCommState(ComHandle, &CommDCB);

		//Set buffer size
		SetupComm(ComHandle, 100, 100);

		//Set up timeout values (very important, as otherwise the program will be very slow)
		GetCommTimeouts(ComHandle, &CommTimeouts);

		CommTimeouts.ReadIntervalTimeout=MAXDWORD;
		CommTimeouts.ReadTotalTimeoutMultiplier=0;
		CommTimeouts.ReadTotalTimeoutConstant=0;

		SetCommTimeouts(ComHandle, &CommTimeouts);

		return ComHandle;
  }
}


//关闭串口
//Usage: CloseRS232(ComHandle);
void CloseRS232(HANDLE Handle)
{
	CloseHandle(Handle);
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值