Exemple #1
0
        public void AddPointToWatchTest()
        {
            SunRizModbusTcpDriver.ModbusDriverServer server = new ModbusDriverServer(588);
            server.Start();
__doagain:
            bool hasError = false;

            SunRizDriver.SunRizDriverClient client = new SunRizDriver.SunRizDriverClient("127.0.0.1", 588);
            var points = new string[] {
                "1/3", "3/1", "1/0", "1/2", "3/2", "1/4", "1/1",
                "3/0", "3/3"
            };

            client.AddPointToWatch("127.0.0.1/502", points, (point, value) => {
                Debug.WriteLine($"point:{point} value:{value}");
            }, (err) => {
                hasError = true;
                Debug.WriteLine($"AddPointToWatchTest Error :{err}");
            });

            Thread.Sleep(5000);
            if (hasError)
            {
                goto __doagain;
            }
            server.Stop();
            Thread.Sleep(3000);
        }
Exemple #2
0
        public void AddPointToWatchTest()
        {
            SunRizOpcDriver.OpcDriverServer server = new OpcDriverServer(588);
            server.Start();
__doagain:
            bool hasError = false;

            SunRizDriver.SunRizDriverClient client = new SunRizDriver.SunRizDriverClient("127.0.0.1", 588);
            var points = new string[] {
                "Random.ArrayOfReal8", "Random.Real4", "Random.String"
            };

            client.AddPointToWatch("127.0.0.1|Matrikon.OPC.Simulation.1", points, (point, value) => {
                Debug.WriteLine($"point:{point} value:{value}");
            }, (err) => {
                hasError = true;
                Debug.WriteLine($"AddPointToWatchTest Error :{err}");
            });

            Thread.Sleep(50000);
            if (hasError)
            {
                goto __doagain;
            }
            server.Stop();
            Thread.Sleep(3000);
        }
        private async void btnOk_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                this.Cursor = Cursors.Wait;
                SunRizDriver.SunRizDriverClient client = new SunRizDriver.SunRizDriverClient(Data.Address, Data.Port.Value);
                await Task.Run(() =>
                {
                    if (client.CheckDriver() == false)
                    {
                        throw new Exception("无法连接此网关");
                    }
                    var serverInfo = client.GetServerInfo();
                    this.Data.Name = serverInfo.Name;
                    this.Data.SupportEnumDevice = serverInfo.SupportEnumDevice;
                    this.Data.SupportEnumPoints = serverInfo.SupportEnumPoints;
                    this.Data.Status            = CommunicationDriver_StatusEnum.Online;
                    this.Data.id = Helper.Remote.InvokeSync <int>("UpdateGateway", this.Data);

                    //清空对象属性的变化记录
                    this.Data.ChangedProperties.Clear();
                });

                this.DialogResult = true;
            }
            catch (Exception ex)
            {
                MessageBox.Show(this, ex.Message);
            }
            finally
            {
                this.Cursor = null;
            }
        }
Exemple #4
0
        public void GetServerInfoTest()
        {
            SunRizModbusTcpDriver.ModbusDriverServer server = new ModbusDriverServer(588);
            server.Start();

            SunRizDriver.SunRizDriverClient client = new SunRizDriver.SunRizDriverClient("127.0.0.1", 588);
            var info = client.GetServerInfo();

            server.Stop();
        }
Exemple #5
0
        public void GetPointPropertiesTest()
        {
            SunRizModbusTcpDriver.ModbusDriverServer server = new ModbusDriverServer(588);
            server.Start();

            SunRizDriver.SunRizDriverClient client = new SunRizDriver.SunRizDriverClient("127.0.0.1", 588);

            var result = client.GetPointProperties();

            server.Stop();
        }
Exemple #6
0
        public void CheckDeviceExistTest()
        {
            SunRizModbusTcpDriver.ModbusDriverServer server = new ModbusDriverServer(588);
            server.Start();

            SunRizDriver.SunRizDriverClient client = new SunRizDriver.SunRizDriverClient("127.0.0.1", 588);

            var result = client.CheckDeviceExist("127.0.0.1/502");

            server.Stop();
        }
Exemple #7
0
        public void EnumDeviceTest()
        {
            var server = new SunRizOpcDriver.OpcDriverServer(588);

            server.Start();

            SunRizDriver.SunRizDriverClient client = new SunRizDriver.SunRizDriverClient("127.0.0.1", 588);
            var info = client.EnumDevice(null);

            server.Stop();
        }
