|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
我終于調(diào)通了214x的usb通訊pc端源程序 |
| 作者:liwenz 欄目:ARM技術(shù) |
我一直用zlg的usb軟件包,調(diào)試我的軟件,簡單 可是,沒有pc端的源程序,一次只能控制一個214x設(shè)備, 安裝我的程序時,也是phillp的產(chǎn)品. 現(xiàn)在,好了. 安裝的是自己的產(chǎn)品,可以隨心所欲的控制好幾個設(shè)備,并且效率也更高. 編程環(huán)境是VC6,我一直用vc6 我的聯(lián)系方式:www.liwensoft.com * - 本貼最后修改時間:2006-10-19 10:07:23 修改者:liwenz |
| 2樓: | >>參與討論 |
| 作者: BlankHeart 于 2006/10/18 18:57:00 發(fā)布:
不用那么麻煩.用KEIL自帶的例就可以也. 把ID STRING寫成不一樣就可以了. |
|
| 3樓: | >>參與討論 |
| 作者: simon21ic 于 2006/10/18 20:40:00 發(fā)布:
恭喜,怎么快就開始賣啦 |
|
| 4樓: | >>參與討論 |
| 作者: ysh815 于 2006/10/19 15:21:00 發(fā)布:
能不能說的在具體一點 |
|
| 5樓: | >>參與討論 |
| 作者: eleven11 于 2006/10/19 15:25:00 發(fā)布:
pc底層的驅(qū)動還是zlg的吧 |
|
| 6樓: | >>參與討論 |
| 作者: liwenz 于 2006/10/19 20:37:00 發(fā)布:
整個程序都是有源程序的 我不知道zlg的程序是怎么編的,包括底層。 但我以前全部用他的,確實也很好用,簡單。 這次整個程序都是有源代碼的,c++的。 當然全部從底層開始,用起來要復(fù)雜些。 但我可以全部控制他。 我是個vc程序員(MCSD),應(yīng)用層當然是vc, 別的應(yīng)該也可以,但我不會,至少沒有測試過。 庫函數(shù)是一個gpl的,源碼公開,免費的。 我只是把它用起來了,當然是費了好些功夫。 這樣,我可以編寫各種usb驅(qū)動程序了。所以很高興。 214x邊全部是zlg的。當然它提供了源代碼, 可是pc端他不提供,也許他也提供不了, 一般而言,它提供的也足夠了,一般人用不著。 我只是特別興趣,我的主要特長在pc端軟件 只是一個特別的要求才來用lpc214x的 * - 本貼最后修改時間:2006-10-19 20:43:42 修改者:liwenz |
|
| 7樓: | >>參與討論 |
| 作者: liwenz 于 2006/10/23 15:19:00 發(fā)布:
不過,對214x這邊的代碼,我不是很清楚 |
|
| 8樓: | >>參與討論 |
| 作者: guet 于 2006/10/23 21:31:00 發(fā)布:
不能給我們看看么 VC我學(xué)了好久也沒學(xué)會,真是浪費時間 |
|
| 9樓: | >>參與討論 |
| 作者: liwenz 于 2006/10/25 14:44:00 發(fā)布:
傳送的數(shù)據(jù)長度問題 我想測試usb地傳送速度,可是顯示的長度在不回傳數(shù)據(jù)的時候,不對 我想把文件傳送到sd卡上 有回傳時,顯示的結(jié)果是 send=409600,recv=409600,132 khZ,tm=3094,R=409600 R=409600就是統(tǒng)計的結(jié)果,由2146傳過來的 可是不回傳時,就是說我把回傳數(shù)據(jù)的那句//,pc的接收那句// 顯示的結(jié)果是 send=409600,recv=0,214 khZ,tm=1913,R=969617408 2146和pc端的程序 //-----------由zlg的much程序修改一部分---------214x 程序 while(1) { usbserve(); /* USB 事件處理函數(shù) */ if (bEPPflags.bits.configuration == 1) { if (bEPPflags.bits.ep1_rxdone == 1) { DISABLE(); bEPPflags.bits.ep1_rxdone = 0; if(GenEpBuf[0]=='C') { len = (GenEpBuf[1] << 8) + GenEpBuf[2]; /* 取得需要接收的數(shù)據(jù)的字節(jié)長度 */ ep02_set_rxlen(len, USB_Buf); /* 設(shè)置邏輯端點2接收字節(jié)長度 */ GenEpBuf[1] = '1'; GenEpBuf[2]=0; USB_WriteEndpoint(3, 3, GenEpBuf); /* 發(fā)送應(yīng)答給PC */ } else//發(fā)送數(shù)據(jù)長度 { sprintf((CHAR*)GenEpBuf,"R=%d",totalLen); USB_WriteEndpoint(3, 12, GenEpBuf); totalLen=0; } ENABLE(); } if (Usb.bRecFinish == 1) { /* 接收完成,開始發(fā)送數(shù)據(jù) */ DISABLE(); totalLen+=len; //ep02_start_tx(len, USB_Buf);/* 啟動發(fā)送數(shù)據(jù) */ //不注釋這句,就是回傳數(shù)據(jù) //--------------------------- //ep02_set_rxlen(len, USB_Buf); //Usb.bRecFinish = 0; //--------------------------- ENABLE(); } } } //--------------------------------------------------- //vc6 程序 還是用的zlg的,比較簡單,大家都有 unsigned CHAR cmd[3],ack[20]; cmd[0]='C'; cmd[1] = sizeof(sendbuf) / 256; //需要發(fā)送的字節(jié)數(shù)量的長度的高 8 位 cmd[2] = sizeof(sendbuf) % 256; // 低 8 位 LONG tm1,tm2; int send=0,recv=0; tm1=GetTickCount(); for(i=0;i<100;i++) { ret = WriteData214x(1, cmd, 3, 1000); if (ret != 3) { TRACE("邏輯端點 1 發(fā)送數(shù)據(jù)錯誤!"); return; } ret = ReadData214x(0, ack, 10, 1000); ret = WriteData214x(3, sendbuf, sizeof(sendbuf), 1000); if (ret != sizeof(sendbuf)) { AfxMessageBox("邏輯端點 2 發(fā)送數(shù)據(jù)錯誤!"); return; } if(ret>0) send+=ret; //ret1 = ReadData214x(2, recbuf, sizeof(sendbuf), 1000); //就是注釋這一句,就不要回傳 if(ret1>0) recv+=ret1; TRACE("send=%d,recv=%d\n",ret,ret1); } tm2=GetTickCount()-tm1; cmd[0]='R'; ret = WriteData214x(1, cmd, 3, 1000); ret = ReadData214x(0, ack, 20, 1000); TRACE("send=%d,recv=%d,%d khZ,tm=%d,%s",send,recv,send/tm2,tm2,ack); |
|
| 10樓: | >>參與討論 |
| 作者: simon21ic 于 2006/10/25 15:09:00 發(fā)布:
這個速度正常 有回傳和沒有回傳的速度確實有明顯的差別,沒有回傳的時候速度可以快不少,我的做法是每次ARM都回傳,但PC端是間隔N次檢查一次,這樣速度可以提高不少,而且本次回傳的數(shù)據(jù)可以把上次的數(shù)據(jù)刷新,也就是說不會疊加 |
|
| 11樓: | >>參與討論 |
| 作者: liwenz 于 2006/10/25 15:33:00 發(fā)布:
我這個數(shù)據(jù)回傳的問題解決了 在216端加上 Usb.bRecFinish = 0; 即可 if (Usb.bRecFinish == 1) { /* 接收完成,開始發(fā)送數(shù)據(jù) */ DISABLE(); if((Usb.Len)>0) totalLen+=Usb.Len; //ep02_start_tx(Usb.Len, USB_Buf); /* 啟動發(fā)送數(shù)據(jù) */ Usb.bRecFinish = 0; //--------------------------- ENABLE(); } |
|
| 12樓: | >>參與討論 |
| 作者: simon21ic 于 2006/10/26 15:24:00 發(fā)布:
低級錯誤,哈哈 |
|
| 13樓: | >>參與討論 |
| 作者: anyusb 于 2006/11/30 23:20:00 發(fā)布:
先后用過DDK/DRIVERSTUDIO 最后用煩了,現(xiàn)在一直用WINDRIVER,用要調(diào)用什么USB都很快. |
|
| 14樓: | >>參與討論 |
| 作者: zlg315 于 2006/12/1 8:08:00 發(fā)布:
對于USB驅(qū)動開發(fā)PC程序,用戶如果有特別的需求,我們可以在 最短的時間之內(nèi)為您定制。我們公司的USB開發(fā)小組,存在至今已經(jīng)五年時間,對USB的理解非常深刻、透徹(包括HOST、OTG),而且擁有全面的USB測試環(huán)境,保證程序完全正確,傳輸速度達到極限要求。 與此同時,祝賀liwenz網(wǎng)友的成功! |
|
| 15樓: | >>參與討論 |
| 作者: liwenz 于 2006/12/15 12:38:00 發(fā)布:
我也可以定做usb驅(qū)動,但不是免費的 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |