vc 6.0 串口助手调试一个怪现象,求解

waferhit 2016-02-20 10:33:16
自开发板子A (内置TTL转USB接口,芯片TI的USB3410, 我开发的板子)。
成熟硬件B(内置485电路,外部用一个485转USB,市面产品UT-890)。
自开发串口软件A (我用VC6.0开发的串口助手,win7下)。
成熟软件B(网上找的串口助手,捷通:modbus调试软件)。

现在出现的问题是:

自开发软件A + 成熟硬件B,调试正常。(能说明软件A方案可行)
成熟软件B + 自开发板子A ,调试正常。(能说明产品A硬件可行)
自开发软件A + 自开发板子A (串口调试抛出异常)。

具体现象:
if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收数据事件
{
variant_inp=m_ctrlComm.GetInput(); //问题出在这一句,接收到数值后,中断能运行到这
safearray_inp=variant_inp; ////问题出在这一句,接收到数值后,中断不能运行到这

按F10单步运行时,会跳到以下,有时也会跳到汇编文件中。

CATCH_ALL(e)
{
// free temporaries created by VariantChangeType
for (UINT iArg = 0; iArg < pDispParams->cArgs; ++iArg)
VariantClear(&rgTempVars[iArg]);

THROW_LAST();
}


现在已经搞不清什么问题了,调了好几天,头都大了,群里有没有有经验的兄弟给个思路。先谢了!
...全文
168 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
gencheng 2016-02-24
  • 打赏
  • 举报
回复
你的问题在于使用用了串口组件读写,你应该自己封装一个串口类,然后用线程去读写串口。可能在线程中调用串口的时候还要同步保护。
叶恭介叶恭介 2016-02-24
  • 打赏
  • 举报
回复
用这个试试:http://blog.csdn.net/cvbtvbwu/article/details/24694739
ArthurKingYs 2016-02-21
  • 打赏
  • 举报
回复
定义VARIANT variant_inp; COleSafeArray safearray_inp; long len,k; unsigned int data[99999]={0}; byte rxdata[1024]; //设置 BYTE 数组 if里面是这个 variant_inp=m_mscomm.get_Input(); //读缓冲区消息 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++) { strtemp.Format(_T("%x"),*(rxdata+k)); BYTE bt=*(char*)(rxdata+k); }

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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