我現(xiàn)在用CH376 HOST接鍵盤可以操作,但是接USB 條碼墻就出現(xiàn)
get device descr failed cfg 28
set idle error report error 00
set report error 誰又接過掃描槍,可以告訴我它的設(shè)備描述符是多少啊?小弟非常感謝!
我現(xiàn)在用CH376 HOST接鍵盤可以操作,但是接USB 條碼墻就出現(xiàn)
get device descr failed cfg 28
set idle error report error 00
set report error 誰又接過掃描槍,可以告訴我它的設(shè)備描述符是多少啊?小弟非常感謝!
按照你描述的這個現(xiàn)象可以確定CH376和掃描槍之間的USB通信就有問題。
是模式設(shè)置的問題嗎?比如說掃描槍用得時高速模式,請問下如何判斷呢?如果要設(shè)置為高速模式我如何設(shè)置呢? //***************************************************** //* NAME: set_freq(void) //* FUCTION: 設(shè)置CH376的進(jìn)入低速模式 //* 輸入?yún)?shù):無 //* 輸出參數(shù):無 //* 說明: 對于鼠標(biāo)鍵盤等低速設(shè)備,要先設(shè)置ch376為低速模式 //******************************************************
void set_freq(void) { CH376_WR_CMD_PORT(0x0b); // 切換使375B進(jìn)入低速模式 CH376_WR_DAT_PORT(0x17); CH376_WR_DAT_PORT(0xd8); } 請教,非常感謝~
CH376_WR_CMD_PORT( 0x0a ); //檢測是全速設(shè)備還是低速設(shè)備 CH376_WR_DAT_PORT( 0x07 ); c=CH376_DAT_PORT; if( c&0x10 ){ //低速設(shè)備 } else{ //全速設(shè)備 }
謝謝樓主,只是想再問下:我進(jìn)行選擇,接上低速鍵盤還OK,插上掃描槍也OK,可是似乎不穩(wěn)定,掃描一槍就掛了,可能我沒有設(shè)置高速模式把?請問高速模式如何設(shè)置呢? //* NAME: set_freq(void) //* FUCTION: 設(shè)置CH376的進(jìn)入低速模式 //* 輸入?yún)?shù):無 //* 輸出參數(shù):無 //* 說明: 對于鼠標(biāo)鍵盤等低速設(shè)備,要先設(shè)置ch376為低速模式 //******************************************************
void set_freq(void) { UINT8 check; CH376_WR_CMD_PORT( 0x0a ); //檢測是全速設(shè)備還是低速設(shè)備 CH376_WR_DAT_PORT( 0x07 ); check=CH376_DAT_PORT; if( check&0x10 ) { CH376_WR_CMD_PORT(0x0b); // 切換使375B進(jìn)入低速模式 CH376_WR_DAT_PORT(0x17); CH376_WR_DAT_PORT(0xd8); //低速設(shè)備 led3=0; } else { //led3=0;//全速設(shè)備 }
} //
全速就不設(shè)置就可以了。還有什么好設(shè)置的?在檢測到設(shè)備移除之后復(fù)位芯片重新初始化CH375,在檢測設(shè)備連接。等設(shè)備連接之后通過這個判斷設(shè)置速度即可。
非常感謝樓主!在幫個忙:我用貴司提供的CH376操作鍵盤鼠標(biāo)的例程,現(xiàn)在主函數(shù)裏面代碼如下: while(1) { //獲取設(shè)備1的數(shù)據(jù) s = get_int_in( Device_Atti.Device[0].tog,Device_Atti.Device[0].Device_endp);
//如果該設(shè)備是符合設(shè)備,則需要獲取設(shè)備2的數(shù)據(jù) if( Device_Atti.Device_compat ) { s = get_int_in( Device_Atti.Device[1].tog,Device_Atti.Device[1].Device_endp); } 函數(shù)s = get_int_in( Device_Atti.Device[0].tog,Device_Atti.Device[0].Device_endp);如果我接上鍵盤,按下"A“,串口顯示是00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00!我想知道 這個變量s到底得到了一個什麼值啊?因為我想把按下鍵盤A通過LCD顯示出來,但是一直不知道變量s得到什麼值???求解,感謝
前面是鍵值碼,后面是斷碼。斷碼表示按鍵釋放。這個是有規(guī)范的。你自己到網(wǎng)上去下載相關(guān)資料。
有沒有C8051F340操作的CH376程序呢?
C8051和51操作程序一樣的,只是C8051的速度快點(diǎn)。