背景:公司最近需要用到外接打印机(型号:东芝标签打印机B-FV4T,采用东芝自定义的TPCL指令格式),现在市场上可以购买到的主流打印机一般都是支持一下通信模式的。
1:USB通信
2:网络通信
3:串口通信(一般是RS232)
4:蓝牙通信(东芝标签打印机B-FV4T,没有蓝牙,所以本人没办法测试)
原因:因为想要打印机做到即插即用,所以需要绕过官方提供的打印机驱动,使用打印机指令来进行打印控制。但是其实还是避免不了一些驱动的安装,比如USB转RS232转接线的驱动等,但是在Win10操作系统,所有驱动都会自己安装,不需要那么麻烦。
USB通信:
usb通信有很多方式,我查询了很多网上的资料,大体上有三种,1:LibUsbDotNet 2:CyUSB 3:Win_32Api
前两种方式都需要下载对应的库文件(大家可以百度查询相关资料,很多),第三种是直接调用win32_api的函数。
这三种方式我都进行了测试,讲讲各自的区别。
第一种:功能很强大,但是有个麻烦的地方是,必须用他自己的一个软件(inf-wizard.exe),对USB设备进行注册后,才能被识别,如下图。
第二种:CyUSB提供三种USB可识别的驱动,但是我的使用的打印机以下三种都不能识别,我不知道是不是我哪里没有设置对,或者是哪里使用出错了,反正最后没有识别到我的USB设备,就放弃了;
CyConst.DEVICES_CYUSB——由CyUSB.sys提供设备驱动的USB设备
CyConst.DEVICES_HID——USB人机接口设备(如键盘、鼠标)
CyConst.DEVICES_MSC——USB大容量存储类设备(如U盘、移动硬盘)
第三种:调用Windows API,由于没有调用人家封装的库,所以代码比较复杂,比较多,但是功能齐全,我最后就是使用了这个方法。大家可以参考这篇文章“C#与USB HID间的通信”,但是他这篇文章的 讲的是USB中HID类型的通信,可以借鉴一下,但是如果你的设备不是HID类型的话,还需要修改。
转:c# USB通信
网络通信:
其实网络通信什么好讲的,就是建立一个Socket对象进行通信即可。
转:c# 网络通信
串口通信:
串口通信,建立一个SerialPort对象进行通信,但是需要注意一些细节方面的设置,否则可能会导致通信失败。
转:c# 串口通信