Mistjapan 1.0.2
Mistjapan(ミストジャパン TEY510)
ミストジャパン製オートセッター TEY510(ホアロン仕様)を制御するライブラリです。Conlux などと同様の簡易コマンド API で、RS-485 経由で制御できます。
概要
- Tey510: オートセッター制御用の端末クラス。RS-485 で子機と通信します。
- Tey510Command: プロトコル送受信・フレーム解析を担うコマンドクラス。静的ヘルパーでパースやデータ整形も利用できます。
- Monoterminal および NLog に依存
インストール
dotnet add package Mistjapan
依存パッケージ(Monoterminal、NLog)は自動で復元されます。
通信仕様
| 項目 | 仕様 |
|---|---|
| 規格 | RS-485 準拠 |
| 通信速度 | 9600 bps |
| データビット | 8 ビット |
| パリティ | 偶数(Even) |
| ストップビット | 1 |
フレーム形式: STX 'S' 子機番号(3桁) コマンド データ列 ETX BCC
- BCC: STX の次から ETX まで(ETX 含む)の XOR
クイックスタート
参照の追加
using Net.Monotas.Terminals.Mistjapan.Tey510;
インスタンス作成とオープン
var device = new Tey510
{
PortName = "COM4", // 実際の COM ポート名に合わせる
MachineId = "001" // 子機番号(3桁、001~999)
};
device.Open();
基本的な利用フロー
try
{
// ポーリング(状態取得。変化なしの場合は EOT)
var status = await device.PollAsync();
if (status.IsEot)
Console.WriteLine("変化なし (EOT)");
else
Console.WriteLine($"State={status.State}, RemainingBalls={status.RemainingBalls}");
// 設定の取得
var settings = await device.RequestSettingsAsync();
// 残球数・残時間の設定
await device.SetBallsAndTimeAsync(RemainingBalls: 50, RemainingMinutes: 60);
// リセット(エラー72・73時など)
await device.SendResetAsync();
}
finally
{
device.Close();
}
API 一覧
Tey510 のメソッド
| メソッド | コマンド | 戻り値 | 説明 |
|---|---|---|---|
PollAsync() |
P | DeviceStatusResponse |
ポーリング。状態変化がない場合は EOT(IsEot == true) |
PollImmediateAsync() |
I | DeviceStatusResponse |
即時で状態を要求 |
RequestSettingsAsync() |
M | DeviceSettingsResponse |
設定内容を要求 |
SetBallsAndTimeAsync(RemainingBalls, RemainingMinutes) |
B | DeviceStatusResponse |
残球数・残時間を設定 |
SetTParamsAsync(TimeoutMinutes, TeeHeight, ManualBalls, ManualMinutes) |
T | DeviceSettingsResponse |
タイムアウト・ティー高さ・マニュアル用球数・時間を設定 |
SendInterruptAsync() |
A | DeviceStatusResponse |
中断要求 |
SendDataClearAsync() |
C | DeviceStatusResponse |
データクリア要求 |
SendResetAsync() |
U | DeviceStatusResponse |
リセット(エラー72・73のみ有効) |
プロパティ
| プロパティ | 説明 |
|---|---|
PortName |
シリアルポート名(例: "COM4") |
MachineId |
子機番号(3桁、既定値 "001") |
レスポンス型
DeviceStatusResponse(ステータス応答)
| プロパティ | 型 | 説明 |
|---|---|---|
MachineId |
string | 子機番号 |
State |
char | 状態(N/W/R/D 等) |
ShotCount |
int | 打数 |
RemainingBalls |
int | 残球数 |
ElapsedMinutes |
int | 経過時間(分) |
RemainingMinutes |
int | 残時間(分) |
ErrorCode |
string | エラーコード(2桁) |
IsEot |
bool | EOT 応答(変化なし)のとき true |
状態(State)の目安(DeviceState enum と対応):
N… Idle(待機)W… StartWait(開始待ち)R… Operating(稼働中)D… OpenWait(オープン待ち)
DeviceSettingsResponse(設定応答)
| プロパティ | 型 | 説明 |
|---|---|---|
MachineId |
string | 子機番号 |
TimeoutMinutes |
int | タイムアウト(分) |
TeeHeight |
int | ティー高さ |
ManualRemainingBalls |
int | マニュアル残球数 |
ManualRemainingMinutes |
int | マニュアル残時間(分) |
パラメータ範囲(設定用)
| メソッド/データ | パラメータ | 範囲 |
|---|---|---|
SetBallsAndTimeAsync |
RemainingBalls | 0~99999 |
SetBallsAndTimeAsync |
RemainingMinutes | 0~9999 |
SetTParamsAsync |
TimeoutMinutes | 0~999 |
SetTParamsAsync |
TeeHeight | 0~999 |
SetTParamsAsync |
ManualBalls | 0~99999 |
SetTParamsAsync |
ManualMinutes | 0~9999 |
範囲外を指定すると ArgumentOutOfRangeException が発生します。
Tey510Command の静的ヘルパー
フレーム解析やデータ整形を自前で行う場合に利用できます。
| メソッド | 説明 |
|---|---|
Tey510Command.ParseStatusResponse(byte[]) |
受信フレームをパースして DeviceStatusResponse を返す |
Tey510Command.ParseSettingsResponse(byte[]) |
設定応答(F)フレームをパースして DeviceSettingsResponse を返す |
Tey510Command.FormatBallsAndTimeData(int, int) |
B コマンド用データ列(残球5桁+残時間4桁)を生成 |
Tey510Command.FormatTParamsData(int, int, int, int) |
T コマンド用データ列を生成 |
Tey510Command.TryExtractFrame(byte[], int) |
受信バッファから 1 フレーム分を抽出。EOT 単体にも対応 |
定数: Tey510Command.EOT (0x04) — EOT のバイト値
注意事項
- 通信前に
Open()、利用後はClose()を呼び出してください。 SendResetAsync()はエラー72・73のときのみ有効です。- ポーリングで変化がないときは EOT が返り、
DeviceStatusResponse.IsEotがtrueになります。このとき他のステータス項目は未設定です。 - リポジトリの
docsフォルダにオートセッター通信仕様書があります。
ライセンス
MIT © Monotas Inc.
No packages depend on Mistjapan.
See Mistjapan/USAGE.md in repository for API and usage.
.NET 8.0
- Monoterminal (>= 1.0.8)
- NLog (>= 5.3.4)
- System.IO.Ports (>= 8.0.0)