求打印機(jī)缺紙,卡紙等出錯(cuò)處理的程序,或請(qǐng)大俠指點(diǎn)如何去寫(xiě)這塊驅(qū)動(dòng)
這個(gè)需要你發(fā)送一個(gè)控制傳輸命令去讀取缺紙等信息,這個(gè)在打印機(jī)類協(xié)議里面有這個(gè)控制傳輸. 還有一部分就是沒(méi)墨的話需要你通過(guò)批量端點(diǎn)來(lái)獲取數(shù)據(jù)才可以.
有這樣的例程么,幫忙發(fā)一個(gè),謝謝
有相應(yīng)的資料么,幫忙發(fā)一個(gè)
unsigned char get_port_status_X( ) { /* 查詢打印機(jī)端口狀態(tài),返回狀態(tài)碼,如果為0FFH則說(shuō)明操作失敗 */ /* 返回狀態(tài)碼中: 位5(Paper Empty)為1說(shuō)明無(wú)紙, 位4(Select)為1說(shuō)明打印機(jī)聯(lián)機(jī), 位3(Not Error)為0說(shuō)明打印機(jī)出錯(cuò) */ buffer[0]=0xA1; buffer[1]=1; buffer[2]=buffer[3]=buffer[4]=buffer[5]=0; buffer[6]=1; buffer[7]=0; /* 控制傳輸獲取打印機(jī)狀態(tài),SETUP數(shù)據(jù) */ wr_usb_data( 8, buffer ); /* SETUP數(shù)據(jù)總是8字節(jié) */ if ( issue_token_X( ( 0 << 4 ) | DEF_USB_PID_SETUP, 0x00 )==USB_INT_SUCCESS ) { /* SETUP階段DATA0操作成功 */ if ( issue_token_X( ( 0 << 4 ) | DEF_USB_PID_IN, 0x80 )==USB_INT_SUCCESS ) { /* DATA階段DATA1接收操作成功 */ rd_usb_data( buffer ); /* 讀出接收到的數(shù)據(jù),通常只有1個(gè)字節(jié) */ wr_usb_data( 0, buffer ); /* 發(fā)送0長(zhǎng)度的數(shù)據(jù)DATA1說(shuō)明控制傳輸成功 */ if ( issue_token_X( ( 0 << 4 ) | DEF_USB_PID_OUT, 0x40 )==USB_INT_SUCCESS ) return( buffer[0] ); /* STATUS階段操作成功,返回狀態(tài)碼 */ } } return( 0xFF ); /* 返回操作失敗 */ } 這個(gè)是獲取狀態(tài)的程序,你可以看下
這個(gè)程序我已經(jīng)用上了,我想做包括,卡紙、少墨、無(wú)墨盒等狀態(tài)的程序,請(qǐng)大俠幫忙
這些狀態(tài)的話你需要去監(jiān)測(cè)下計(jì)算機(jī)發(fā)送的什么命令,然后你按照計(jì)算機(jī)發(fā)送的命令來(lái)進(jìn)行操作,這些卡紙,少墨以及無(wú)墨盒的狀態(tài)非打印機(jī)類請(qǐng)求,所以無(wú)法提供技術(shù)支持.
謝謝,計(jì)算機(jī)發(fā)送,和接收的數(shù)據(jù)很多,不知道是那個(gè),是不是需要看一下USB協(xié)議
再有就是,這些數(shù)據(jù)知道之后該怎么寫(xiě)出錯(cuò)處理的程序,是要查詢中斷么