예제 #1
0
        public static SerialPortHelper GetInstance()
        {
            if (instance == null)
            {
                instance = new SerialPortHelper();
            }

            return(instance);
        }
예제 #2
0
        private void Resh_Config()
        {
            MqttClientHelper.Config();
            MqttServerHelper.Config();
            TcpClientHelper.Config();
            TcpServerHelper.Config();
            UDPClientHelper.Config();
            UDPServerHelper.Config();

            SerialPortHelper.Config();
            PLCHelper.Config(config.AppSettings.Settings);
            OPCDAHelper.Config();
            OPCUAHelper.Config(config.AppSettings.Settings);
            AccessHelper.Config(config.AppSettings.Settings);
            SqlServerHelper.Config(config.AppSettings.Settings);
        }
예제 #3
0
        private static void Read(IAsyncResult ar)
        {
            try
            {
                var offset  = 0;
                var rxbytes = stream.EndRead(ar);

                if (rxbytes > 0)
                {
                    stream.BeginRead(tcpdata, 0, tcpdata.Length, Read, null);

                    LogHelper.Log("TcpClient Recv: [" + LogHelper.Logdata(tcpdata, offset, rxbytes - offset) + "]");

                    TcpServerHelper.Write(tcpdata, offset, rxbytes - offset);

                    SerialPortHelper.Write(tcpdata, offset, rxbytes - offset);
                }

                if (rxbytes == 0)
                {
                    LogHelper.Log("TcpClient Client closed");
                    OnConnectClosed();
                }
            }
            catch (Exception e)
            {
                if (e is ObjectDisposedException)
                {
                    LogHelper.Log("TcpClient Connection closed");
                }
                else if (e is IOException && e.Message.Contains("closed"))
                {
                    LogHelper.Log("TcpClient Connection closed");
                }
                else
                {
                    LogHelper.Log("TcpClient Exception: " + e.Message);
                }

                OnConnectClosed();
            }
        }
예제 #4
0
        /// <summary>
        /// 接收到消息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private static void MqttClient_ApplicationMessageReceived(object sender, MqttApplicationMessageReceivedEventArgs e)
        {
            Dictionary <string, object> json = Get_payload(e.ApplicationMessage.Payload);
            string topic = e.ApplicationMessage.Topic;
            string data  = Encoding.UTF8.GetString(e.ApplicationMessage.Payload);

            LogHelper.Log("mqtt recv:topic: " + e.ApplicationMessage.Topic.ToString() + " payload: " + data);

            Regex r_subtopic = new Regex(subtopic);                          // 定义一个Regex对象实例
            Match m_subtopic = r_subtopic.Match(e.ApplicationMessage.Topic); // 在字符串中匹配

            if (m_subtopic.Success)
            {
                SerialPortHelper.Write(e.ApplicationMessage.Payload, 0, e.ApplicationMessage.Payload.Length);
            }
            if (topic.IndexOf("$dg/device/" + username + "/" + dtuAddr) == 0)
            {
                if (json.ContainsKey("cmd"))
                {
                    if (json["cmd"].ToString() == "opc_items")
                    {
                        OPCDAHelper.Readitems(json);
                    }
                    else if (json["cmd"].ToString() == "opc_report")
                    {
                        OPCDAHelper.Publishvalues(json);
                    }
                    else if (json["cmd"].ToString() == "printer")
                    {
                        PrinterHelper.PrintPage(json["data"].ToString());
                    }
                }
            }

            AccessHelper.Do_mdb(topic, json, clientid);

            MqttServerHelper.Write(e.ApplicationMessage);
        }
예제 #5
0
        private void SetComboBox()
        {
            var arrPorts = SerialPortHelper.GetPorts();

            comboBoxSerialPort.Items.Clear();
            foreach (var port in arrPorts)
            {
                comboBoxSerialPort.Items.Add(port);
            }

            if (arrPorts.Length > 0)
            {
                comboBoxSerialPort.SelectedIndex = 0;
            }

            comboBoxBaudRate.SelectedIndex  = 7;
            comboBoxDataBits.SelectedIndex  = 0;
            comboBoxStopBits.SelectedIndex  = 0;
            comboBoxParity.SelectedIndex    = 0;
            comboBoxCmdProdxy.SelectedIndex = 0;

            comboBoxBridge.Items.Clear();

            foreach (var bridge in bridges)
            {
                comboBoxBridge.Items.Add(bridge);
            }

            if (bridges.Length > 0)
            {
                comboBoxBridge.SelectedIndex = 0;
            }

            comboBoxDtuAddr.Items.Clear();
            List <string> macAddrs = DgiotHelper.GetMacByWmi();

            foreach (var mac in macAddrs)
            {
                devaddr = Regex.Replace(mac, @":", "");
                comboBoxDtuAddr.Items.Add(devaddr);
                textBoxTcpClientLogin.Text = devaddr;
                textBoxUDPClientLogin.Text = devaddr;
            }

            comboBoxDtuAddr.SelectedIndex = 0;

            List <string> loglevels = LogHelper.Levels();

            foreach (var level in loglevels)
            {
                comboBoxLogLevel.Items.Add(level);
            }

            if (loglevels.Count > 0)
            {
                comboBoxLogLevel.SelectedIndex = (int)LogHelper.Level.DEBUG;
            }

            comboBoxLan.Items.Add("简体中文");
            comboBoxLan.Items.Add("English");
            comboBoxLan.SelectedIndex = 0;
        }
예제 #6
0
 private void ButtonScan_Click(object sender, EventArgs e)
 {
     OPCDAHelper.Start();
     BACnetHelper.Start();
     SerialPortHelper.Start();
 }