CH375B如何设定HOST接口号

我使用CH375B控制打印机,其中的一个型号HP D5568已经控制成功 通过读取配置描述符,可知此机器包含2个接口 09 02 4e 00 02 01 00 c0 01 其中0号接口为打印接口 09 04 00 00 02 07 01 02 00 07 05 08 02 00 02 00 07 05 89 02 00 02 00

通过设置endp_out_addr和endp_in_addr 成功控制了此打印机

但在使用另一型号打印机k209a时, 通过读取配置描述符,可知此机器包含3个接口 09 02 65 00 03 01 00 c0 01 其中0号接口为 09 04 00 00 02 ff cc 00 00 07 05 01 02 00 02 00 07 05 82 02 00 02 00 不是打印机接口 其中1号接口为 09 04 01 00 02 07 01 02 00 07 05 08 02 00 02 00 07 05 89 02 00 02 00 为打印机接口 通过设置endp_out_addr和endp_in_addr 却无法进行打印,此打印机无反应。 我估计问题就出现在K209a使用接口1,不是缺省的接口0

请问如何控制CH375B进行接口设置,使得输出的控制指令都能发向接口1。

需要发送Set_Interface命令,参数为0X01,即可转为接口1


实际上不同的接口的话应该有不同的接口描述符,不同的接口描述符对应着不同的端点描述符,按照你的下面一个打印机,按照上面的接口1的端点分别为0X08--OUT端点,0X89---IN端点。再发送设置接口的控制请求下去之后。命令参数为0X01,应该就可以打印了。


谢谢楼上两位了,但在我的USB375.h 文件里没有关于任何Set_interface 指令的定义,版本V2.0 for CH372A/CH375A。 我也没有Set_interface 函数的实现。可否给一个呀!


这个程序你可以参考打印机里面有一个SOFT_RESET这个命令,至于发送什么数据,建议你去看下USB协议或者在计算机上面采用BUSHOUND软件来监测下计算机是怎么操作的,按照计算机的操作步骤来进行操作。


要这么复杂吗?下面是 set_addr的实现,有没有类似的实现set_interface的。有的话告诉我指令号也行, 就是有没有CMD_SET_INTERFACE?

unsigned char set_addr( unsigned char addr ) { /* 设置设备端的USB地址 */ unsigned char status; CH375_WR_CMD_PORT( CMD_SET_ADDRESS ); /* 设置USB设备端的USB地址 */ CH375_WR_DAT_PORT( addr ); /* 地址, 从1到127之间的任意值, 常用2到20 */ status=wait_interrupt(); /* 等待CH375操作完成 */ if ( status==USB_INT_SUCCESS ) { /* 操作成功 */ CH375_WR_CMD_PORT( CMD_SET_USB_ADDR ); /* 设置USB主机端的USB地址 */ CH375_WR_DAT_PORT( addr ); /* 当目标USB设备的地址成功修改后,应该同步修改主机端的USB地址 */ } return( status ); }


只有登录才能回复,可以选择微信账号登录