Exemple #8
0
        public void CheckDeviceExistTest()
        {
            SunRizOpcDriver.OpcDriverServer server = new OpcDriverServer(588);
            server.Start();

            SunRizDriver.SunRizDriverClient client = new SunRizDriver.SunRizDriverClient("127.0.0.1", 588);

            var result = client.CheckDeviceExist("127.0.0.1|Matrikon.OPC.Simulation.1");

            server.Stop();
        }
Exemple #9
0
        public void ReadValueTest()
        {
            SunRizOpcDriver.OpcDriverServer server = new OpcDriverServer(588);
            server.Start();

            SunRizDriver.SunRizDriverClient client = new SunRizDriver.SunRizDriverClient("127.0.0.1", 588);
            var points = new string[] {
                "Bucket Brigade.ArrayOfReal8", "Bucket Brigade.Real8"
            };
            var values = client.ReadValue("127.0.0.1|Matrikon.OPC.Simulation.1", points);

            server.Stop();
        }
Exemple #10
0
        public void WriteValueTest()
        {
            SunRizModbusTcpDriver.ModbusDriverServer server = new ModbusDriverServer(1588);
            server.Start();

            SunRizDriver.SunRizDriverClient client = new SunRizDriver.SunRizDriverClient("127.0.0.1", 1588);
            var points = new string[] {
                "3/5"
            };
            var values = new object[] { 4.896 };
            var result = client.WriteValue("127.0.0.1/502", points, values);

            server.Stop();
        }
Exemple #11
0
        public void ReadValueTest()
        {
            SunRizModbusTcpDriver.ModbusDriverServer server = new ModbusDriverServer(588);
            server.Start();

            SunRizDriver.SunRizDriverClient client = new SunRizDriver.SunRizDriverClient("127.0.0.1", 588);
            var points = new string[] {
                "1/3", "3/1", "1/0", "1/2", "3/2", "1/4", "1/1",
                "3/0", "3/3"
            };
            var values = client.ReadValue("127.0.0.1/502", points);

            server.Stop();
        }
Exemple #12
0
        public void WriteValueTest()
        {
            SunRizOpcDriver.OpcDriverServer server = new OpcDriverServer(588);
            server.Start();

            SunRizDriver.SunRizDriverClient client = new SunRizDriver.SunRizDriverClient("127.0.0.1", 588);
            var points = new string[] {
                "Bucket Brigade.Real8", "Bucket Brigade.ArrayOfReal8", "Bucket Brigade.ArrayOfString"
            };
            var values = new object[] { 388.273, new float[] { 1.1f, 3f }, new string[] { "a1", "b2" } };
            var result = client.WriteValue("127.0.0.1|Matrikon.OPC.Simulation.1", points, values);

            server.Stop();
        }
Exemple #13
0
        public void GetPointAddressTest()
        {
            SunRizModbusTcpDriver.ModbusDriverServer server = new ModbusDriverServer(588);
            server.Start();

            SunRizDriver.SunRizDriverClient client = new SunRizDriver.SunRizDriverClient("127.0.0.1", 588);

            var result = client.GetPointAddress(new System.Collections.Generic.Dictionary <string, string>()
            {
                { "Modbus功能码", "1" },
                { "Modbus点地址", "12" }
            });

            server.Stop();
        }
Exemple #14
0
        public void EnumDevicePointTest()
        {
            var server = new SunRizOpcDriver.OpcDriverServer(588);

            server.Start();

            SunRizDriver.SunRizDriverClient client = new SunRizDriver.SunRizDriverClient("127.0.0.1", 588);
            List <string> parentPath = new List <string>();

            parentPath.Add("Simulation Items");
            parentPath.Add("Random");

            client.EnumDevicePoint("127.0.0.1|Matrikon.OPC.Simulation.1", parentPath, (point) => {
                Debug.WriteLine($"path:{point.Path} name:{point.Name} isfolder:{point.IsFolder}");
            });

            server.Stop();
        }
        /// <summary>
        /// 设置数据连接相关的属性输入框
        /// </summary>
        void setPointPropertyInput()
        {
            //获取通讯网关
            _container.Cursor = Cursors.Hand;
            Helper.Remote.Invoke <CommunicationDriver>("GetDriver", (gateway, err) => {
                _container.Cursor = null;
                if (err != null)
                {
                    MessageBox.Show(MainWindow.Instance, err);
                }
                else
                {
                    gatewayClient       = new SunRizDriver.SunRizDriverClient(gateway.Address, gateway.Port.GetValueOrDefault());
                    var serverInfo      = gatewayClient.GetServerInfo();
                    string[] properties = gatewayClient.GetPointProperties();
                    bool isNew          = false;
                    if (_PointJsonDict == null)
                    {
                        _PointJsonDict = new Dictionary <string, string>();
                        isNew          = true;
                    }
                    for (int i = 0; i < properties.Length; i++)
                    {
                        var item           = properties[i];
                        string strProperty = item;
                        if (strProperty.Contains("{"))
                        {
                            strProperty = strProperty.Substring(0, strProperty.IndexOf("{"));
                        }

                        if (isNew)
                        {
                            _PointJsonDict[strProperty] = "";
                        }
                        addPropertyItem(strProperty, i == 0 && serverInfo.SupportEnumPoints);
                    }
                }
            }, Device.DriverID);
        }
