33,322
社区成员




这是我的串口接收函数
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)。