串口接收端SetupComm(m_hComm, 2000, 2000),然后发送端一次发送3000,怎么接收?

ocean1004 ocean1004 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
用的是 网上流传挺广的CSerialPort类
这里有例子下载:http://www.daxia.com/bibis/upload/serialport_demo.93.zip


CSerialPort类是异步的串口通信,以下是一些关键代码:
OVERLAPPED m_ov;
m_hComm=CreateFile(FILE_FLAG_OVERLAPPED);

//设置超时
m_CommTimeouts.ReadIntervalTimeout = 1000;
m_CommTimeouts.ReadTotalTimeoutMultiplier = 1000;
m_CommTimeouts.ReadTotalTimeoutConstant = 1000;
m_CommTimeouts.WriteTotalTimeoutMultiplier = 1000;
m_CommTimeouts.WriteTotalTimeoutConstant = 1000;
SetCommTimeouts(m_hComm, &m_CommTimeouts)
//设置缓冲区大小
SetupComm(m_hComm, 2000, 2000)

//启动线程接收
while(1)
{
WaitCommEvent(m_hComm, &Event, m_ov);//等待串口事件
WaitForObject(m_ov);//等待 重叠端口 事件
for(;;)
{
bResult = ClearCommError(m_hComm, &dwError, &comstat);
if (comstat.cbInQue == 0)
{
break;
}
ReadFile(buf, 1, m_ov);//读取,每次都是1个1个字节读取
}
}


当发送端一次性发送3000字节的时候,接收端触发了一次接收事件(EV_RXCHAR),for(;;)也只进入一次,然后把2000字节读出来,也就是接收了2000字节,然后就没再一次到来消息了。停在了
WaitForObject(m_ov);//等待 重叠端口 事件
这里。当把缓冲区大小设置为2500的时候,也是同样的情况,接收了2500,没有再继续下去。


第一次做串口通信,没经验。不知道这样描述算不算清除了。
...全文

相关推荐

Windows CE 串口通信的实现

Windows CE 是一种嵌入式操作系统,采用模块化的结构,支持多种外部接口。介绍了在Windows CE 下开发串口通信软件的基本方 法。也简要介绍了Windows CE 在各领域的应用。

cuixiaodan

使用Win32API实现Windows下异步串口通讯.doc

使用Win32API实现Windows下异步串口通讯                                      目录:1.异步非阻塞串口通讯的优点2.异步非阻塞串口通讯的基本原理3.异步非阻塞串口通讯的基础知识4.异步非阻塞串口通讯的实现步骤一,异步非阻塞串口通讯的优点读写串行口时,既可以同步执行,也可以重叠(异步)执行。在同步执行时,函数直到操作完成后才返回。这意味着在同步执行时线程会被阻塞,从而导致效率下降。在重叠执行时,即使操作还未完成,调用的函数也会立即返回。费时的I/O操作在后台进行,这样线程就可以

omyligaga

C++ MFC串口通信上位机开发:工业级工具的实现与优化

串口通信是嵌入式系统、工业自动化等领域中设备与计算机通信的基础技术,它通过串行接口实现数据的逐位传输。其工作原理基于特定的电气标准和协议(如RS-232),通过配置波特率、数据位等参数确保数据可靠交换。这项技术的核心价值在于为硬件调试、设备控制和数据采集提供了稳定、直接的通信桥梁。在工业控制、仪器仪表及自动化测试等应用场景中,对通信工具的可靠性、执行效率和部署便捷性有极高要求。因此,基于C++和MFC框架开发串口通信上位机成为满足这些严苛需求的经典方案。MFC作为成熟的Windows桌面应用框架,结合C++

weixin_33726318

VC++实现工业级RS232/RS485串口通信:从Win32 API到多线程封装

串口通信作为设备间数据交换的基础物理层协议,其核心在于通过特定的电气标准(如RS232的点对点电压传输、RS485的差分信号总线)实现稳定可靠的数据传输。在Windows平台下,其技术实现主要依托Win32 API,通过CreateFile、ReadFile、WriteFile等函数进行端口操作,并利用重叠I/O(Overlapped I/O)模型实现异步非阻塞,以提升程序响应能力与CPU效率。这对于构建高可靠性的工业控制、嵌入式调试及自动化设备软件具有关键价值。在实际应用场景中,开发者常需处理RS485的

weixin_33937499

VC++ RS232串口编程实战:从Win32 API到工业级通信框架

串口通信作为设备间基础的数据交换方式,其核心在于通过异步传输协议在物理链路上实现可靠字节流传输。在Windows平台,系统将串口抽象为文件设备,通过CreateFile、ReadFile、WriteFile等API进行访问,并支持重叠I/O实现高效异步操作。掌握串口编程对工业自动化、嵌入式系统调试及老旧设备维护具有重要价值,尤其在需要稳定、实时通信的工控场景中不可或缺。本文以VC++为开发环境,深入解析RS232通信的底层机制与事件驱动模型,通过封装健壮的CSerialPort类,解决数据帧解析、流量控制与

weixin_33701564
评论 12
收藏 已收藏
分享
返回顶部
ocean1004
硬件/系统 2,644 成员 17,229 内容