public TrinketFakeUsbSerialHostSW() { notifyIcon = new NotifyIcon(); notificationMenu = new ContextMenu(InitializeMenu()); // notifyIcon.DoubleClick += IconDoubleClick; System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TrinketFakeUsbSerialHostSW)); notifyIcon.Icon = (Icon)resources.GetObject("$this.Icon"); notifyIcon.ContextMenu = notificationMenu; trinket = new VUsbDevice(0x1781, 0x1111); // VID and PID set inside usbconfig.h, which is the Trinket's VID and PID while using the TrinketFakeUsbSerial library if (trinket.TryConnect()) { try { if (trinket.MyUsbDevice.IsOpen == false) { if (trinket.MyUsbDevice.Open() == false) { throw new Exception("Can't Open USB Device"); } } trinketReader = trinket.MyUsbDevice.OpenEndpointReader(LibUsbDotNet.Main.ReadEndpointID.Ep01); trinketReader.DataReceived += new EventHandler<LibUsbDotNet.Main.EndpointDataEventArgs>(trinket_DataReceived); trinketReader.DataReceivedEnabled = true; } catch (Exception ex) { MessageBox.Show("Trinket Connecting Error: " + ex.Message); } } //trinket.OnOtherDeviceNotifyEvent += new EventHandler<DeviceNotifyEventArgs>(trinket_OnOtherDeviceNotifyEvent); trinket.OnConnect += new EventHandler(trinket_OnConnect); trinket.OnDisconnect += new EventHandler(trinket_OnDisconnect); // the last used serial port is remembered inside an INI file ini = new IniFile(Application.ExecutablePath + ".settings.ini"); lastPortName = ini.Read("SerialPort", "LastPort"); if (lastPortName != null) { lastPortName = lastPortName.Trim(); if (lastPortName.Length == 0) { lastPortName = null; // just in case the ini file is malformed } } if (lastPortName != null) { try { // attempt to open the serial port immediately if the previous port exists port = new SerialPort(lastPortName); port.Open(); port.ReadTimeout = 200; port.ReceivedBytesThreshold = 1; port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived); } catch (Exception ex) { //MessageBox.Show("Serial Port \"" + lastPortName + "\" Open Error: " + ex.Message); } } if (lastPortName == null || port == null || port.IsOpen == false) { MessageBox.Show("Please Select a COM Port!"); } Thread t = new Thread(new ThreadStart(SerPortCheckThread)); t.Start(); }