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); }
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; } }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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); }
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); } }