跳到主要内容

连接与启停

生命周期:Connect → Start → [诊断 / 过程数据] → Stop / Dispose。数据用属性(非 GetXxx),状态返回枚举。

推荐

无参 DarraPnS.Connect() 是应用主入口。站点名、网卡由配置工具 / 服务决定,SDK 不选网卡。

工厂方法

成员类型类别读写说明
Connect()DarraPnS设备静态本机会话。不探测服务,Start 后读写诊断与过程数据
Connect(string host, int port = DefaultServicePort)DarraPnS设备静态指定本机服务。host 只应填 127.0.0.1。创建时探测服务可达性
Connect(string host, string apiKey, int port = DefaultServicePort)DarraPnS设备静态同上,并携带服务 API 密钥
Connect(string host, int port, string configXmlPath, string apiKey = null)DarraPnS设备静态同上,并挂本地运行配置副本(仅供变量联想)
LoadConfig(string xmlPath)DarraPnS设备静态只解析运行配置 XML / 建变量表。不要对返回实例调用 Start
DefaultServicePortint设备只读本机服务默认端口(固定,不可配置)
ServiceHttpTimeoutMsint设备只读探测超时(毫秒)
ServiceStartStopTimeoutMsint设备只读启停超时(毫秒)
ServiceIoTimeoutMsint设备只读诊断 / 过程数据查询超时(毫秒)
var device = DarraPnS.Connect();

Connect("127.0.0.1") 创建时会探测本机服务;不可达抛 PnSServiceExceptionServiceUnreachable)。host 不要填局域网地址。

服务端配置了 API 密钥时,用带 apiKey 的重载;未配置传 null 或空串。

启停

成员类型类别读写说明
Start()PnSErrorCode设备启动本会话;已启动则返回成功
Stop()void设备停止本会话。主站在连时不要拆应用关系。Stop 后本实例不可复用
Dispose()void设备等价 Stop + 释放(幂等)
IsServiceModebool设备只读是否服务会话(Connect 工厂)
IsRunningbool设备只读本会话是否已成功 Start。运行态以 Connected / State 为准
ServiceHoststring设备只读服务主机
ServicePortint设备只读服务端口
LastServiceErrorstring设备只读最近一次服务错误(成功调用清空)
var device = DarraPnS.Connect();
if (device.Start() != PnSErrorCode.Success)
{
Console.WriteLine("启动失败: " + device.LastServiceError);
return;
}

try
{
// 先看诊断,再按需读写过程数据
// 见 诊断 / 过程数据
}
finally
{
device.Stop();
}

Start 失败可能抛 PnSServiceException(带 PnSErrorCode + 原因)。详见 错误码

IsRunning == true 只说明本实例已 Start,不等于 IO 控制器已连。是否在换周期数据看 Connected

主站已在连时不要 Stop 拆应用关系。Stop 后必须重新 Connect,不要复用同一实例。

运行态

优先读这些属性判断现场。完整诊断字段见 诊断

成员类型类别读写说明
Connectedbool设备只读是否已与 IO 控制器建立周期数据交换
StatePnSState设备只读运行态枚举。服务不可达为 Unknown
ErrorCodePnSRuntimeErrorCode设备只读最近一次运行错误(枚举)。未识别值 Unknown
ErrorCodeRawint设备只读运行错误原值(0 = 无错误)。未识别值仍经本属性透传
ErrorMessagestring设备只读运行错误中文消息
StatusMessagestring设备只读状态详情。配置失败时带原因,正常态为空
EverConnectedbool设备只读是否曾与 IO 控制器建立过连接(待机 vs 掉线)
AlarmCountint设备只读活动报警总数
CriticalAlarmCountint设备只读Critical 报警数

Connected == true 才表示周期数据在换。

EverConnected 用于区分:从未连过(待机)还是连过又断(掉线)。掉线报警被确认后,这个判别信号仍保留。

其它

成员类型类别读写说明
EnumerateInterfaces()IReadOnlyList<string>设备静态枚举本机网卡名。仅诊断用,SDK 不选网卡
VersionDarraPnSVersionInfo设备静态SDK 版本。加载失败返回 null
NativeDllPathstring设备只读已加载的 native 库路径(诊断)
DarraPnSVersionInfo ver = DarraPnS.Version;
if (ver != null)
{
Console.WriteLine(ver.Major + "." + ver.Minor + "." + ver.Patch);
}

下一步:诊断