疑惑 请各位给指点迷津(串口程序)

Watchmen_ 2012-06-06 05:11:07
最近在学习串口编程,这里有2段代码(实现的功能是接收数据)。

第一段代码是我照着书上写的,运行时,只要接收数据,系统就报错(好像是系统崩溃了);

第二段代码是自己写的,运行时OK.

我是个菜鸟,不明白为什么书上、网上基本上都是第一段这样的代码,为什么要
设那么多的变量?嘿嘿各位也帮我看看第一段运行时为什么会报错?

请各位给指点迷津。


m_Rstr是编辑框的CString型变量;
m_ctrlComm是MSComm控件的对象;

第一段代码:

void CMSComm_2Dlg::OnComm()
{
if(m_ctrlComm.GetCommEvent()==2)
{

VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048];
CString strtemp;

variant_inp=m_ctrlComm.GetInput();

safearray_inp=variant_inp;

len=safearray_inp.GetOneDimSize();

for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);

for(k=0;k<len;k++)
{
BYTE bt=*(char*)(rxdata+k);
strtemp.Format("%02X",bt);

m_Rstr+=strtemp;
}
UpdateData(FALSE);
}

}



第二段代码:

void CMSCommDlg::OnComm()
{

if(m_ctrlComm.GetCommEvent()==2)
{

VARIANT a;

a.vt = VT_VARIANT;

a.bstrVal=(_bstr_t)m_ctrlComm.GetInput();

CString str = (BSTR)a.pbstrVal;

m_Rstr+=str;

}

UpdateData(FALSE);

}
...全文
108 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2013-03-06
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
zgl7903 2012-06-07
  • 打赏
  • 举报
回复
随便说说

第一段可以接收HEX数据, 第二段只能接收ASC数据

第一段里有一个严重的漏洞 就是当接收到的数据大于2048是会导致越界访问 其实不用rxdata更好

for(k=0;k<len;k++)
{
BYTE bt;
safearray_inp.GetElement(&k, &bt);
strtemp.Format(_T("%02X"), bt);
m_Rstr+=strtemp;
}

Watchmen_ 2012-06-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
随便说说

第一段可以接收HEX数据, 第二段只能接收ASC数据

第一段里有一个严重的漏洞 就是当接收到的数据大于2048是会导致越界访问 其实不用rxdata更好

for(k=0;k<len;k++)
{
BYTE bt;
safearray_inp.GetElement(&k, &bt);
strtemp.Format(_T("%02X")……
[/Quote]


谢谢 zgl7903
学习学习!!!
Watchmen_ 2012-06-07
  • 打赏
  • 举报
回复
自己顶一下!!
内容概要:本文围绕超导磁能储存系统(SMES)的建模与仿真展开,基于Simulink平台构建系统级动态仿真模型,涵盖超导线圈、功率转换系统(PCS)以及核心控制策略等关键模块。研究重点在于分析SMES在电网中实现快速能量存储与释放的能力,验证其在提升电力系统稳定性、抑制功率波动方面的有效性,尤其针对新能源发电带来的间歇性与波动性问题提供了有效的解决方案。通过仿真手段深入探讨系统的动态响应特性,为优化控制算法的设计与应用提供可靠的技术支撑。; 适合人群:适用于具备电力系统、自动控制理论或能源存储技术背景,熟悉Simulink仿真环境的科研人员、工程技术人员及研究生;同时适合有志于开展新型储能技术仿真研究的高年级本科生参考学习。; 使用场景及目标:①深入理解超导磁能储存系统的基本结构、工作原理及其在电力系统中的应用场景;②掌握在Simulink中搭建复杂电力电子与控制系统联合仿真模型的方法;③研究SMES在电网调频、电压支撑、瞬时功率补偿等典型工况下的动态性能表现;④为后续先进控制策略(如PID、模糊控制、现代控制理论等)的优化设计与验证提供仿真试验平台。; 阅读建议:建议读者结合文中模型逐步动手搭建仿真系统,重点关注各功能模块的参数设置与信号接口匹配,配合具体案例进行仿真调试,深入理解控制逻辑与系统动态行为之间的内在联系,并可进一步拓展至与其他储能形式(如锂电池、飞轮储能)的性能对比研究,以深化对不同类型储能技术特点的认知。
内容概要:本文围绕“考虑火-储联合调频(火电机组-混合储能)的协同控制策略”展开研究,提出一种基于Matlab仿真的协同控制方法,旨在提升电力系统频率调节的快速性与稳定性。通过构建火电机组与混合储能(如蓄电池、飞轮等)的联合调频模型,设计合理的功率分配机制与控制策略,充分发挥火电的持续调节能力与储能的快速响应优势,有效应对电网负荷波动与频率偏差。文中结合改进信号分解算法(如ICEEMDAN)与优化算法(如GWO),实现对调频信号的精准分频与储能单元的优化调度,提高系统整体调频效率与经济性。; 适合人群:具备一定电力系统基础知识和Matlab编程能力,从事新能源并网、电力系统稳定控制、储能技术应用等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于研究火电机组与混合储能在电网一次调频、二次调频中的协同作用机制;②为实际电力系统中储能配置与调频控制策略设计提供仿真验证平台与理论支持;③支撑相关课题研究、学术论文撰写及工程项目前期论证。; 阅读建议:建议结合Matlab代码深入理解控制算法实现细节,重点关注功率分配逻辑、信号分解过程与优化算法参数设置,并可通过修改系统参数进行对比仿真,以加深对协同控制效果的认识。

15,976

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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