ch376连接打印机

命令CMD_ISSUE_TKN_X的第一个参数应该填什么呢,牛人们帮忙看一下,非常感谢

第一个字节是同步标志: 同步标志的位 7 为主机端点的接收器的同步触发标志, 位 6 为主机端点的发送器的同步触发标志,位 5~位 0 必须为 0

第二个字节是事物属性:事务属性的低 4 位指定事务的令牌 PID,高 4 位指定 USB 设备的目的端点号。


这个我知道我的意思是如果我接收是不是就把第7位置1,发送就把位6置1,如果发送SETUP包我把位7和6置9还是1呢


成功接收到要翻转位7,1->0或0->1。发送也是一样的,翻转的是位6。

发送SET包位6一定要为0 ,控制传输都是从DATA0包开始的。


我刚才按您说的这样进行了发送,我前面获取枚举的已经可以了,就是往打印机发送指令打印机老是没反应,您看一下我的发送有什么问题吗

void ch376_send_data(int len,char *buf)

{

char l,stuse,out;

out = 0x40;

while(len)

{

l = len > endp_out_size ? endp_out_size : len;

ch376_WR_HOST_DATA(l,buf);

stuse = ch376_ISSUE_TKN_X(out,endp_out_addr << 4 | DEF_USB_PID_OUT);

u3_printf("stuse = %x\r\n",stuse);

if(stuse == USB_INT_SUCCESS)

{

u3_printf("send is success");

out = (~out & 0x40);

len -= l;

buf += l;

delay_us(10);

}

}

}

我就简单让打印机做个进纸的动作,我的打印机是hp deskjet1000使用的是PCL3的指令协议,我写的进纸的指令是      ESCE   复位

        FF      进纸

        ESCE    复位

我是把指令字符换成了十进制放到数组中发生到打印机的是{27,69,12,27,69};我不知道这样可不可以。请您看到的时候帮我看一下,谢谢您了


 

out初始赋值不要放函数里。

u3_printf("stuse = %x\r\n",stuse);打印值是多少?

CH376一次发送最大包64字节。大数据包分段传至于设备能不能识别,需要验证。

 


谢谢您的解答

stuse的值是0x14,

ch376_ISSUE_TKN_X(out,endp_out_addr << 4 | DEF_USB_PID_OUT);

的返回值应该也是对的,我每次才发送5个字节左右的指令,没有大于64字节,我感觉这些指令应该发送带打印机了,可能发送指令的格式有问题,您知道发送给打印机的格式是怎样的吗?


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