158 lines
5.8 KiB
Markdown
158 lines
5.8 KiB
Markdown
# AISU 830T Card Reader SDK
|
|
|
|
AISU 830T Card Reader SDK is a Unity UPM package for connecting an 830T card reader and receiving card data reported by the device.
|
|
|
|
## Supported environment
|
|
|
|
- Unity 2021.3 or later
|
|
- AISU 830T Card Reader
|
|
- Package ID: `xin.aisu.card-reader-830t`
|
|
|
|
Android, Wiegand, active card search/read/write commands, and ACK/NAK APIs are not supported in this release.
|
|
|
|
## Installation
|
|
|
|
In Unity Package Manager, choose **Add package from git URL...** and enter:
|
|
|
|
```text
|
|
https://git.aisu.xin/aisu-sdk/card-reader-830t-package.git
|
|
```
|
|
|
|
You can also add the package from a local folder. After installation, import **Basic** or **Console Demo** from the package's **Samples** section.
|
|
|
|
## Quick start
|
|
|
|
Place one `CardReaderManager` in the scene, configure `SerialOptions` in the Inspector, and use `CardReaderApi`:
|
|
|
|
```csharp
|
|
using Aisu.CardReader;
|
|
using UnityEngine;
|
|
|
|
public sealed class CardReaderExample : MonoBehaviour
|
|
{
|
|
private void OnEnable()
|
|
{
|
|
CardReaderApi.OnConnected.AddListener(OnConnected);
|
|
CardReaderApi.OnCardReceived.AddListener(OnCardReceived);
|
|
CardReaderApi.OnError.AddListener(OnError);
|
|
}
|
|
|
|
private void Start()
|
|
{
|
|
CardReaderApi.Open();
|
|
}
|
|
|
|
private static void OnConnected()
|
|
{
|
|
Debug.Log("Card reader connected.");
|
|
}
|
|
|
|
private static void OnCardReceived(CardInfo card)
|
|
{
|
|
Debug.Log($"{card.CardType} ({card.CardTypeCode:X2}): {card.CardNumber}");
|
|
}
|
|
|
|
private static void OnError(CardReaderErrorEventArgs error)
|
|
{
|
|
Debug.LogError(error.Exception.Message);
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
CardReaderApi.OnConnected.RemoveListener(OnConnected);
|
|
CardReaderApi.OnCardReceived.RemoveListener(OnCardReceived);
|
|
CardReaderApi.OnError.RemoveListener(OnError);
|
|
CardReaderApi.Close();
|
|
}
|
|
}
|
|
```
|
|
|
|
## CardReaderManager
|
|
|
|
`CardReaderManager` is the scene-level entry point. Keep one Manager instance in the scene. It exposes `SerialOptions`, `IsConnected`, `OpenReader()`, `CloseReader()`, and connection, disconnection, state, card, and error events.
|
|
|
|
## Inspector serial settings
|
|
|
|
`SerialOptions` uses `SerialDeviceOptions`. The currently exposed fields are:
|
|
|
|
- `PortName`: Windows COM port, for example `COM3`.
|
|
- `BaudRate`: baud rate, default `9600`.
|
|
- `Parity`: parity mode, default `None`.
|
|
- `DataBits`: data bits, default `8`.
|
|
- `StopBits`: stop bits, default `One`.
|
|
- `Handshake`: handshake mode, default `None`.
|
|
- `ReadTimeout`: read timeout in milliseconds, default `100`.
|
|
- `WriteTimeout`: write timeout in milliseconds, default `1000`.
|
|
- `RtsEnable` / `DtrEnable`: RTS/DTR flags, enabled by default.
|
|
- `AutoReconnect`: whether to retry after a connection failure, enabled by default.
|
|
- `ReconnectInterval`: retry interval in milliseconds, default `1000`.
|
|
- `MaxPendingSendCount`: send queue capacity, default `256`.
|
|
|
|
Configure the UART fields for the actual device. The Samples do not contain a fixed local COM port.
|
|
|
|
## CardReaderApi and events
|
|
|
|
`CardReaderApi` is the static access point for the current Manager. It provides:
|
|
|
|
- `Open()`: starts the reader connection.
|
|
- `Close()`: closes the current connection and stops automatic reconnect; `Open()` can be called again later.
|
|
- `IsConnected`: current connection state.
|
|
- `OnConnected`, `OnDisconnected`, `OnStateChanged`, `OnCardReceived`, and `OnError`.
|
|
|
|
Use `AddListener` to subscribe and `RemoveListener` to unsubscribe. Pair them in `OnEnable` and `OnDisable`. Accessing events or calling `Open`/`Close` without an active `CardReaderManager` throws `InvalidOperationException`.
|
|
|
|
## CardInfo and CardNumber
|
|
|
|
`CardInfo` contains:
|
|
|
|
- `CardType`: the currently mapped type is `CardType.EM4100`.
|
|
- `CardTypeCode`: the raw type code reported by the device.
|
|
- `CardNumber`: a decimal card-number string of type `string`.
|
|
|
|
`CardNumber` has a default minimum width of 10 digits. Values shorter than 10 digits are left-padded with `0`; longer values are not truncated.
|
|
|
|
## Automatic reconnect and errors
|
|
|
|
When `AutoReconnect` is enabled, the SDK continues retrying after a connection failure according to `ReconnectInterval`. `OnError` provides the actual `Exception`; common causes include a missing COM port, a port already in use, or a failed connection. Identical connection errors are not repeatedly emitted, while automatic reconnect continues.
|
|
|
|
## Samples
|
|
|
|
- **Basic**: full UI controls, COM-port selection, connection state, card information, and error log display.
|
|
- **Console Demo**: minimal API calls and console logging.
|
|
|
|
## Frequently asked questions
|
|
|
|
### No COM port is listed
|
|
|
|
Confirm that the reader is connected and its driver is installed. Check the actual COM name in Windows Device Manager. The Basic Sample's **Refresh** button rescans available ports.
|
|
|
|
### The COM port is already in use
|
|
|
|
Close other serial tools or applications using the port, then select it again and call `Open()`.
|
|
|
|
### The reader cannot connect
|
|
|
|
Check `PortName`, baud rate, parity, data bits, and stop bits against the device settings. Also confirm that no other program owns the port.
|
|
|
|
### How does automatic reconnect work?
|
|
|
|
With `AutoReconnect` enabled, the SDK retries at `ReconnectInterval`. Calling `Close()` stops the current connection and automatic reconnect.
|
|
|
|
### Are serial resources released when Unity exits?
|
|
|
|
`CardReaderManager` releases the serial resources when it is destroyed or when the application exits.
|
|
|
|
### How do I import the Basic Sample?
|
|
|
|
After installing the package, open its details in Package Manager, find **Samples**, and click **Import** for **Basic**. A version directory in the imported path is standard Unity behavior.
|
|
|
|
## Version
|
|
|
|
This documentation describes SDK `v0.1.0`.
|
|
|
|
More information:
|
|
|
|
- [Getting Started](Documentation~/GettingStarted.en.md)
|
|
- [API reference](Documentation~/API.en.md)
|
|
- [Basic Sample guide](Samples~/Basic/README.en.md)
|