VC 操作串口

本文详细介绍了如何使用Windows API初始化COM端口,并设置通信缓冲区大小、波特率、停止位、奇偶校验、数据位等关键参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 h = ::CreateFile(DeviceArray[i].strDevPath, GENERIC_READ|GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL/*|FILE_FLAG_OVERLAPPED*/, 0);  
        res = (h != INVALID_HANDLE_VALUE) ? BM_DEV_COMM : BM_DEV_COMM_BUSY;

 

::SetupComm(h, 8192, 8192);//  设置缓冲区大小

DCB dcb;

::GetCommState(h, &dcb);

dcb.BaudRate =  115200;
     dcb.StopBits =  ONESTOPBIT;
     dcb.Parity =  NOPARITY;
     dcb.ByteSize =  8;
     dcb.EofChar =  0x00;
     dcb.ErrorChar =  0x00;
     dcb.EvtChar =  0x00;
     dcb.XonChar =  0x00;
     dcb.XoffChar =  0x00;
     dcb.XoffLim =  0;
     dcb.XonLim =  0;

 

::SetCommState(h, &dcb);

COMMTIMEOUTS _CO;
      memset(&_CO, 0, sizeof(COMMTIMEOUTS));
      ::GetCommTimeouts(h, &_CO);
      
       _CO.ReadIntervalTimeout = -1;//0;
       _CO.ReadTotalTimeoutMultiplier = -1;//1;
       _CO.ReadTotalTimeoutConstant = 10000;//1000;
       _CO.WriteTotalTimeoutMultiplier = 1;
       _CO.WriteTotalTimeoutConstant = 50;//1000;

::SetCommTimeouts(h, &_CO);

::PurgeComm(h, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR );/////////清空缓冲区

::WriteFile(h, at_cmd, len, &dwBytes, NULL);

::ReadFile(h, szReturn, MAX_PATH, &dwBytes, NULL);

::CloseHandle(h);

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值