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 0x19Data を通常フォーマットとしてパースしてよい
  • 防御カードセクタ: 先頭 0x00 0x1ARfSecReadStatus.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

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