Winteck 1.0.2
Winteck(マースウィンテック)
マースウィンテック製の IC カードリーダー・ライター(ICR700 / R29A 等)を制御するライブラリです。RF カードの読み書き・増減値・認証キー操作などをシリアル経由で行います。
概要
- ICR700 / R29A: 回収機能付き非接触 IC カードリーダライタ向けの端末クラス。いずれも
Terminalを継承し、RS-232 で制御します。 - RF スタート/ストップ、RF 読取・書込・増分・減分、セクタ読取・書込、認証キー読取・書込、カード ID 取得などの API を提供します。
- 名前空間:
Net.Monotas.Terminals.Winteck.ICR700/Net.Monotas.Terminals.Winteck.R29A - Monoterminal(シリアル通信)と NLog(ログ)に依存
インストール
dotnet add package Winteck
依存パッケージ(Monoterminal、NLog)は自動で復元されます。
クイックスタート
参照の追加
using Net.Monotas.Terminals.Winteck.ICR700; // または R29A
インスタンス作成とオープン(ICR700 の例)
var device = new ICR700
{
PortName = "COM1", // 実際の COM ポート名に合わせる
BaudRate = 19200 // 既定 19200、8bit、偶数パリティ、1 stop
};
device.Open();
基本的な利用フロー(RF 読取の例)
try
{
await device.RequestReset();
var startStatus = await device.RequestRfStart();
if (!startStatus.Success) { /* エラー処理 */ return; }
// レコード番号指定で RF 読取
var readStatus = await device.RequestRfRead(recordNumber: 0);
// readStatus の結果を利用
// セクタ読取(defend カードの場合は IsDefendCardSector を確認してから Data をパース)
var secStatus = await device.RequestRfSecRead(sectorNumber: 1);
if (secStatus != null && secStatus.IsDefendCardSector)
{
// 防御カード用セクタ:通常フォーマットでパースしない
}
else if (secStatus != null)
{
// 通常セクタとして secStatus.Data をパース
}
await device.RequestRfStop();
}
finally
{
device.Close();
}
API 一覧(ICR700 / R29A で共通)
リセット・ユニット
| メソッド | 戻り値 | 説明 |
|---|---|---|
RequestReset() |
Task<bool> |
リセット要求 |
RequestReaderReset() |
Task<bool> |
リーダーリセット |
RequestVersion() |
Task<string> |
バージョン要求 |
RF 基本
| メソッド | 戻り値 | 説明 |
|---|---|---|
RequestRfStart() |
Task<RfStartStatus> / Task<RfStrartStatus> |
RF 開始 |
RequestRfStop() |
Task<bool> |
RF 停止 |
RequestRfRead(byte recordNumber) |
Task<RfReadStatus> |
RF 読取(レコード番号指定) |
RequestRfWrite(RfWrite param) |
Task<RfWriteStatus> |
RF 書込 |
RequestRfIncrement(RfIncrement param) |
Task<RfIncrementStatus> |
RF 増分 |
RequestRfDecrement(RfDecrement param) |
Task<RfDecrementStatus> |
RF 減分 |
RequestRfValueGet(byte recordNumber) |
Task<RfGetValue> |
値取得 |
RequestRfValueSet(RfSetValue param) |
Task<RfSetValueStatus> |
値設定 |
RF セクタ・認証キー
| メソッド | 戻り値 | 説明 |
|---|---|---|
RequestRfSecRead(byte sectorNumber) |
Task<RfSecReadStatus> |
セクタ読取 |
RequestRfSecWrite(RfSecWrite param) |
Task<RfSecWriteStatus> |
セクタ書込 |
RequestRfAuthKeyLoad(RfAuthKey param) |
Task<RfAuthKeyLoadStatus> |
認証キーロード |
RequestRfAuthKeyGet(byte sectorNumber) |
Task<RfAuthKeyGetStatus> |
認証キー取得 |
RequestRfAuthKeySet(RfAuthKeySet param) |
Task<RfAuthKeySetStatus> |
認証キー設定 |
RequestRfCardIdGet() |
Task<RfCardId> |
カード ID 取得 |
RequestRfCardKeyWrite / RequestRfCardKeyRead |
各 Status | カードキー書込・読取 |
※ R29A では RequestRfStart() の戻り型が RfStrartStatus(タイポ名)です。
プロパティ(Terminal 継承)
| プロパティ | 説明 |
|---|---|
PortName |
シリアルポート名 |
BaudRate |
ボーレート(ICR700 既定 19200) |
DataBits / Parity / StopBits |
通信パラメータ |
Timeout |
送受信タイムアウト |
RfSecRead と防御カード(defend card)セクタ
RequestRfSecRead の応答で、セクタデータの先頭 2 バイトが 0x00 0x1A の場合は防御カード用セクタです。通常カードと同じレイアウトでパースするとクラッシュや不正データの原因になります。
- 通常セクタ: 先頭
0x01 0x05または0x00 0x19→Dataを通常フォーマットとしてパースしてよい - 防御カードセクタ: 先頭
0x00 0x1A→ RfSecReadStatus.IsDefendCardSector が true。Dataを通常フォーマットとして扱わないこと
var status = await device.RequestRfSecRead(sectorNumber: 1);
if (status.IsDefendCardSector)
{
// 防御カード用:Data を通常フォーマットでパースしない
return;
}
// 通常セクタとして status.Data をパース
別プロジェクトで DLL のみ使う場合
Winteck を別ソリューションで DLL 参照または NuGet で利用する場合は、次の 3 つをすべて参照・配置してください。
| 依存 | 用途 |
|---|---|
| Winteck | IC カードリーダー制御 |
| Monoterminal | シリアル端末通信 |
| NLog | ログ出力 |
- プロジェクト参照: 同一ソリューションで Winteck と Monoterminal をプロジェクト参照し、NLog を NuGet で追加
- DLL 参照: Winteck.dll / Monoterminal.dll / NLog.dll の 3 つを参照し、Copy Local = True
- NuGet: Winteck をインストールすると Monoterminal と NLog は依存で復元される
FileNotFoundException が出る場合は、Monoterminal または NLog の参照・配置漏れを確認してください。詳細はリポジトリの Winteck/USAGE.md を参照してください。
NLog 設定(推奨)
Winteck は NLog でログを出力します。App.config または NLog.config でターゲット(ファイル・コンソール等)を設定すると、動作確認や障害調査がしやすくなります。未設定でも動作はします。
注意事項
- 通信前に
Open()、利用後はClose()を呼び出してください。 - ターゲットフレームワークは .NET Framework 4.5.2 以上(または対応する .NET Core / .NET 5+)を想定しています。
ライセンス
MIT © Monotas Inc.
No packages depend on Winteck.
See Winteck/USAGE.md in repository for dependencies and troubleshooting.
.NET 8.0
- Monoterminal (>= 1.0.9)
- NLog (>= 5.3.4)
- System.Text.Encoding.CodePages (>= 8.0.0)
| Version | Downloads | Last updated |
|---|---|---|
| 1.0.2 | 6 | 03/30/2026 |
| 1.0.1 | 8 | 02/11/2026 |
| 1.0.1-ci.28 | 2 | 02/15/2026 |
| 1.0.1-ci.25 | 2 | 02/11/2026 |
| 1.0.1-ci.24 | 3 | 02/11/2026 |
| 1.0.1-ci.22 | 3 | 02/11/2026 |