C# 开发USB通信、串口通信、Socket通信(适用于打印机的指令操作等)

时间:2024-04-02 10:20:21

背景:公司最近需要用到外接打印机(型号:东芝标签打印机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设备进行注册后,才能被识别,如下图。

C# 开发USB通信、串口通信、Socket通信(适用于打印机的指令操作等)

第二种: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# 串口通信