visualStudio 2008写的串口接收发送函数,当接收来的数据太快会闪退,5ms一次,一次10个字节,怎么解决闪退?

夏天的馋 2024-10-30 17:35:08

这是我的串口接收函数

OnComm()
{
 if(Rx_Enb==0)
 {
    // TODO: 在此处添加消息处理程序代码
    unsigned char i=0;
    VARIANT variant_inp;   //Variant 是一种特殊的数据类型,除了定长String数据及用户定义类型外,可以包含任何种类的数据。
    COleSafeArray safearray_inp;       
    BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integer that is not signed.     
    CString strtemp;    
    memset(Screen_Val,0,sizeof(Screen_Val));
    if(m_ctrlComm.get_CommEvent() == 2) //事件值为2表示接收缓冲区内有字符     
    {          

        //以下你可以根据自己的通信协议加入处理代码 
        variant_inp=m_ctrlComm.get_Input();        //读缓冲区  
        safearray_inp=variant_inp;                //VARIANT型变量转换为ColeSafeArray型变量
        len=safearray_inp.GetOneDimSize();        // 每次得到有效数据长度        
        for(k=0;k<len;k++)             
            safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组         
        for(k=0;k<len;k++)                    //将数组转换为Cstring型变量    
        {           
            RxValue_Lc++;
            BYTE bt=*(char*)(rxdata+k);//字符型      
            strtemp.Format(_T("%x "),bt); //将字符送入临时变量strtemp存放   
            m_strRXData+=strtemp; //加入接收编辑框对应字符串 
            Screen_Val[k]=(unsigned int)bt;
            if(RxValue_Lc==14)
            {
              strtemp.Format(_T("\r\n"));  
              m_strRXData+=strtemp; //加入接收编辑框对应字符串   
              RxValue_Lc=0;
              RxV_Clear++;
            }
        }
              strtemp.Format(_T("\r\n"));  
              m_strRXData+=strtemp; //加入接收编辑框对应字符串  

    }    
    UpdateData(FALSE); //更新编辑框内容
        if(RxV_Clear>28)
        {
           m_strRXData="";
           UpdateData(FALSE); //更新编辑框内容
           RxV_Clear=0;
        }
 }
}

闪退只报这个,我降低下位机发送速率就没问题,但不能降低

线程 'Win32 线程' (0x5734) 已退出,返回值为 0 (0x0)。
线程 'Win32 线程' (0x6dfc) 已退出,返回值为 0 (0x0)。

STATUS_STACK_BUFFER_OVERRUN encountered
线程 'Win32 线程' (0x6bc4) 已退出,返回值为 -1073740791 (0xc0000409)。
线程 'Win32 线程' (0x4d44) 已退出,返回值为 -1073740791 (0xc0000409)。
线程 'Win32 线程' (0x5eb8) 已退出,返回值为 -1073740791 (0xc0000409)。
线程 'Win32 线程' (0x65b8) 已退出,返回值为 -1073740791 (0xc0000409)。
线程 'Win32 线程' (0x53c0) 已退出,返回值为 -1073740791 (0xc0000409)。
线程 'Win32 线程' (0x13ac) 已退出,返回值为 -1073740791 (0xc0000409)。
线程 'Win32 线程' (0x5aec) 已退出,返回值为 -1073740791 (0xc0000409)。
线程 'Win32 线程' (0x5188) 已退出,返回值为 -1073740791 (0xc0000409)。
线程 'ime_bundle' (0x4c6c) 已退出,返回值为 -1073740791 (0xc0000409)。
线程 'Win32 线程' (0x5e2c) 已退出,返回值为 -1073740791 (0xc0000409)。
线程 'Win32 线程' (0x67c4) 已退出,返回值为 -1073740791 (0xc0000409)。
线程 'Win32 线程' (0x11c8) 已退出,返回值为 -1073740791 (0xc0000409)。
线程 'Win32 线程' (0x6dcc) 已退出,返回值为 -1073740791 (0xc0000409)。
程序“[20820] test.exe: 托管”已退出,返回值为 -1073740791 (0xc0000409)。
程序“[20820] test.exe: 本机”已退出,返回值为 -1073740791 (0xc0000409)。

...全文
123 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

33,322

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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