搜索
bottom↓
回复: 5

VC6多线程数据接收实例代码

[复制链接]

出0入0汤圆

发表于 2014-10-10 09:34:22 | 显示全部楼层 |阅读模式
//有数据进来,显示之
DWORD  __stdcall Thread_USB_Read(LPVOID lpPara)
{
CUsbhidtestDlg *pDlg=(CUsbhidtestDlg *)lpPara;

//unsigned char receivebuf[100];
//unsigned long NumberOfBytesReaded;

        if (pDlg->HidDev.write_errcount)//设备已丢失!::有效果,但是反应慢
        {
        pDlg->SetSend_false();
    pDlg->Kill_Timer();

        }

while(pDlg->usb_Thread!=NULL)
{
       
        if ( pDlg->bExit) break;
       
        BYTE str[65]={0};
        DWORD len=0;
        DWORD err,p_total;
        CString cstr,sn,c,sz_info="";
   
        UINT i;
        UINT icount=0;

     HJ_EVENT *pHJ;
   
        for (i=0;i<65;i++) str[i]='\0';

        if(pDlg->HidDev.ReadHid(str,&len,&err))
        {
                cstr="USB接收数据::\r\n";

        if(len==65) len=64;//滤除最后一个字符

        if ( (strcmp(pDlg->str_lastcmd,(char *)":I")==0)&&(str[0]==':' && str[1]=='I'))
        {
        sz_info="\r\n\r\n发现芯片:";
        if (strncmp((char *)&str[2],(char *)"EF17",4)==0) sz_info+="Winbond W25Q128";
        else
    if (strncmp((char *)&str[2],(char *)"C816",4)==0) sz_info+="GD 25Q64";
        sz_info+="\r\n设备ID号:";
        sz_info+=(char *)&str[2];
    ///pDlg->GetDlgItem(IDC_EDIT1)->SetWindowText(sz_info);
//        break;
        }

        if( (pDlg->LastCmd_index==3) &&  str[0]==':'&& str[1]=='b' )
        {
    pHJ=(HJ_EVENT *)&str[2];
    p_total=pHJ->jh+(pHJ->hl<<16);
        sz_info.Format("\r\n共有记录:%d条\r\n",p_total);
        //(pDlg->GetDlgItem(IDC_EDIT1))->SetWindowText(cstr);

        pDlg->LastCmd_index=0;
//        break;
        }  

       

                CButton *p;
        p=(CButton *)pDlg->GetDlgItem(IDC_CHECK_BIN);

                if(p->GetCheck())//16进制显示BCD
                {
                        sn="";
                        for(i=0;i<len;i++)
                        {
                                c.Format(" %02X",(int)str[i]);
                                sn+=c;
                                icount++;
                                if (icount>=32)
                                {
                                        icount=0;

                                        p=(CButton *)pDlg->GetDlgItem(IDC_CHECK_RETURN);
                                        if(p->GetCheck())
                                        {
                                                c="\r\n";
                                                sn+=c;
                                        }
                                }
                        }
                cstr+=sn;

                pDlg->g_rec_str+=sn;
                }
                else
                {
                cstr+=str;
        pDlg->g_rec_str+=cstr;
                }

                p=(CButton *)pDlg->GetDlgItem(IDC_CHECK_PAUSE);
                if(!p->GetCheck())
        pDlg->GetDlgItem(IDC_EDIT1)->SetWindowText(cstr+sz_info);//GetDlgItem(IDC_EDIT_REC)->SetWindowText(pDlg->g_rec_str);

                pDlg->PutReceive_Count();
                //pDlg->AddToInfOut(cstr,TRUE,TRUE);
        }
}
return 0;
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2014-10-10 09:46:47 | 显示全部楼层
谢谢,MARK了,留作参考

出0入0汤圆

发表于 2014-10-10 10:00:34 | 显示全部楼层
MARK一下

出0入0汤圆

 楼主| 发表于 2014-10-10 11:59:01 | 显示全部楼层
写完了,终于理解了,API串口读数据的实现思路啦。
可惜一直没实现。

出0入0汤圆

发表于 2014-11-8 15:43:12 | 显示全部楼层
楼主如果方便的话把整个文件传上来吧 这样看着挺累的

出0入0汤圆

发表于 2014-11-8 21:07:03 | 显示全部楼层
mark      
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 21:18

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表