當時有那麼一個情況 驗證Andorid連接一個打印機,併成功打印一些無關痛癢的字符。
首先先介紹一下打印機,是一個連牌子都沒有的打印機,一個標準的windows打印機(在winxp上連驅動都沒裝就直接用了,我之前應該是裝了串口驅動的)
Andorid設備直接可以通過USB連接,如果是手機的話得用OTG先轉一下。
下面就說明一下驅動的步驟
1.在win xp上驗證這個打印機是否能用。(在觀察能打印的過程中,找到windows上生成節點的名稱的,USB設備關鍵的PID,和VID)
這裏我觀察到
VID:067B PID 2303 COM16 打印正常
2.應該是要在linux系統上看看能否打印的,這裏我嫌麻煩就跳過了。直接到安卓上看看,接入設備有什麼信息
連接ADB
adb shell
cat /proc/kmsg
插入USB打印機
<6>[ 4601.110632] usb 2-1.3.3: new full-speed USB device number 13 using sw-ehci
這裏只打印了一句話,發現了USB設備後,大概就生成了USB的節點,並沒有找到相應的驅動。
這裏我搜索了一下PID和VID 發現這個就是PL2303 usb轉串口的, 那麼我猜想這個線的另一頭就是有個串口打印機。
那麼首先確認一下內核中的USB轉串口是否有這個驅動文件,沒有被編譯進內核
linux-3.4/drivers/usb/serial/ 這個目錄下運氣好正好有pl2303.c
那麼很簡單重新配置一下內核,編譯即可(這裏也是看着名字選的2302和一個通用串口驅動可能有用吧)。
Device Drivers -->
USB support -->
USB Serial Converter support --->
USB Prolific 2303 Single Port Serial Driver
USB Generic Serial Driver
這裏上網查過一下資料說是 usb support 的USB Printer support 選中
這個我試了一下沒有效果,發現驅動是針對一塊VID和PID是Hp的某款打印機的驅動,沒有用也是正常,誰讓我有個山寨打印機
接着把重新編譯好的內核燒錄進機器,插入usb 打印機
<6>[ 4600.745360] scsi2 : usb-storage 2-1.3.1:1.0
<6>[ 4600.855611] usb 2-1.3.2: new full-speed USB device number 12 using sw-ehci
<6>[ 4601.258705] pl2303 2-1.3.3:1.0: pl2303 converter detected
<6>[ 4601.277798] usb 2-1.3.3: pl2303 converter now attached to ttyUSB0
看到信息就說明成功驅動PL2302了,接下來乾的事情就是給打印機發電數據看看有沒有反應。
這裏特地查看了一下PL2302的驅動,open中是有設置波特率的,所以我就直接
echo "111111111" >/dev/ttyUSB0
不出所料打印出了信息。
於是這個打印機接下去的內容就基本上沒有了,因爲並沒有打印機的相關資料,所以根本不知道如何打印其他內容是怎麼做了。
還有一些想法就是改造一下pl2302這個驅動,把一些打印機個性化設置加進去。 當然這些需要有相關的打印機的驅動手冊幫助了。
當然在andorid上這樣打印提苦逼,ANDORID提供了HID的控制和訪問方法。相關步驟也比較簡單,自行百度吧。
這裏注意pl2302的驅動必須得弄好,不然不設置波特率,沒法正常通訊。
,