例外処理
USB通信やハードウェアに異常が発生した場合は例外をスローします。
適切な場所でキャッチして処理するようにしてください。
原因は、Messageから取得できます。
(例)
// デバイスのインスタンスを生成
using var device = new Aio841632aU();
try
{
// デバイスに接続
device.Connect();
// アナログ入力
Span<Voltage> ainValues = stackalloc Voltage[device.Ain.ChannelCount];
device.Ain.Input(ainValues);
// アナログ出力
ReadOnlySpan<Voltage> aoutValues = stackalloc Voltage[] { Voltage.FromMillivolts(1234), Voltage.FromVolts(5.6) };
device.Aout.Output(aoutValues);
// デジタル入力
Span<OnOffValue> dinValues = stackalloc OnOffValue[device.Din.ChannelCount];
device.Din.Input(dinValues);
ReadOnlySpan<OutputValue> doutValues = stackalloc OutputValue[] { OutputValue.Off, OutputValue.Keep, OutputValue.On };
device.Dout.Output(doutValues);
// デバイスのインスタンスを破棄
device.Dispose();
}
catch (DeviceException exception)
{
Console.WriteLine(exception.Message);
}
ライブラリからスローしている例外は以下のとおりです。
例外 | 理由 |
---|---|
ArgumentOutOfRangeException | 値が範囲外 |
ArgumentNullException | 関数に渡された引数がNULL |
ArgumentException | 関数に渡された引数が不正 |
DeviceException ※1 | USB通信エラー ハードウェアエラー |
DllNotFoundException | ドライバ(DLL)が見つからない |
NotSupportedException | サポートされていない関数が実行された |
OutOfMemoryException | 利用可能なメモリが不足している |
※1
DeviceException例外がスローされた場合、主に以下の理由などが考えられます。
- USB通信に失敗した(モーターなどの強いノイズの影響など)
- 動作中に供給電源電圧が定格範囲を外れてしまっている
(供給電源の電流容量不足による電圧低下など) - 外部との接続方法に問題がある
- USBケーブルの接触不良
- ハードウェアの故障