[求助]請(qǐng)教375打印問題?

我購(gòu)買了你們的CH375+CH341開發(fā)板,在調(diào)試供的打印程序時(shí),init_print()程序有問題,不知道什么原因? 1.執(zhí)行status=get_descr(1);指令后, status=0x14,正確.

2.執(zhí)行status=set_addr(3);指令后, status=0x14,正確. 3.執(zhí)行status=get_descr(2); 指令后, status=0x17,不正確,其含義為USB控制傳輸數(shù)據(jù)太多,緩沖區(qū)溢出,扣面的程序就無法運(yùn)行了,請(qǐng)用如何解決?

我用的打印機(jī)是HP-1015,請(qǐng)高手指點(diǎn).

status=get_descr(2); 返回控制傳輸數(shù)據(jù)太多,緩沖區(qū)溢出.這時(shí)候要參考USB協(xié)議用外部固件來實(shí)現(xiàn)USB描述符的讀取.


有沒有源程序,請(qǐng)?zhí)峁┮幌?,多謝!


你是用的內(nèi)部固件的簡(jiǎn)化命令來讀取描述符的, 你可以試一下用外部固件方式試一下: 下面是個(gè)大概的流程: set_addr(3);后需要set_usb_addr(3); unsigned char get_descr_ex() { unsigned char descr_len; unsigned char *p=data_buf; endp7_mode=0x80; toggle_send(); wr_usb_data(8,Request.Req_buf); if(issue_token(0x0d)==USB_INT_SUCCESS) { endp6_mode=0xc0; toggle_recv(); } else printf("setup failed\n"); if(issue_token(0x09)==USB_INT_SUCCESS) { if(flag_config_2)descr_len=data_buf[2]-rd_usb_data(data_buf); else descr_len=data_buf[0]-rd_usb_data(data_buf); while(descr_len>0) { toggle_recv(); p+=0x08; if(issue_token(0x09)==USB_INT_SUCCESS) descr_len-=rd_usb_data(p); else printf("data in again failed\n"); } } else printf("data in failed\n"); endp7_mode=0xc0; toggle_send(); wr_usb_data(0,Request.Req_buf); if(issue_token(0x01)==USB_INT_SUCCESS) return(1); else printf("status failed\n"); }

printf("get device descr \n"); Request.Req.bmRequestType=0x80; Request.Req.bRequest=0x06; Request.Req.wValue=0x0001; Request.Req.wIndex=0x0000; Request.Req.wLength=0x1200; printf("device descr = "); if(get_descr_ex()==1) { for(i=0;i!=data_buf[0];i++) printf("%02x ",(unsigned int)data_buf[i]); printf("\n"); } else printf("get device descr failed\n");

printf("get config descr \n"); Request.Req.bmRequestType=0x80; Request.Req.bRequest=0x06; Request.Req.wValue=0x0002; Request.Req.wIndex=0x0000; Request.Req.wLength=0x0900; printf("config descr = "); if(get_descr_ex()==1) { for(i=0;i!=data_buf[0];i++) printf("%02x ",(unsigned int)data_buf[i]); printf("\n"); } else printf("get config descr failed\n");


謝謝,我試試!


我編寫了一個(gè)外部固件的方法讀取描述符的程序,在調(diào)試時(shí)出現(xiàn)以下問題: 如1: 正確數(shù)據(jù): 12 01 10 01 - 00 00 00 08 - f0 03 17 0e - 00 01 01 02 03 01 程序收到的數(shù)據(jù) 12 01 10 01 - 00 00 00 08 03 01 如2: 正確數(shù)據(jù): 09 02 4e 00 - 01 01 00 c0 - 01 09 04 00 - 00 03 07 01 03 00 07 05 - 01 02 40 00 - 00 07 05 81 - 02 40 00 00 07 05 82 03 - 08 00 ff 09 - 04 00 01 02 - 07 01 02 00 07 05 01 02 - 40 00 00 07 - 05 81 02 40 - 00 00 09 04 00 02 01 07 - 01 01 00 07 - 05 01 02 40 - 00 00 程序收到的數(shù)據(jù) 09 02 4e 00 - 01 01 00 c0 03 00 07 05 - 01 02 40 00 07 05 82 03 - 08 00 ff 09 07 05 01 02 - 40 00 00 07 00 02 01 07 - 01 01 00 07 每次丟失后面的8位數(shù)據(jù),請(qǐng)各位大俠指導(dǎo)一下。


set_addr(3);和set_usb_addr(3);有什么區(qū)別?我怎么找不到set_usb_addr(3);


中間的部分?jǐn)?shù)據(jù)丟失,就不可能是操作設(shè)備時(shí)沒返回,那一定是你程序上或存描述符的緩沖區(qū)上有問題 set_addr(3);和set_usb_addr(3);見CH375DS2.PDF


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

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