private void btnConnect_Click(object sender, EventArgs e) { if (listBoxDetectedSystems.SelectedIndex == -1 || listBoxDetectedSystems.SelectedIndex >= listBoxDetectedSystems.Items.Count) { return; } btnConnect.Enabled = false; _autoconnect = false; try { var system_info = listBoxDetectedSystems.Items[listBoxDetectedSystems.SelectedIndex]; if (system_info is EthSystemDiscoverer.SystemInfo) { EthSystemDiscoverer.SystemInfo eth_system_info = system_info as EthSystemDiscoverer.SystemInfo; EthSystemConnector conn = new EthSystemConnector(eth_system_info.IPAddress, eth_system_info.Port) { UserName = "******", Password = txtPassword.Text }; _connector = conn; } else if (system_info is SerSystemDiscoverer.SystemInfo) { SerSystemDiscoverer.SystemInfo ser_system_info = system_info as SerSystemDiscoverer.SystemInfo; SerSystemConnector conn = new SerSystemConnector(ser_system_info.PortName, ser_system_info.Baudrate); _connector = conn; } _logger.Enabled = cbLoggingEnabled.Checked; _connector.Logger = _logger; _system = new DataManSystem(_connector) { DefaultTimeout = 5000 }; // Subscribe to events that are signalled when the system is connected / disconnected. _system.SystemConnected += new SystemConnectedHandler(OnSystemConnected); _system.SystemDisconnected += new SystemDisconnectedHandler(OnSystemDisconnected); _system.SystemWentOnline += new SystemWentOnlineHandler(OnSystemWentOnline); _system.SystemWentOffline += new SystemWentOfflineHandler(OnSystemWentOffline); _system.KeepAliveResponseMissed += new KeepAliveResponseMissedHandler(OnKeepAliveResponseMissed); _system.BinaryDataTransferProgress += new BinaryDataTransferProgressHandler(OnBinaryDataTransferProgress); _system.OffProtocolByteReceived += new OffProtocolByteReceivedHandler(OffProtocolByteReceived); _system.AutomaticResponseArrived += new AutomaticResponseArrivedHandler(AutomaticResponseArrived); // Subscribe to events that are signalled when the device sends auto-responses. ResultTypes requested_result_types = ResultTypes.ReadXml | ResultTypes.Image | ResultTypes.ImageGraphics; _results = new ResultCollector(_system, requested_result_types); _results.ComplexResultCompleted += Results_ComplexResultCompleted; _results.SimpleResultDropped += Results_SimpleResultDropped; _system.SetKeepAliveOptions(cbEnableKeepAlive.Checked, 3000, 1000); _system.Connect(1000); try { _system.SetResultTypes(requested_result_types); } catch { } } catch (Exception ex) { CleanupConnection(); AddListItem("Failed to connect: " + ex.ToString()); } _autoconnect = true; RefreshGui(); }
private void selectScanner(string scanner) { if (serSystemConnector != null || dataManSystem != null) { if (dataManSystem == null) { serSystemConnector.Disconnect(); serSystemConnector.Dispose(); serSystemConnector = null; } else if (serSystemConnector == null) { dataManSystem.Disconnect(); dataManSystem.Dispose(); dataManSystem = null; } else { try { dataManSystem.ReadStringArrived -= DataManSystem_ReadStringArrived; } catch { } dataManSystem.Disconnect(); dataManSystem = null; serSystemConnector.Disconnect(); serSystemConnector = null; } } try { serSystemConnector = new SerSystemConnector(scanner); dataManSystem = new DataManSystem(serSystemConnector); } catch (Exception) { throw; } try { dataManSystem.ReadStringArrived -= DataManSystem_ReadStringArrived; } finally { dataManSystem.ReadStringArrived += DataManSystem_ReadStringArrived; } try { dataManSystem.SystemDisconnected -= DataManSystem_SystemDisconnected; } finally { dataManSystem.SystemDisconnected += DataManSystem_SystemDisconnected; if (serSystemConnector.IsKeepAliveSupported) { serSystemConnector.SetKeepAliveOptions(true, 1000, 2000); } } try { dataManSystem.SystemWentOffline -= DataManSystem_SystemWentOffline; } finally { dataManSystem.SystemWentOffline += DataManSystem_SystemWentOffline; } dataManSystem.Connect(); this.Invoke(SetFormTitle, $"扫码校验【{serSystemConnector.PortName},{serSystemConnector.Baudrate},{serSystemConnector.Parity},{serSystemConnector.DataBits},{serSystemConnector.StopBits}】"); }
private void btnConnect_Click(object sender, EventArgs e) { btnConnect.Enabled = false; try { if (listBoxDetectedSystems.SelectedIndex != -1 && listBoxDetectedSystems.Items.Count > listBoxDetectedSystems.SelectedIndex) { var system_info = listBoxDetectedSystems.Items[listBoxDetectedSystems.SelectedIndex]; if (system_info is EthSystemDiscoverer.SystemInfo) { EthSystemDiscoverer.SystemInfo eth_system_info = system_info as EthSystemDiscoverer.SystemInfo; EthSystemConnector conn = new EthSystemConnector(eth_system_info.IPAddress); conn.UserName = "******"; conn.Password = txtPassword.Text; _connector = conn; } else if (system_info is SerSystemDiscoverer.SystemInfo) { SerSystemDiscoverer.SystemInfo ser_system_info = system_info as SerSystemDiscoverer.SystemInfo; SerSystemConnector conn = new SerSystemConnector(ser_system_info.PortName, ser_system_info.Baudrate); _connector = conn; } } _connector.Logger = new GuiLogger(tbLog, cbLoggingEnabled.Checked, ref _closing); _system = new DataManSystem(_connector); _system.DefaultTimeout = 5000; // Subscribe to events that are signalled when the system is connected / disconnected. _system.SystemConnected += new SystemConnectedHandler(OnSystemConnected); _system.SystemDisconnected += new SystemDisconnectedHandler(OnSystemDisconnected); _system.SystemWentOnline += new SystemWentOnlineHandler(OnSystemWentOnline); _system.SystemWentOffline += new SystemWentOfflineHandler(OnSystemWentOffline); // Subscribe to events that are signalled when the deveice sends auto-responses. _system.ReadStringArrived += new ReadStringArrivedHandler(OnReadStringArrived); _system.XmlResultArrived += new XmlResultArrivedHandler(OnXmlResultArrived); _system.ImageArrived += new ImageArrivedHandler(OnImageArrived); _system.ImageGraphicsArrived += new ImageGraphicsArrivedHandler(OnImageGraphicsArrived); _system.BinaryDataTransferProgress += new BinaryDataTransferProgressHandler(OnBinaryDataTransferProgress); _system.SetKeepAliveOptions(cbEnableKeepAlive.Checked, 3000, 1000); _system.Connect(); } catch (Exception ex) { CleanupConnection(); AddListItem("Failed to connect: " + ex.ToString()); btnConnect.Enabled = true; } _autoconnect = true; }
private void CreateSystem(object system_info) { bool searchOk = false; ISystemConnector connector = null; string systemName = ""; if (system_info is EthSystemDiscoverer.SystemInfo) { EthSystemDiscoverer.SystemInfo eth_system_info = system_info as EthSystemDiscoverer.SystemInfo; if (_systemList.ContainsKey(eth_system_info.Name)) { EthSystemConnector conn = new EthSystemConnector(eth_system_info.IPAddress); conn.UserName = "******"; conn.Password = ""; connector = conn; searchOk = true; systemName = eth_system_info.Name; } } else if (system_info is SerSystemDiscoverer.SystemInfo) { SerSystemDiscoverer.SystemInfo ser_system_info = system_info as SerSystemDiscoverer.SystemInfo; if (_systemList.ContainsKey(ser_system_info.Name)) { SerSystemConnector conn = new SerSystemConnector(ser_system_info.PortName, ser_system_info.Baudrate); connector = conn; searchOk = true; systemName = ser_system_info.Name; } } if (searchOk == false) return; var system = new DataManSystem(connector); system.SystemConnected += new SystemConnectedHandler(OnSystemConnected); system.SystemDisconnected += new SystemDisconnectedHandler(OnSystemDisconnected); system.SystemWentOnline += new SystemWentOnlineHandler(OnSystemWentOnline); system.SystemWentOffline += new SystemWentOfflineHandler(OnSystemWentOffline); // Subscribe to events that are signalled when the deveice sends auto-responses. system.XmlResultArrived += new XmlResultArrivedHandler( delegate(object sender, XmlResultArrivedEventArgs args) { XmlDocument doc = new XmlDocument(); string read_string = ""; doc.LoadXml(args.XmlResult); foreach (XmlNode node2 in doc.DocumentElement.ChildNodes) { if (node2.Name.Equals("general")) { foreach (XmlNode node in node2.ChildNodes) { if (node.Name.Equals("full_string")) { read_string = node.InnerText; foreach (XmlAttribute att in node.Attributes) { if (att.Name.Equals("encoding") && att.InnerText.Equals("base64") && !String.IsNullOrEmpty(node.InnerText)) { byte[] code = Convert.FromBase64String(node.InnerText); read_string = System.Text.Encoding.Default.GetString(code, 0, code.Length); } } break; } } if (_readMethodList.ContainsKey(systemName)) { if (_readMethodList[systemName] != null) _readMethodList[systemName](read_string); } } } }); system.ImageArrived += delegate(object sender, ImageArrivedEventArgs args) { try { if (_arrivedImageMethodList.ContainsKey(systemName)) { if (_arrivedImageMethodList[systemName] != null) _arrivedImageMethodList[systemName](args.Image); } } catch (Exception imageArriveException) { System.Diagnostics.Trace.WriteLine(imageArriveException.Message); } }; system.Connect(); _systemList[systemName] = system; _discoveredCount++; if (_systemList.Count <= _discoveredCount) { _allDone.Set(); } }