私はデバイスMC9090G用にC#で開発しており、決定されたドライバーをロードするためのRFIDがデバイスにあるかどうかをコードで知りたいと思っています。coredll.libライブラリのSPI_GETOEMINFOを使用しましたが、両方のデバイスで同じモデル「MC9090G」が返されます。どちらがRFIDを使用しているかを確認するにはどうすればよいですか。
3 に答える
メーカーがデバイスにハードコーディングしたものを読みたい場合は、Motorolaの開発者ツールを入手する必要があります。
デバイスのシリアル番号を自分で設定する場合は、[バージョン情報]ボックスの[デバイス名]フィールドを使用できます。 [設定]([スタート]> [設定])に移動し、 [バージョン情報]アプレットを起動して、[デバイスID ]画面に移動します。
ここから、デフォルト値(Pocket_PC
上の写真)をデバイスのシリアル番号に置き換えることができます...またはそこに書き込みたいものは何でもかまいません。
このフィールドは、次のようにレジストリから読み取ることができます。
using Microsoft.Win32.Registry;
private static string _deviceId = null;
public static string DeviceName {
get {
if (String.IsNullOrEmpty(_deviceId)) {
using (RegistryKey key = Registry.LocalMachine.OpenSubKey("Ident", true)) {
try {
_deviceId = (string)key.GetValue("Name", "[Unnamed]");
} catch (Exception e) {
ErrorWrapper("GetDeviceName", e);
_deviceId = System.Net.Dns.GetHostName();
} finally {
key.Flush();
key.Close();
}
}
}
return _deviceId;
}
}
この特定のゲッターはレジストリから1回だけ読み取り、その後の使用のために値を保存することに注意してください。ただし、レジストリの読み取りは高速になるように設計されているため、おそらく必要ありません。
もちろん、従業員がモバイルデバイスを充電器に置くのを忘れて、それが死んだ場合は、もう一度入力する必要があります。
RFIDを備えたデバイスと備えていないデバイスを区別するためのソリューションを探した後、Symbol.RFID.dllアセンブリを使用してRFID.Readerインスタンスを作成しました。
Symbol.RFID.Reader info = new Symbol.RFID.Reader();
したがって、デバイスにRFIDがない場合、この行はSystem.Exception'例外'をスローします。そのため、RFIDのないデバイスでやりたいことを行うために、この例外を処理しています。
私はこのトライキャッチが最善の解決策ではないことを知っていますが、それは私にとってはうまくいきました。
答えてくれてありがとう。
Motorola EMDKをダウンロードすると、Symbol.ResourceCoordination.dllアセンブリのSymbol.ResourceCoordination名前空間にTerminalInfoというクラスがあります。このクラスのインスタンスを作成し、ESNプロパティを読み取って、デバイスの実際のハードウェアシリアル番号を取得します。
同じクラスには、インストールされているハードウェアを判別するために使用できるプロパティも含まれていますが、私はこれらを自分で使用したことはなく、どのように問い合わせるべきかを頭から離れて説明することはできません。