CH372UPDOWN.EXE

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]


熱門產(chǎn)品 : USB3.0 HUB控制器:CH634

“這不是就是直接把輸入對(duì)話框端點(diǎn)2下傳的數(shù)據(jù)”注意mStrtoVal函數(shù)里面有個(gè)memcpy( str,strRev,len); 會(huì)改變str所指向的緩沖區(qū),這個(gè)改變之后的緩沖區(qū)內(nèi)容,就是通過API CH375WriteData函數(shù)下傳下去的。 輸入框里輸入的是16進(jìn)制的數(shù)據(jù),如輸入123456A89f ,實(shí)際發(fā)送下去的是0x12 0x34 0x56 0xa8 0x9f


謝謝LS


請(qǐng)問官方給的這個(gè)上位機(jī)程序可以直接用嗎,我現(xiàn)在是FPGA開發(fā)板上面應(yīng)用CH376芯片,能將采集到的數(shù)據(jù)利用這個(gè)上位機(jī)程序顯示到上位機(jī)上面嗎、、要不要根據(jù)自己的下位機(jī)再改這個(gè)程序啊??求各位大神大俠幫忙解答一下


我們提供的軟件對(duì)應(yīng)的FPGA程序只是實(shí)現(xiàn)了TEST的功能,簡(jiǎn)單實(shí)現(xiàn)了芯片的初始化和端點(diǎn)2數(shù)據(jù)收發(fā)。


嗯,我現(xiàn)在初期就是只想能建立與上位機(jī)的連接,能實(shí)現(xiàn)數(shù)據(jù)的接發(fā)就好。請(qǐng)問這個(gè)這個(gè)FPGA的TEST程序與DEBUG372里的上位機(jī)程序是不是可以配套使用。。另外,我用的是CH376,是不是可以直接用這些程序


具體后面的功能會(huì)自己添加,現(xiàn)在就是想怎么讓這個(gè)開發(fā)板和上位機(jī)通訊上,能夠簡(jiǎn)單的收發(fā)數(shù)據(jù)。那TEST里是不是完全可以實(shí)現(xiàn)啊


是的 TEST的功能就是與上位機(jī)正常通訊,簡(jiǎn)單實(shí)現(xiàn)數(shù)據(jù)收發(fā)。


以下是端點(diǎn)2上傳的線程部分程序 if(pDlg->m_open && pDlg->m_trdup2) //設(shè)備打開,線程啟動(dòng) { /**************在線程中用CreateFile打開設(shè)備,因?yàn)槊總€(gè)句柄同一時(shí)候只能執(zhí)行一個(gè)API**************************/ if ( pDlg->T2UHandle != INVALID_HANDLE_VALUE ) { // 打開設(shè)備成功 datalen = min( pDlg->m_uplen2, sizeof(mBuf)); dlen = datalen; if(CH375ReadData((ULONG)pDlg->T2UHandle,&mBuf[0],&dlen)) {//操作成功輸出數(shù)據(jù) CHAR buffer[mCH375_PACKET_LENGTH*8*2+1]; ULONG i,j; for(i=0,j=0;i{ sprintf(&buffer[j],"%02X ",mBuf); j += 3; } buffer[j] = '\0'; //每次數(shù)據(jù)用空格隔開 ShowUpdata(buffer,j); //顯示數(shù)據(jù) {//更新長度顯示 char tem[50]=""; UpCount=UpCount+dlen; sprintf(tem,"Up: %d",UpCount); SetDlgItemText(pDlg->m_hWnd,IDC_UpCount,tem); } } else if ( !pDlg->m_close ) MessageBox(NULL,"端點(diǎn)2上傳失??!如果設(shè)備斷開過那么請(qǐng)先關(guān)閉本程序","DEBUG372",MB_OK|MB_ICONSTOP); } } 請(qǐng)問在ShowUpdata(buffer,j); //顯示數(shù)據(jù) 這句后面的中括號(hào)前是不是少了什么代碼


沒有少代碼,“{”“}”是可以省略的,中間的代碼要保留。主要當(dāng)時(shí)寫代碼時(shí)習(xí)慣C語言的風(fēng)格,在C語言中定義變量時(shí)要放在{括號(hào)的后面,不能在代碼中間定義。C++是沒有這個(gè)限制的。注意:VC在遇到.C文件時(shí)是按照C語言來編譯的,.CPP文件時(shí)是C++語言。


請(qǐng)問這個(gè)上位機(jī)適用于單片機(jī)嗎,它對(duì)應(yīng)的單片機(jī)下位機(jī)程序在哪


上位機(jī)程序是不能適用到單片機(jī)的。下位機(jī)的程序你可以參考TEST的FPGA程序


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频