C++中检测串口是否可用

C++中检测串口是否可用

在系统通信中,经常会使用到串口通讯,因此对选择的串口是否可用很有必要进行检测,下面是关于串口检测的一段代码:

int CSerialPort::TestPort(int port)
{
	volatile HANDLE temp=0;
	CString szPort;

	if(port > 100)
	{
		return FALSE;
	}
	
	//(注意:端口号大于9时,端口路径有变,这一块与底层驱动有关)
	if(port < 10)
	{
		szPort.Format(_T("COM%d"),port);
	}
	else
	{
		szPort.Format(_T("\\\\.\\COM%d"),port);
	}

	//sprintf(szPort, "COM%d", portnr);
	if (m_hComm != NULL && m_hComm != INVALID_HANDLE_VALUE)
	{
		return FALSE;
	}

	temp = CreateFile(szPort,			// communication port string (COMX)
		GENERIC_READ | GENERIC_WRITE,	// read/write types
		0,								// comm devices must be opened with exclusive access
		NULL,							// no security attributes
		OPEN_EXISTING,					// comm devices must use OPEN_EXISTING
		FILE_FLAG_OVERLAPPED,			// Async I/O
		0);							    // template must be 0 for comm devices
	
	if (temp != NULL && temp != INVALID_HANDLE_VALUE)
	{
		CloseHandle(temp);
		temp = NULL;
		return TRUE;
	}
	else
	{
		return FALSE;
	}
}
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值