UINT mThreadDown2(LPVOID pParam) //端點(diǎn)2下傳線程 { ULONG dlen,datalen; UCHAR mBuf[mCH375_PACKET_LENGTH*8];
CCH372UpDownDlg *pDlg = (CCH372UpDownDlg *)pParam; pDlg->m_btndown2.EnableWindow(FALSE); if(pDlg->m_open && pDlg->m_trddown2) { /**************在線程中用CreateFile打開設(shè)備,因?yàn)槊總€(gè)句柄同一時(shí)候只能執(zhí)行一個(gè)API**************************/ if ( pDlg->T2DHandle != INVALID_HANDLE_VALUE ) { datalen = strlen(pDlg->m_downdata2); if((LONG)datalen/2 > pDlg->m_downlen2) //取數(shù)據(jù)長度與輸入長度中偏小值 datalen = pDlg->m_downlen2; else{ datalen = datalen/2; pDlg->m_downlen2 = datalen; }
memcpy(mBuf,pDlg->m_downdata2,datalen*2); pDlg->mStrtoVal(&mBuf[0],datalen*2); dlen = datalen; if(!CH375WriteData((ULONG)pDlg->T2DHandle,&mBuf[0],&dlen)) { if ( !pDlg->m_close ) MessageBox(NULL,"端點(diǎn)2下傳失?。∪绻O(shè)備斷開過那么請(qǐng)先關(guān)閉本程序","USB實(shí)驗(yàn)調(diào)試軟件",MB_OK|MB_ICONSTOP); } else{//更新長度顯示 char tem[50]=""; DownCount=DownCount+dlen; sprintf(tem,"Down: %d",DownCount); SetDlgItemText(pDlg->m_hWnd,IDC_DownCount,tem); } } } pDlg->m_trddown2 = FALSE; pDlg->m_btndown2.EnableWindow(TRUE); //ExitThread(0); return 0; }
這個(gè)是官方給的CH372updown調(diào)試軟件中 端2點(diǎn)的下傳線程
PUCHAR CCH372UpDownDlg::mStrtoVal(PUCHAR str, ULONG strlen) { ULONG i,j; ULONG len; UCHAR strRev[mMAX_BUFFER_LENGTH]; if( strlen % 2 != 0 ) { str[strlen] = 0; strlen += 1; } len = strlen / 2; for(i=0,j=0;i { strRev[j] = (UCHAR)((mCharToBcd(str[i])<<4) + mCharToBcd(str[i+1])); i++; } strRev[j]='\0'; memcpy( str,strRev,len); return str; }
UCHAR CCH372UpDownDlg::mCharToBcd(UCHAR iChar) { UCHAR mBCD; if ( iChar >= '0' && iChar <= '9' ) mBCD = iChar -'0'; else if ( iChar >= 'A' && iChar <= 'F' ) mBCD = iChar - 'A' + 0x0a; else if ( iChar >= 'a' && iChar <= 'f' ) mBCD = iChar - 'a' + 0x0a; // else mBCD = 0xff; else mBCD = 0; return( mBCD ); }
通過mStrtoVal函數(shù)還有mCharToBcd函數(shù)把輸入的數(shù)據(jù)改變成什么了 8位的BCD碼?
可是最后進(jìn)行寫操作的不是還是 CH375WriteData((ULONG)pDlg->T2DHandle,&mBuf[0],&dlen); 這不是就是直接把輸入對(duì)話框端點(diǎn)2下傳的數(shù)據(jù) 直接通過API CH375WriteData函數(shù) 下傳的芯片上。。。
那這mStrtoVal和mCharToBcd兩個(gè)函數(shù)作用什么啊。
還有看mCharToBcd函數(shù) 似乎輸入對(duì)話框的數(shù)據(jù)只可以是0-9 A-F a-f
麻煩高手指點(diǎn)下。。。
唉 悲劇 不知道為什么 硬件連接可以 就是不可以傳數(shù)據(jù)
大神 99俺
[font=新宋體]文字[/font][font=宋體]文字[/font]