枚举参考
C / C++ / C# / Java / Python / Rust 六种语言 SDK 共用的枚举权威表。语义以本页为准(各语言的成员拼写与本地取值,各节「各语言成员名」里逐条列出),各语言页面只写自己的类型名与用法。
跨语言口径:语义一致,数值不要求一致。取值以 C# / Python 为准;某语言另有本地编号的,在本节末尾单独说明。
枚举表
| 枚举 | 用途 | 权威取值 |
|---|---|---|
| 运行态 | 设备与 IO 控制器的连接 / 数据交换状态 | 0..8 + 0x7FFFFFFF |
| 运行错误码 | 服务端运行错误(状态查询透出) | 0 / 负值 / -10000 |
| 调用返回码 | SDK 调用返回值(启停 / 读写过程数据 / 诊断) | 0 / 负值 |
| 事件等级 | 事件与日志等级 | 0 / 1 / 2 |
| 服务区 | 过程数据寻址区域(I 区 / Q 区) | 0..4 |
运行态
IO 设备对 IO 控制器的连接与数据交换状态;只有 DataExchange 表示周期数据正在交换。
| 名称 | 值 | 含义 |
|---|---|---|
None | 0 | 未初始化 / 栈未启动 |
Idle | 1 | 已启动,等待 IO 控制器(无 AR) |
Connecting | 2 | 控制器已发起连接(STARTUP) |
Parameterized | 3 | 参数化完成(PRMEND),等待应用就绪 |
ApplicationReady | 4 | 应用就绪(APPLRDY),参数交换完成 |
DataExchange | 5 | 周期数据交换正常(DATA) |
Aborted | 6 | 连接已断开(ABORT) |
Resetting | 7 | 复位中(Reset 请求) |
ConfigError | 8 | 配置错误降级态:控制面可用、数据面未启动,原因见等待原因 / 状态文案 |
Unknown | 0x7FFFFFFF | 未知 / 读不到真实状态。不要当成 None |
各语言类型名:
| 语言 | 类型名 |
|---|---|
| C | pns_device_state_t |
| C++ | PnSState |
| C# | PnSState |
| Java | PnSState |
| Python | PnSState |
| Rust | ServiceState |
各语言成员名(照自己语言的这一行抄;括号内是该语言自身的值,源码未显式写数值的从略):
| 语言 | 成员名 |
|---|---|
| C | PNS_DEV_STATE_UNKNOWN(0) / PNS_DEV_STATE_STOPPED(1) / PNS_DEV_STATE_IDLE(2) / PNS_DEV_STATE_CONNECTING(3) / PNS_DEV_STATE_DATA(4) / PNS_DEV_STATE_ABORTED(5) / PNS_DEV_STATE_APP_READY(6) / PNS_DEV_STATE_CONFIG_ERROR(7) |
| C++ | Disconnected(0) / Connecting(1) / Connected(2) / Running(3) / Idle(4) / ConfigError(5) / Unknown(6) |
| C# | None(0) / Idle(1) / Connecting(2) / Parameterized(3) / ApplicationReady(4) / DataExchange(5) / Aborted(6) / Resetting(7) / ConfigError(8) / Unknown(0x7FFFFFFF) |
| Java | UNKNOWN(0) / STOPPED(1) / STARTING(2) / RUNNING(3) / STOPPING(4) / ERROR(5) / CONFIG_ERROR(6) |
| Python | NONE(0) / IDLE(1) / CONNECTING(2) / PARAMETERIZED(3) / APPLICATION_READY(4) / DATA_EXCHANGE(5) / ABORTED(6) / RESETTING(7) / CONFIG_ERROR(8) / UNKNOWN(0x7FFFFFFF) |
| Rust | Stopped / Initialized / Connecting / Parameterized / Ready / DataExchange / Aborted / ConfigError / Unknown(按服务端状态字符串映射,没有稳定整数值) |
注:
- 上表「名称」一列是 C# 的拼写;Python 是同一套名字的全大写形式,C 带
PNS_DEV_STATE_前缀,Java / C++ / Rust 另有一套成员名 —— 都照「各语言成员名」抄用。 - 跨语言只对应语义,不要按数值判等:Java(
0..6)、C / C++(0起)都是本地编号,且 C / C++ 没有Parameterized/Resetting;Rust 没有稳定整数值,也不单列Resetting。
运行错误码
服务端运行态错误码(状态查询透出的 errorCode 字段枚举化)。与调用返回码语义不同,不可混用。
| 名称 | 值 | 含义 |
|---|---|---|
Ok | 0 | 无错误 |
ErrInit | -1 | 栈初始化失败 |
ErrCfg | -2 | 配置无效 |
ErrThread | -3 | 周期线程创建 / 优先级设置失败 |
ErrRunning | -4 | 状态非法(重复启动 / 停止) |
ErrPdi | -5 | 过程数据交换失败 |
ErrDap | -6 | 槽 0 插入失败 |
ErrNull | -8 | 设备未启动(空会话 / 未 Start 或已 Stop) |
ErrDiag | -9 | 诊断参数非法 |
Unknown | -10000 | 未识别值;原值经错误原值属性 / 函数如实透传 |
-7未定义,不要占位使用。未识别值一律落Unknown,原值不丢。
各语言类型名:
| 语言 | 类型名 |
|---|---|
| C | pns_runtime_error_code_t |
| C++ | PnSRuntimeErrorCode |
| C# | PnSRuntimeErrorCode |
| Java | PnSRuntimeErrorCode |
| Python | PnSRuntimeErrorCode |
| Rust | PnSRuntimeErrorCode |
各语言成员名(照自己语言的这一行抄;括号内是该语言自身的值,源码未显式写数值的从略):
| 语言 | 成员名 |
|---|---|
| C | PNS_RUNTIME_ERR_OK(0) / PNS_RUNTIME_ERR_INIT(-1) / PNS_RUNTIME_ERR_CFG(-2) / PNS_RUNTIME_ERR_THREAD(-3) / PNS_RUNTIME_ERR_RUNNING(-4) / PNS_RUNTIME_ERR_PDI(-5) / PNS_RUNTIME_ERR_DAP(-6) / PNS_RUNTIME_ERR_NULL(-8) / PNS_RUNTIME_ERR_DIAG(-9) / PNS_RUNTIME_ERR_UNKNOWN(-10000) |
| C++ | Ok(0) / ErrInit(-1) / ErrCfg(-2) / ErrThread(-3) / ErrRunning(-4) / ErrPdi(-5) / ErrDap(-6) / ErrNull(-8) / ErrDiag(-9) / Unknown(-10000) |
| C# | Ok(0) / ErrInit(-1) / ErrCfg(-2) / ErrThread(-3) / ErrRunning(-4) / ErrPdi(-5) / ErrDap(-6) / ErrNull(-8) / ErrDiag(-9) / Unknown(-10000) |
| Java | OK(0) / ERR_INIT(-1) / ERR_CFG(-2) / ERR_THREAD(-3) / ERR_RUNNING(-4) / ERR_PDI(-5) / ERR_DAP(-6) / ERR_NULL(-8) / ERR_DIAG(-9) / UNKNOWN(-10000) |
| Python | OK(0) / ERR_INIT(-1) / ERR_CFG(-2) / ERR_THREAD(-3) / ERR_RUNNING(-4) / ERR_PDI(-5) / ERR_DAP(-6) / ERR_NULL(-8) / ERR_DIAG(-9) / UNKNOWN(-10000) |
| Rust | Ok(0) / ErrInit(-1) / ErrCfg(-2) / ErrThread(-3) / ErrRunning(-4) / ErrPdi(-5) / ErrDap(-6) / ErrNull(-8) / ErrDiag(-9) / Unknown(-10000) |
调用返回码
SDK 调用(启停、读写过程数据、诊断)的返回值。负值制:0 = 成功,负值 = 失败。
| 名称 | 值 | 含义 |
|---|---|---|
Success | 0 | 成功 |
InvalidArgument | -1 | 地址非法 / 空缓冲 / 参数越界 |
InvalidHandle | -2 | 未 Start 或已 Stop |
NotConnected | -3 | 无应用关系 / 未进入数据交换 |
NativeError | -4 | 栈 / 对端错误 |
LengthMismatch | -5 | 长度越界 |
NotFound | -6 | 地址 / 条目不存在 |
Busy | -7 | 忙:上一次操作未完成(如报警还在等 ACK);另一个实时会话正占着唯一连接门时也是这个码 |
NotSupported | -8 | 写入只读输入地址等不支持的操作 |
NativeDllNotFound | -100 | native 库未加载 |
PlatformNotSupported | -101 | 仅 Windows x64 |
ServiceUnreachable | -102 | 会话不可达 / 超时 |
各语言类型名:
| 语言 | 类型名 |
|---|---|
| C | pns_result_t |
| C++ | PnSErrorCode |
| C# | PnSErrorCode |
| Java | PnSErr |
| Python | PnSErr |
| Rust | PnSErrorCode |
各语言成员名(照自己语言的这一行抄;括号内是该语言自身的值,源码未显式写数值的从略):
| 语言 | 成员名 |
|---|---|
| C | PNS_OK(0) / PNS_ERR_INVALID_PARAM(-1) / PNS_ERR_NO_STACK(-2) / PNS_ERR_NO_CONNECTION(-3) / PNS_ERR_TIMEOUT(-4) / PNS_ERR_NOT_SUPPORTED(-5) / PNS_ERR_BUSY(-6) / PNS_ERR_NATIVE(-7) / PNS_ERR_DLL_LOAD(-8) / PNS_ERR_ENTRY_MISSING(-9) / PNS_ERR_CONFIG(-10) / PNS_ERR_MEMORY(-11) / PNS_ERR_NOT_FOUND(-12) |
| C++ | Success(0) / InvalidArgument(-1) / InvalidHandle(-2) / NotConnected(-3) / NativeError(-4) / LengthMismatch(-5) / NotFound(-6) / Busy(-7) / NotSupported(-8) / NativeDllNotFound(-100) / PlatformNotSupported(-101) / ServiceUnreachable(-102) |
| C# | Success(0) / InvalidArgument(-1) / InvalidHandle(-2) / NotConnected(-3) / NativeError(-4) / LengthMismatch(-5) / NotFound(-6) / Busy(-7) / NotSupported(-8) / NativeDllNotFound(-100) / PlatformNotSupported(-101) / ServiceUnreachable(-102) |
| Java | OK(0) / INVALID_PARAM(1) / NOT_INITIALIZED(2) / ALREADY_INITIALIZED(3) / TIMEOUT(4) / NO_DEVICE(5) / NOT_AVAILABLE(6) / IO_ERROR(7) / ALARM_ERROR(8) / CONFIG_ERROR(9) / DLL_NOT_FOUND(100) / UNKNOWN(999) |
| Python | OK(0) / INVALID_PARAM(1) / NOT_INITIALIZED(2) / ALREADY_INITIALIZED(3) / TIMEOUT(4) / NO_DEVICE(5) / NOT_AVAILABLE(6) / IO_ERROR(7) / ALARM_ERROR(8) / CONFIG_ERROR(9) / DLL_NOT_FOUND(100) / UNKNOWN(999) |
| Rust | Success(0) / InvalidArgument(-1) / InvalidHandle(-2) / NotConnected(-3) / NativeError(-4) / LengthMismatch(-5) / NotFound(-6) / Busy(-7) / NotSupported(-8) / NativeDllNotFound(-100) / PlatformNotSupported(-101) / ServiceUnreachable(-102) |
注:
- Java / Python 现用正值制(
0/1..9/100/999),与本表负值语义对应但数值不同。 - C
pns_result_t用自己一套负值(-1..-12,另有超时 / 运行库加载 / 入口缺失 / 配置 / 内存等),取值见 C SDK 页面。 Busy(-7)是 native-6的落点,但它还有第二个来源:唯一连接门被别的实时会话占着(C# / Rust 把这个码记成最近错误码;C++ 头文件同样把Busy注释成「实时门已被占用」)。Java / Python 没有本成员,各自用本地码 / 异常 —— 六种语言第二个会话的失败形态见 SDK 连接契约。- Rust 读写过程数据失败返回
ServiceError(ServiceResult<T>),静态最近错误码走PnSErrorCode。
C 语言码 ≠ 本表枚举码:两边都占负数区间,且 -4..-8 同值不同义(C 语言码 = 超时 / 不支持 / 忙 / 原生层失败 / DLL 加载失败;本表 = 原生失败 / 长度不符 / 不存在 / 忙 / 不受支持),裸转必然走错分支。跨语言换算必须走各语言提供的转换函数,禁止裸类型转换;只加换算表,不重编号。
各语言换算入口:
| 语言 | 换算入口 |
|---|---|
| C++ | PnSErrorCodeFromNative(int)(constexpr) |
| C# | PnSErrorCodeMap.FromNativeCode(int) |
| Rust | PnSErrorCode::from_native_code(i32) |
事件等级
事件与日志等级;连接 = Info,掉线 / 运行错误 = Warn。
| 名称 | 值 | 含义 |
|---|---|---|
Info | 0 | 信息 |
Warn | 1 | 警告 |
Error | 2 | 错误 |
各语言类型名:
| 语言 | 类型名 |
|---|---|
| C | pns_event_level_t |
| C++ | PnSEventLevel |
| C# | PnSEventLevel |
| Java | PnSEventLevel |
| Python | PnSEventLevel |
| Rust | EventLevel(没有稳定整数值,按枚举名用) |
服务区
过程数据寻址的区域;I 区只读(控制器 → 设备),Q 区只写(设备 → 控制器)。
| 名称 | 值 | 含义 |
|---|---|---|
Unknown | 0 | 未知 |
Input | 1 | I 区:只读(I0.0 / IB0 / IW2 / ID4) |
Output | 2 | Q 区:只写(Q0.0 / QB0 / QW2 / QD4) |
Memory | 3 | M 区:仅用于报不支持 |
Db | 4 | DB 区:仅用于报不支持 |
各语言类型名:
| 语言 | 类型名 |
|---|---|
| C | pns_service_area_t |
| C++ | PnSServiceArea |
| C# | PnSAddressArea |
| Java | PnSServiceArea |
| Python | PnSServiceArea |
| Rust | ServiceArea(别名 PnSAddressArea) |
各语言成员名(照自己语言的这一行抄;括号内是该语言自身的值,源码未显式写数值的从略):
| 语言 | 成员名 |
|---|---|
| C | PNS_SERVICE_AREA_UNKNOWN(0) / PNS_SERVICE_AREA_INPUT(1) / PNS_SERVICE_AREA_OUTPUT(2) / PNS_SERVICE_AREA_MEMORY(3) / PNS_SERVICE_AREA_DB(4) |
| C++ | Unknown(0) / Input(1) / Output(2) / Memory(3) / Db(4) |
| C# | Unknown(0) / Input(1) / Output(2) / Memory(3) / Db(4) |
| Java | UNKNOWN / INPUT / OUTPUT / MEMORY / DB |
| Python | UNKNOWN(0) / INPUT(1) / OUTPUT(2) / MEMORY(3) / DB(4) |
| Rust | Unknown / Input / Output / Memory / Db |
Memory/Db只用于报「不支持」:解析到 M 区 / DB 区即拒绝,不做任何映射,六种语言都有这两个值。