4.3 KiB
API 参考
本文仅记录 AISU 830T Card Reader SDK v0.1.0 中面向 Unity 使用者的公开 API。命名空间为 Aisu.CardReader。
CardReaderManager
CardReaderManager 是场景级读卡器管理组件。将它添加到场景中的 GameObject,并保持一个实例。
主要属性
public static CardReaderManager Instance { get; }
public SerialDeviceOptions SerialOptions { get; set; }
public bool IsConnected { get; }
Instance:当前场景中的 Manager。SerialOptions:Inspector 和代码使用的串口配置。IsConnected:当前是否已连接。
主要方法
public void OpenReader();
public void CloseReader();
OpenReader() 启动读卡器连接。CloseReader() 关闭当前连接并停止自动重连;之后可以再次调用 OpenReader()。
事件
public UnityEvent OnConnected { get; }
public UnityEvent OnDisconnected { get; }
public UnityEvent<SerialDeviceState> OnStateChanged { get; }
public UnityEvent<CardInfo> OnCardReceived { get; }
public UnityEvent<CardReaderErrorEventArgs> OnError { get; }
事件使用 AddListener 和 RemoveListener。通过 Manager 接收的 UnityEvent 在 Unity 主线程派发。
CardReaderApi
CardReaderApi 是当前 CardReaderManager 的静态访问入口,适合在业务脚本中使用。
public static bool IsConnected { get; }
public static void Open();
public static void Close();
public static UnityEvent OnConnected { get; }
public static UnityEvent OnDisconnected { get; }
public static UnityEvent<SerialDeviceState> OnStateChanged { get; }
public static UnityEvent<CardInfo> OnCardReceived { get; }
public static UnityEvent<CardReaderErrorEventArgs> OnError { get; }
Open() 与 Close() 的行为分别是启动连接和关闭连接。没有活动的 CardReaderManager 时,调用方法或访问事件会抛出 InvalidOperationException。
SerialDeviceOptions
SerialDeviceOptions 是 CardReaderManager.SerialOptions 的配置类型。当前公开字段如下:
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
PortName |
string |
无 | Windows COM 端口名称。 |
BaudRate |
int |
9600 |
波特率。 |
Parity |
Parity |
None |
校验方式。 |
DataBits |
int |
8 |
数据位。 |
StopBits |
StopBits |
One |
停止位。 |
Handshake |
Handshake |
None |
握手方式。 |
ReadTimeout |
int |
100 |
读超时,单位毫秒。 |
WriteTimeout |
int |
1000 |
写超时,单位毫秒。 |
RtsEnable |
bool |
true |
是否启用 RTS。 |
DtrEnable |
bool |
true |
是否启用 DTR。 |
AutoReconnect |
bool |
true |
连接异常后是否继续自动重连。 |
ReconnectInterval |
int |
1000 |
自动重连间隔,单位毫秒。 |
MaxPendingSendCount |
int |
256 |
待发送数据容量。 |
实际设备的 COM 口和 UART 参数可能不同,请以设备配置为准。
CardInfo
CardInfo 是 OnCardReceived 提供的卡片信息:
public CardType CardType { get; }
public byte CardTypeCode { get; }
public string CardNumber { get; }
CardType:当前已知类型为CardType.EM4100。CardTypeCode:设备上报的原始类型码。未知类型不会丢失。CardNumber:十进制卡号字符串。
CardNumber 规则
CardNumber 的类型为 string,表示十进制卡号字符串。默认最小长度为 10 位:不足 10 位时左侧补 0,超过 10 位时不截断。
CardType
public enum CardType
{
Unknown = 0,
EM4100 = 0x02
}
错误事件
OnError 提供 CardReaderErrorEventArgs:
public CardReaderException Exception { get; }
Exception 是真实异常对象。常见原因包括 COM 端口不存在、端口被其他程序占用和连接失败。相同的连接错误不会持续重复派发,但在 AutoReconnect 开启时 SDK 仍会继续尝试连接。
事件使用约定
推荐在 OnEnable 中使用 AddListener 注册,在 OnDisable 中使用 RemoveListener 解除。生命周期示例:
private void OnEnable()
{
CardReaderApi.OnCardReceived.AddListener(OnCardReceived);
}
private void OnDisable()
{
CardReaderApi.OnCardReceived.RemoveListener(OnCardReceived);
}
CardReaderManager 销毁或应用退出时会自动释放串口资源。