跳到主要内容

C# 特有语法糖

本页只介绍 DarraPnS C# SDK 独有的便捷写法。它们 不是新功能,只是把已有入口包装成更顺手的 C# 写法(元组解构、ProcessData.In[i].AsInt16 这类索引)。

可选,不用不影响标准入口 —— Connected / State / ErrorCodeReadInt16 / WriteInt16ProcessData.Read / ProcessData.Write 照常用。语法糖只是另一种写法。

命名空间 —— Darra.PnSusing Darra.PnS; 即可,不必另引扩展包。


一、元组解构 (Deconstruct)

C# 7 起的元组解构。DarraPnS 两个重载,一行拆开连接态、运行状态、错误码。

取连接 + 状态

写法调用
标准 APIbool c = device.Connected; PnSState s = device.State;
语法糖var (connected, state) = device;
var (connected, state) = device;
if (!connected)
Console.WriteLine(state);

取连接 + 状态 + 错误码

var (connected, state, error) = device;
if (error != PnSRuntimeErrorCode.Ok)
Console.WriteLine(device.ErrorMessage);

何时用

  • 日志 / 诊断循环:少写几遍 device.Connecteddevice.State
  • switch / pattern matchingis var (c, s, _) 一行拆开。

二、过程数据索引自动转换

ProcessData.In[i] / ProcessData.Out[i] 从当前偏移按类型读写。读 I 用 In,写 Q 用 Out。完整属性表见 过程数据 · 自动转换

写法调用
标准 APIdevice.ReadInt16("IW2", out short v);
语法糖short v = device.ProcessData.In[2].AsInt16;
标准 APIdevice.WriteInt16("QW2", 123);
语法糖device.ProcessData.Out[2].AsInt16 = 123;
byte i0 = device.ProcessData.In[0].Content;
short iw = device.ProcessData.In[2].AsInt16;
float f = device.ProcessData.In[8].AsFloat;

device.ProcessData.Out[0].Content = 0x11;
device.ProcessData.Out[2].AsInt16 = 123;
device.ProcessData.Out[8].AsFloat = 1.5f;

In[i].Content / In[i].AsInt16 等抛 InvalidOperationException(I 只读)。

何时用

  • 就几个字段:不想为几个字去建结构体。
  • 字段多:还是 ProcessData.Read / ProcessData.Write

能力清单

分组内容
运行态解构DarraPnS.Deconstruct 两个重载:(connected, state) / (connected, state, error)errorPnSRuntimeErrorCode
过程数据自动转换Content / AsInt8 / AsUInt8 / AsInt16 / AsUInt16 / AsInt32 / AsUInt32 / AsInt64 / AsUInt64 / AsFloat / AsDouble / AsBool / GetBit / SetBit / AsValue / WriteValue