MFC采用CSComm控件接收数据,竟然丢包了,只能接收127个字节

洋名天下cy 2014-11-05 04:57:02
用CSComm控件编写的一个程序,能够正常发送接收数据。可是接收数据时,发现接收的数据包不完整(接收到的数据包有200多个字节,可是只接收到了前面的127个字节),不知道这是怎么回事?求大神指点。急啊!
	
CString m_Command;
message.GetAt(1, m_Command); //此处m_Command是串口指令
m_ctrlComm.GetInput(); //读取接收缓冲区的数据
CByteArray hexdata;
String2Hex(m_Command,hexdata); //此处返回的len可以用于计算发送了多少个十六进制数


m_ctrlComm.SetOutput(COleVariant(hexdata)); //向发送缓冲区写数据 //发送指令

if (m_Command.GetLength() < 8 ) //判断指令为有线或无线
Delay(2500); //有线 延时2500ms
else
Delay(2700); //无线 延时2700ms

m_Command="";
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,p;
BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.
CString strtemp;
variant_inp=m_ctrlComm.GetInput(); //读缓冲区的数据
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(p=0;p<len;p++)
safearray_inp.GetElement(&p,rxdata+p);//转换为BYTE型数组
for(p=0;p<len;p++) //将数组转换为Cstring型变量
{
BYTE bt=*(char*)(rxdata+p); //字符型

strtemp.Format("%02X",bt); //将字符以十六进制方式送入临时变量strtemp存放,注意这里加入一个空隔

m_Command+=strtemp; //加入接收编辑框对应字符串
}
CNDKMessage message1(ChatBigMessage);
message1.SetAt(0,m_Command);
//MessageBox(m_Command);
this->SendMessageToUser(lUserId,message1);
...全文
250 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-11-06
  • 打赏
  • 举报
回复
引用 7 楼 u013928720 的回复:
[quote=引用 1 楼 zhao4zhong1 的回复:] 参考 MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.DSP MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.RES MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.RC MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\MAKEFILE MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\VERSION.H MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\RESOURCE.H MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.H MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.C MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\README.TXT MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.ICO MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.BMP MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.DEF
这些是什么,能给个链接吗?找不到啊![/quote] 搜索下载安装MSDN98
洋名天下cy 2014-11-05
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
参考 MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.DSP MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.RES MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.RC MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\MAKEFILE MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\VERSION.H MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\RESOURCE.H MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.H MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.C MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\README.TXT MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.ICO MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.BMP MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.DEF
这些是什么,能给个链接吗?找不到啊!
洋名天下cy 2014-11-05
  • 打赏
  • 举报
回复
好吧!我去试一试。
LinuxCard 2014-11-05
  • 打赏
  • 举报
回复
引用 4 楼 u013928720 的回复:
只有这一种可能吗?有没有可能是缓存大小不够,或者是其他什么原因,小弟初学MFC,不太懂!
我也不会mfc,不过,应该就是这个问题,原因知道了,解决应该很简单吧
洋名天下cy 2014-11-05
  • 打赏
  • 举报
回复
只有这一种可能吗?有没有可能是缓存大小不够,或者是其他什么原因,小弟初学MFC,不太懂!
LinuxCard 2014-11-05
  • 打赏
  • 举报
回复
我没仔细看你的代码,不过通常来说,都是因为接收的问题,其实道理挺简单,客户机发送给你100个字节,可能你机器上会受到多个数据到达的信息,比如第一次收到10个,第二次收到20个,第三次收到70个,所以,你要判断下收到的数据够不够,如果不够,暂存起来,等数据够了一起处理,就这样
洋名天下cy 2014-11-05
  • 打赏
  • 举报
回复
什么意思?看不懂!参考什么?
赵4老师 2014-11-05
  • 打赏
  • 举报
回复
参考 MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.DSP MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.RES MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.RC MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\MAKEFILE MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\VERSION.H MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\RESOURCE.H MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.H MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.C MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\README.TXT MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.ICO MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.BMP MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\SERIAL\TTY.DEF
内容概要:本文提出一种基于鱼鹰优化算法(OOA)优化的CNN-BiGUR-Attention混合模型,用于提升短期风电功率预测的精度与稳定性,采用Matlab实现代码仿真。该模型融合卷积神经网络(CNN)提取输入数据的局部空间特征,利用双向门控循环单元(BiGUR)捕捉风速、功率等时间序列的前后向动态依赖关系,并引入注意力机制自适应强化关键时间步的特征权重,从而增强模型对非平稳风电数据的表征能力;进一步,采用OOA算法对模型超参数进行全局寻优,有效提升模型收敛速度与泛化性能。研究基于实际风电场历史数据开展实验验证,结果表明,该方法相较传统模型在预测精度、鲁棒性和误差抑制方面表现更优,适用于高比例可再生能源接入背景下的电力系统调度需求。; 适合人群:从事新能源发电预测、电力系统优化调度、智能算法与深度学习融合应用等方向的科研人员及工程技术人员,尤其适合具备Matlab编程能力、熟悉时间序列建模与深度学习框架的研究者。; 使用场景及目标:①实现风电场短期功率高精度预测,支撑电网安全稳定调度与能量管理;②为深度学习模型结构设计与智能优化算法联合调参提供实践范例;③推动人工智能技术在可再生能源预测、智能电网运行等领域的落地应用。; 阅读建议:建议结合提供的Matlab代码深入理解CNN-BiGUR-Attention网络架构搭建、注意力机制实现方式及OOA优化流程,重点关注数据预处理、模型训练与参数调优细节,可通过替换不同风电数据集进行对比实验,进一步掌握模型迁移能力与适应性。

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