我正在尝试让 node.js 应用程序与名为 U.are.U 的 .NET SDK 指纹读取器进行交互。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;
}
}
如何更改它以便它可以在 node.js 中使用,而不是在 .NET gui 程序中使用?
还需要注意的是,node.js 并不总是会调用 .NET 程序上的函数来接收函数。程序的识别部分是异步发生的,当有人将手指放在指纹读取器上时就会触发,这意味着 node.js 部分不知道什么时候会发生。所以我不能一直依赖在 .NET 部分询问数据,它必须在没有被询问的情况下调用 node.js 上的回调。所以基本上,这是一个双向通信,不仅仅是请求,因为使用网络服务器请求会容易得多。
我找到了一个 node.js 库,它可以缩小 .NET 和 node.js 之间的差距,称为edge.js,这有什么帮助吗?
基本上,edge.js可以使它工作,连同node-webkit(我将发布我的应用程序),我可以直接在页面中调用节点 API,因此我可以根据库的结果更新 DOM . 我需要能够注册一个异步任务,该任务可以通过发出事件或调用回调来从 CLR 内部通知给 node.js 对应方!
根据 edge.js 作者的说法,它可以轻松完成https://github.com/tjanczuk/edge/issues/54#issuecomment-17967082我只是没有足够的 .NET 技能来做到这一点(来自一个完整的模块) 与所有回调。