各位大蝦幫幫小弟吧,有誰(shuí)做過(guò)類(lèi)似項(xiàng)目的能否幫幫我: 我所使用的打印機(jī)是佳能的BJC-55,這個(gè)打印機(jī)既有并口,又有USB接口,去年我曾通過(guò)并口順利的打印出了數(shù)據(jù),但現(xiàn)在改成USB后,無(wú)法打印。
去年通過(guò)并口打印的程序如下所示:
/*并口發(fā)送數(shù)據(jù)*/
void SendChar(unsigned char character) { BUSY=1; while (BUSY==1) ; STROBE=1; //Delay(2); PrintPort=character; // Delay(2); STROBE=0; Delay(2); STROBE=1; } //一個(gè)測(cè)試打印的程序,在主程序中調(diào)用
unsigned char code InitByte[2]={0x1b,0x40}; void testprint() { unsigned char i; for (i=0;i<2;i++) SendChar(InitByte[i]);//打印機(jī)初始化的命令 SendChar(0x1b);//這條語(yǔ)句及下條語(yǔ)句的作用我忘了 SendChar(0x54);
SendChar(0x31);//打印數(shù)字1 SendChar(0x32);//打印數(shù)字2 SendChar(0x33);//打印數(shù)字3 SendChar(0x0c);//打印結(jié)束的命令
} 這款打印機(jī)基本上還是采用的是ESC指令,但和EPSON的還是有一點(diǎn)區(qū)別。通過(guò)這個(gè)testprint,就可以打印出123出來(lái),但我將這部分程序移植到USB程序時(shí),卻沒(méi)能打印出來(lái),USB的程序如下所示(關(guān)于USB的程序都是采用貴公司ch375prt.c中的程序):
unsigned char sss;
unsigned char m[2];
unsigned char code InitByte[2]={0x1b,0x40};
sss=set_usb_mode( 7 ); /* 復(fù)位USB設(shè)備,CH375向USB信號(hào)線的D+和D-輸出低電平 */ if (sss==1) ShowChar(1,220,"reset true",1);//如果復(fù)位正常,則在液晶上顯示reset true else ShowChar(1,220,"reset false",1); //如果復(fù)位不正常,則在液晶上顯示reset false Delay( 10 ); /* 復(fù)位時(shí)間不少于1mS,建議為10mS */ sss=set_usb_mode( 6 ); /* 結(jié)束復(fù)位 */ if (sss==1) ShowChar(1,220,"host true",1);//如果設(shè)置主機(jī)方式成功,則在液晶上顯示host true else ShowChar(1,220,"host false",1);//如果設(shè)置主機(jī)方式失敗,則在液晶上顯示host false Delay( 100 );
while ( wait_interrupt()!=USB_INT_CONNECT ); /* 等待復(fù)位之后的設(shè)備端再次連接上來(lái) */ Delay( 200 ); sss=init_print(); //soft_reset_print(); //不管有沒(méi)有此函數(shù),都不打印,而且如果加上此函數(shù),去掉下一行的初始化命令,也沒(méi)有打印 send_data( 2, InitByte ); //象并口一樣,發(fā)送初始化命令
m[0]=0x1b;
m[1]=0x54;
send_data(2, m);//象并口一樣,在發(fā)送完初始化命令后,發(fā)送0x1b,0x54 m[0]=0x31; m[1]=0x32; send_data(2, m);//準(zhǔn)備打印數(shù)字1和2 m[0]=0x0c;
send_data(1,m);//發(fā)送打印結(jié)束命令
此程序在運(yùn)行后,到init_print語(yǔ)句都一切正常,說(shuō)明單片機(jī)的數(shù)據(jù)已經(jīng)通過(guò)375到達(dá)了打印機(jī),但打印機(jī)就是不能打印,只能聽(tīng)到打印機(jī)發(fā)出聲音,而且在從打印機(jī)的指示燈不停的閃爍來(lái)看,確實(shí)也收到了數(shù)據(jù)(或命令),但打印紙就是一動(dòng)也不動(dòng)。我估計(jì)硬件上應(yīng)該沒(méi)什么問(wèn)題了,畢竟通過(guò)液晶,我能看到從375返回的數(shù)據(jù)表明都操作成功了,但對(duì)于發(fā)出去的控制命令,也不說(shuō)石沉大海一般,打印機(jī)的噴頭好象是在運(yùn)動(dòng),但就是不打印。
不知道各位大蝦有何意見(jiàn)?不甚感激