[求助]CH376接打印機(jī)的問題,初始化可以,發(fā)送數(shù)據(jù)問題

主函數(shù): mInitCH376Host(); // 設(shè)置為HOST模式 if(init_print()==0x14) // 初始化USB打印機(jī) printf("打印機(jī)初始化成功!");delay_ms(50); send_data(1,printdata); printf("程序執(zhí)行完畢!");

程序我是參考CH375 HOST的例程。 從串口得到的 設(shè)備描述符等: 通信測試正常! USB模式設(shè)置完成!模式5 USB模式設(shè)置完成!模式7 USB模式設(shè)置完成!設(shè)備已連接!模式6 init_print() >> p_dev_descr->bLength:0x12 init_print() >> p_dev_descr->bDescriptorType:0x1 init_print() >> p_dev_descr->bcdUSB:0x200 init_print() >> p_dev_descr->bDeviceClass:0x7 init_print() >> p_dev_descr->bDeviceSubClass:0x0 init_print() >> p_dev_descr->bDeviceProtocol:0x0 init_print() >> p_dev_descr->bMaxPacketSize0:0x10 init_print() >> p_dev_descr->idVendor:0x471 init_print() >> p_dev_descr->idProduct:0x2379 init_print() >> p_dev_descr->bcdDevice:0x100 init_print() >> p_dev_descr->iManufacturer:0x1 init_print() >> p_dev_descr->iProduct:0x2 init_print() >> p_dev_descr->iSerialNumber:0x0 init_print() >> p_dev_descr->bNumConfigurations:0x1

-------------- init_print() >> p_cfg_descr->bLength:0x9 init_print() >> p_cfg_descr->bDescriptorType:0x2 init_print() >> p_cfg_descr->wTotalLength:0x20 init_print() >> p_cfg_descr->bNumInterfaces:0x1 init_print() >> p_cfg_descr->bConfigurationValue:0x1 init_print() >> p_cfg_descr->iConfiguration:0x0 init_print() >> p_cfg_descr->bmAttributes:0xc0 init_print() >> p_cfg_descr->MaxPower:0x32

-------------------------- init_print() >> p_itf_descr->bLength:0x9 init_print() >> p_itf_descr->bDescriptorType:0x4 init_print() >> p_itf_descr->bInterfaceNumber:0x0 init_print() >> p_itf_descr->bAlternateSetting:0x0 init_print() >> p_itf_descr->bNumEndpoints:0x2 init_print() >> p_itf_descr->bInterfaceClass:0x7 init_print() >> p_itf_descr->bInterfaceSubClass:0x1 init_print() >> p_itf_descr->bInterfaceProtocol:0x2 init_print() >> p_itf_descr->iInterface:0x0

-------------- init_print() >> endp_descr-> init_print() >> endp_descr->bDescriptorType:0x5 init_print() >> endp_descr->bEndpointAddress:0x2 init_print() >> endp_descr->bmAttributes:0x2 init_print() >> endp_descr->wMaxPacketSize:0x40 init_print() >> endp_descr->wMaxPacketSize1:0x0 init_print() >> endp_descr->bInterval:0x0

-------------------------- init_print() >> endp_descr->bLength:0x7 init_print() >> endp_descr->bDescriptorType:0x5 init_print() >> endp_descr->bEndpointAddress:0x83 init_print() >> endp_descr->bmAttributes:0x2 init_print() >> endp_descr->wMaxPacketSize:0x40 init_print() >> endp_descr->wMaxPacketSize1:0x0 init_print() >> endp_descr->bInterval:0x0

-------------------------- init_print() >> endp_descr-> init_print() >> endp_descr->bDescriptorType:0x0 init_print() >> endp_descr->bEndpointAddress:0x0 init_print() >> endp_descr->bmAttributes:0x0 init_print() >> endp_descr->wMaxPacketSize:0x0 init_print() >> endp_descr->wMaxPacketSize1:0x0 init_print() >> endp_descr->bInterval:0x0

