public void Setup() { pocoList.Clear(); protoList.Clear(); var formatter = new BinaryFormatter(); for (int i = 0; i < ArrSize; ++i) { int intData = random.Next(int.MaxValue); string strData = RandomString(ObjSize); var doubles = Enumerable.Range(0, ObjSize).Select(_ => random.NextDouble()).ToList(); var poco = new POCOClass { IntegerData = intData, StringData = strData, DoubleArr = doubles.ToList() }; var proto = new ProtoClass { IntegerData = intData, StringData = strData, DoubleArr = { doubles } }; using var stream = new MemoryStream(); formatter.Serialize(stream, poco); pocoList.Add(stream.ToArray()); protoList.Add(proto.ToByteArray()); } }
public List <ProtoClass> ProtocolBuffersD12on() { var result = new List <ProtoClass>(); foreach (var inst in protoList) { var proto = new ProtoClass(); proto.MergeFrom(inst); result.Add(proto); } return(result); }
public void LoadConfig(string path) { StreamReader sr = new StreamReader(path); var config = (JObject)JsonConvert.DeserializeObject(sr.ReadToEnd()); sr.Close(); JToken token; if (config.TryGetValue("AGVConfig", out token)) { ISerialize serialize = new ProtoClass(); foreach (JObject t in token.Values()) { try { IPort port = new TcpPort(t.Value <string>("port")); //var test = $"HuiJinYun.Domain.Entity.Device.{t.Value<string>("type")}AGV<TState, TPosition>"; Type type = Type.GetType($"HuiJinYun.Domain.Entity.Device.{t.Value<string>("type")}AGV`2"); type = type.MakeGenericType(typeof(eHuiJinYunAGVState), typeof(eHuiJinYunStagePosition)); object[] @params = new object[] { port, serialize }; @params = @params.Concat(buildParams(type, t.Value <JObject>("options"))).ToArray <object>(); var agv = (IAGV <eHuiJinYunAGVState, eHuiJinYunStagePosition>)Activator.CreateInstance(type, @params); AGVs.Add(agv); } catch { continue; } } } if (config.TryGetValue("DeviceConfig", out token)) { ISerialize serialize = new ProtoClass(); foreach (JObject t in token.Values()) { try { var port = PortFactory.NewPort(t.Value <string>("port")); Type type = Type.GetType($"HuiJinYun.Domain.Entity.Device.{t.Value<string>("type")}Device"); var device = (PlcDeviceBase)Activator.CreateInstance(type, port, serialize); Devices.Add(((JProperty)t.Parent).Name, device); } catch (Exception ex) { continue; } } } if (config.TryGetValue("StageConfig", out token)) { foreach (var t in token.Values()) { try { List <IDevice> deviceList = new List <IDevice>(); foreach (var d in t["Device"].Values <string>()) { deviceList.Add(Devices[d]); } Type type = Type.GetType($"HuiJinYun.Domain.Entity.{((JProperty)t.Parent).Name}Stage"); var stage = (IProductionStage)Activator.CreateInstance(type, deviceList.ToArray()); Stages.Add(stage); } catch (Exception ex) { continue; } } } object[] buildParams(Type type, JObject joParams) { if (null == joParams) { return(new object[0]); } else { object[] @params = new object[joParams.Count]; List <JProperty> jpParams = new List <JProperty>(joParams.Properties()); for (var i = 0; i < jpParams.Count; i++) { @params[i] = jpParams[i].Value.Value <string>(); } return(@params); } } }