ch376連接打印機

命令CMD_ISSUE_TKN_X的第一個參數(shù)應(yīng)該填什么呢,牛人們幫忙看一下,非常感謝

第一個字節(jié)是同步標志: 同步標志的位 7 為主機端點的接收器的同步觸發(fā)標志, 位 6 為主機端點的發(fā)送器的同步觸發(fā)標志,位 5~位 0 必須為 0

第二個字節(jié)是事物屬性:事務(wù)屬性的低 4 位指定事務(wù)的令牌 PID,高 4 位指定 USB 設(shè)備的目的端點號。


這個我知道我的意思是如果我接收是不是就把第7位置1,發(fā)送就把位6置1,如果發(fā)送SETUP包我把位7和6置9還是1呢


成功接收到要翻轉(zhuǎn)位7,1->0或0->1。發(fā)送也是一樣的,翻轉(zhuǎn)的是位6。

發(fā)送SET包位6一定要為0 ,控制傳輸都是從DATA0包開始的。


我剛才按您說的這樣進行了發(fā)送,我前面獲取枚舉的已經(jīng)可以了,就是往打印機發(fā)送指令打印機老是沒反應(yīng),您看一下我的發(fā)送有什么問題嗎

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的指令協(xié)議,我寫的進紙的指令是 ? ? ?ESCE ? 復(fù)位

????????FF ? ? ?進紙

????????ESCE ? ?復(fù)位

我是把指令字符換成了十進制放到數(shù)組中發(fā)生到打印機的是{27,69,12,27,69};我不知道這樣可不可以。請您看到的時候幫我看一下,謝謝您了


?

out初始賦值不要放函數(shù)里。

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

CH376一次發(fā)送最大包64字節(jié)。大數(shù)據(jù)包分段傳至于設(shè)備能不能識別,需要驗證。

?


謝謝您的解答

stuse的值是0x14,

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

的返回值應(yīng)該也是對的,我每次才發(fā)送5個字節(jié)左右的指令,沒有大于64字節(jié),我感覺這些指令應(yīng)該發(fā)送帶打印機了,可能發(fā)送指令的格式有問題,您知道發(fā)送給打印機的格式是怎樣的嗎?


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

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