C#使用SerialPort協定控制USB開關
這篇文章介紹如何使用SerialPort來控制市售的USB開關。
SerialPort Initial
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| private SerialPort barcode = null; private enum BaudRate { BO_9600, BO_19200, BO_38400, BO_57600, BO_115200 }; public bool Init(int comPort, BaudRate baudRate) { try { var comportName = string.Format(@"COM{0}", comPort); if (barcode != null && barcode.IsOpen) { barcode.Close(); } barcode = new SerialPort { PortName = comportName }; switch (baudRate) { case BaudRate.BO_9600: barcode.BaudRate = 9600; break; case BaudRate.BO_19200: barcode.BaudRate = 19200; break; case BaudRate.BO_38400: barcode.BaudRate = 38400; break; case BaudRate.BO_57600: barcode.BaudRate = 57600; break; case BaudRate.BO_115200: barcode.BaudRate = 115200; break; default: barcode.BaudRate = 19200; break; } barcode.Parity = Parity.None; barcode.DataBits = 8; barcode.StopBits = StopBits.One; barcode.ReadBufferSize = 1024; barcode.WriteBufferSize = 1024;
if (!barcode.IsOpen) { try { barcode.Open(); } catch (Exception ex) { LogUtil.logger.Error(Convert.ToString(ex)); barcode = null; return false; } } } catch (Exception ex) { LogUtil.logger.Fatal(Convert.ToString(ex)); } return true; }
|
SerialPort Write to USB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| private byte[] usbOpen = new byte[] { 0xA0, 0x01, 0x01, 0xA2 }; private byte[] usbClose = new byte[] { 0xA0, 0x01, 0x00, 0xA1 }; public void WriteByteToUsbLcus(bool isOpen) { try { if (barcode == null || barcode.IsOpen == false) return;
if (isOpen) { barcode.Write(usbOpen, 0, usbOpen.Length); } else { barcode.Write(usbClose, 0, usbClose.Length); } } catch (Exception ex) { LogUtil.logger.Fatal(Convert.ToString(ex)); } }
|