public XP11Link(Logger logger) { this.logger = logger; this.factory = new DatarefFactory(logger); pipe = new NamedPipeClientStream(".", "{2145AB63-BF83-40A4-8A9D-A358D45AF1C1}", PipeDirection.InOut); logger.Debug("Logger given to XP11Link"); }
private static void SetDataRef(dynamic vaProxy) { string datarefName = vaProxy.GetText("~datarefName"); int datarefType = vaProxy.GetInt("~datarefType") ?? throw new ArgumentException("Missing parameter ~datareftype"); object datarefValue; switch ((DataRef.Type)datarefType) { case DataRef.Type.Int: datarefValue = (int?)vaProxy.GetInt("~~datarefValue") ?? throw new ArgumentException("No int value assigned to datarefValue"); break; case DataRef.Type.Float: datarefValue = (decimal?)vaProxy.GetDecimal("~~datarefValue") ?? throw new ArgumentException("No decimal value assigned to datarefValue"); break; case DataRef.Type.Double: datarefValue = (decimal?)vaProxy.GetDecimal("~~datarefValue") ?? throw new ArgumentException("No decimal value assigned to datarefValue"); break; case DataRef.Type.FloatArray: throw new ArgumentException("Array datarefs are not yet supported"); case DataRef.Type.IntArray: throw new ArgumentException("Array datarefs are not yet supported"); case DataRef.Type.Data: datarefValue = (string)vaProxy.GetText("~~datarefValue"); break; case DataRef.Type.Unknown: default: throw new ArgumentException("Unsupported data type: " + datarefType); } DataRef dr = new DatarefFactory(logger).FromObject(datarefName, datarefType, datarefValue); if (dr != null) { logger.Debug("Will set dataref: " + dr.ToString()); if (link.SetDataref(dr)) { logger.Info("Successfully set dataref: " + dr.ToString()); } else { logger.Warn("Failed to set dataref: " + dr.ToString()); } } else { logger.Error("Failed to convert input into dataref"); logger.Debug("datarefName: " + datarefName); logger.Debug("datarefType: " + datarefType); logger.Debug("datarefValue: " + datarefValue); } }