-------------------------- init_print() >> endp_descr->bLength:0x0 init_print() >> endp_descr->bDescriptorType:0x0 init_print() >> endp_descr->bEndpointAddress:0x0 init_print() >> endp_descr->bmAttributes:0x0 init_print() >> endp_descr->wMaxPacketSize:0x0 init_print() >> endp_descr->wMaxPacketSize1:0x0 init_print() >> endp_descr->bInterval:0x0

打印機(jī)初始化成功! endp_in_addr:0x3 endp_out_addr:0x2 endp_out_size:0x40 成功發(fā)送!程序執(zhí)行完畢!

我用BUS Hound直接發(fā)送ASCII數(shù)據(jù)就可以打印,用CH376這樣可以嗎?

如果你前面初始化正常通過的話,使用send_data()把打印機(jī)識別的數(shù)據(jù)發(fā)送到對應(yīng)OUT端點,打印機(jī)是可以正常打印的。 有幾個問題,你配置描述符的大小是0x20,后面多了14個字節(jié)?注意一下打印機(jī)數(shù)據(jù)發(fā)送的端點號是否正確,同步標(biāo)志默認(rèn)DATA0。你可以進(jìn)入send_data()這個函數(shù)里面監(jiān)控一下。


后面14個字節(jié)沒有配置,用串口輸出的端點0到3的描述符。send_data里面的端點號是0x2,我把程序發(fā)到你郵箱了,幫我看一下吧,謝謝了。關(guān)于CH376的程序大部分都沒改動。


用BUS Hound直接發(fā)送的數(shù)據(jù) 和 用函數(shù)send_data()發(fā)送的數(shù)據(jù) 效果是一樣的嗎?201412616214362.jpg


如果端點號正確的話,效果應(yīng)該是一樣的。你可以使用USB分析儀監(jiān)控一下CH376發(fā)出的USB數(shù)據(jù),與電腦端比對一下。


端點號就是從描述符里面的endp_out_addr:0x2 是嗎?我這里沒有USB總線監(jiān)控器,第一次接觸USB。


是的 還需要注意的是否電腦枚舉的所有命令都用CH376模擬實現(xiàn),最好還是用分析儀監(jiān)控一下兩種情況,再做對比。


我用BUS BOUND抓取的初始化過程有多次的獲取描述符,并且用兩個接口!!,如果用單片機(jī)+CH375當(dāng)主機(jī)的話,用完全符合這樣的流程嗎?我用的打印機(jī)是HP Deskjet 1000 J110 在用BUS BOUND抓數(shù)據(jù)時 選擇設(shè)備有很多層 20—ROOT HUB √32—USB Composite Device √33—USB打印支持 √34—HP Deskjet 1000 J110 series (REST) 打勾是我選的,感覺不對,如果用單片機(jī)+CH375需要抓哪些設(shè)備的數(shù)據(jù)是僅僅要34設(shè)備的數(shù)據(jù)嗎?


單片機(jī)控制CH375操作打印機(jī)的流程基本要上與BUS HOUND抓到的數(shù)據(jù)要一致,像設(shè)備描述符、配置描述符只需要完整的獲取一次即可,像字符串描述符是不影響打印機(jī)操作的。 抓數(shù)據(jù)的話那三個都需要勾選,都是指的同一個設(shè)備,只是不同層而已。因為是復(fù)合設(shè)備所以會分兩個接口。


哦哦,了解了,謝謝。我用的這款打印機(jī)用的打印機(jī)語言是PCL3 GUI 可是找不到它的命令手冊,不知道您有沒有或者知道哪里可以找到?如果有的話麻煩您發(fā)到我郵箱個人信息保護(hù),已隱藏 之后有什么問題再向您請教,謝謝


我們這邊沒有相關(guān)資料,這些資料最好和打印機(jī)廠商要,在其他地方找的不全。


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

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