U.are.U と呼ばれる .NET SDK 指紋リーダーと対話する node.js アプリを取得しようとしています。SDK は、.dll (win32 および x64)、Java、および .NET ライブラリを提供します。.NET を使用することに決めたのは、すべてのインターフェイスをすぐに使用できるようにして、簡単に使用できるようにするためです。
したがって、私が直面している現在の問題は、これらの .NET 関数を呼び出しながら、node.js の非同期性を維持する方法です。アプリケーション フロー (.NET の例) は非常に単純で、ライブラリを 3 回呼び出すだけでフィンガープリントが完了します。
private IEnumerable<Fmd> CaptureAndExtractFmd()
{
while (!reset)
{
DataResult<Fmd> resultConversion;
try
{
if (count >= 8)
{
SendMessage("Enrollment was unsuccessful. Please try again.");
count = 0;
break;
}
Fid fid = null;
if (!_sender.CaptureFinger(ref fid))
break;
if (fid == null)
continue;
count++;
resultConversion = FeatureExtraction.CreateFmdFromFid(fid, Constants.Formats.Fmd.ANSI);
SendMessage("A finger was captured. \r\nCount: " + (count));
if (resultConversion.ResultCode != Constants.ResultCode.DP_SUCCESS)
break;
}
catch (Exception)
{
break;
}
yield return resultConversion.Data;
}
}
.NET gui プログラムの代わりに node.js で使用できるように変更するにはどうすればよいですか?
また、node.js が常に .NET プログラムの関数を呼び出して関数を受け取るとは限らないことにも注意する必要があります。プログラムの識別部分は非同期で発生し、誰かが指紋リーダーに指を置くと開始されます。つまり、node.js 部分はそれがいつ起こるかわかりません。そのため、常に .NET 部分でデータを要求することに頼ることはできません。要求されずに node.js でコールバックを呼び出す必要があります。したがって、基本的には、要求時だけでなく双方向通信です。Web サーバーを使用した要求の方がはるかに簡単だからです。
edge.jsと呼ばれる .NET と node.js の間のギャップを埋めることができる node.js ライブラリを見つけましたが、これは役に立ちますか?
基本的には、edge.jsで動作させることができ、node-webkit (アプリを出荷する予定です) とともに、ノード API をページで直接呼び出すことができるため、ライブラリからの結果に応じて DOM を更新できます。 . イベントを発行するか、コールバックを呼び出すことによって、CLR 内から node.js の相手に通知できる非同期タスクを登録できる必要があります。
edge.js の作成者によると、簡単に実行できます https://github.com/tjanczuk/edge/issues/54#issuecomment-17967082私はそれを行うのに十分な .NET スキルを持っていません (本格的なモジュールから) ) すべてのコールバックで。