Exemple #16
0
        private void _cmbGateway_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var gateway = _cmbGateway.SelectedItem as SunRizServer.CommunicationDriver;

            //获取设备属性
            try
            {
                _curClient = new SunRizDriver.SunRizDriverClient(gateway.Address, gateway.Port.GetValueOrDefault());

                //获取属性列表
                var propertyNames = _curClient.GetDeviceProperties();
                _panelProperties.Children.Clear();
                _propertyItems = new List <PropertyItem>();
                Newtonsoft.Json.Linq.JToken curJsonObj = null;
                if (this.Device.AddrSetting != null)
                {
                    //转换Device对象的json属性JToken
                    curJsonObj = (Newtonsoft.Json.Linq.JToken)Newtonsoft.Json.JsonConvert.DeserializeObject(this.Device.AddrSetting);
                }

                foreach (var proName in propertyNames)
                {
                    string curProName = proName;
                    Newtonsoft.Json.Linq.JToken jsonObj = null;
                    bool   isEnumDevice         = false;
                    string enum_addressProperty = null;
                    if (curProName.Contains("{"))
                    {
                        //判断是否包含json属性
                        int    index = proName.IndexOf("{");
                        string json  = curProName.Substring(index);
                        curProName           = curProName.Substring(0, index);
                        jsonObj              = (Newtonsoft.Json.Linq.JToken)Newtonsoft.Json.JsonConvert.DeserializeObject(json);
                        isEnumDevice         = jsonObj.Value <bool>("isEnumDevice");
                        enum_addressProperty = jsonObj.Value <string>("addressProperty");
                    }

                    //生成属性输入框
                    Func <string> func;
                    var           txt = new TextBlock();
                    txt.Text   = $"{curProName}:";
                    txt.Margin = new Thickness(5, 5, 5, 0);
                    _panelProperties.Children.Add(txt);

                    if (isEnumDevice && enum_addressProperty != null)
                    {
                        //此属性可以下拉选择
                        var valueBox = new ComboBox();
                        valueBox.IsEditable = true;
                        valueBox.Height     = 22;
                        valueBox.Margin     = new Thickness(5, 5, 5, 0);
                        valueBox.GotFocus  += (s, e2) => {
                            if (valueBox.Items.Count == 0)
                            {
                                try
                                {
                                    var addressItem = _propertyItems.FirstOrDefault(m => m.Name == enum_addressProperty);
                                    var value       = addressItem.GetValueFunc();
                                    if (!string.IsNullOrEmpty(value))
                                    {
                                        valueBox.ItemsSource = _curClient.EnumDevice(value);
                                    }
                                }
                                catch
                                {
                                }
                            }
                        };
                        func = () =>
                        {
                            return(valueBox.Text.Trim());
                        };
                        if (curJsonObj != null)
                        {
                            valueBox.Text = curJsonObj.Value <string>(curProName);
                        }
                        _panelProperties.Children.Add(valueBox);
                    }
                    else
                    {
                        var valueBox = new TextBox();
                        valueBox.Height = 22;
                        valueBox.Margin = new Thickness(5, 5, 5, 0);
                        func            = () =>
                        {
                            return(valueBox.Text.Trim());
                        };
                        if (jsonObj != null)
                        {
                            //赋默认值
                            try
                            {
                                valueBox.Text = jsonObj.Value <string>("defaultValue");
                            }
                            catch
                            {
                            }
                        }
                        if (curJsonObj != null)
                        {
                            valueBox.Text = curJsonObj.Value <string>(curProName);
                        }
                        _panelProperties.Children.Add(valueBox);
                    }

                    _propertyItems.Add(new PropertyItem()
                    {
                        Name         = curProName,
                        GetValueFunc = func
                    });
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(MainWindow.Instance, ex.Message);
            }
        }