- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在尝试让 node.js 应用程序与名为 U.are.U 的 .NET SDK 指纹读取器交互。 SDK 提供 .dll(win32 和 x64)、Java 和 .NET 库。我决定使用 .NET 来简化使用,让所有接口(interface)都可以使用。
所以,我当前面临的问题是如何调用这些 .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 (我将发布我的应用程序),我可以直接在页面中调用 Node API,因此我可以根据库中的结果更新 DOM。 我需要能够注册一个异步任务,该任务可以通过发出事件或调用回调来从 CLR 内部通知 node.js 对应项!
根据edge.js作者的说法,这很容易做到https://github.com/tjanczuk/edge/issues/54#issuecomment-17967082我只是没有足够的 .NET 技能来处理所有回调(来自一个完整的模块)。
最佳答案
使用此 SDK 的 .NET 库不适合解决此问题。
Node.js 本身是一个 C++ 应用程序,尝试正确使用 .NET 库只会带来伤害,尤其是 SDK 还提供原生 C/C++ 库!
当然,你不能直接使用 C++ 库;您必须编写一个 C++ 包装器。在 Node 世界中,这些被称为 addons .编写插件并不简单,但即使是几乎没有 C++ 经验的人也应该能够按照文档中的示例进行操作。
获得内置于 Windows 中的 native 插件也可能有点棘手; here's some tips to help you get started .
由于您使用的 SDK 在付费墙后面,我无法提供任何具体示例。但是,我想您的 C++ 包装器对象将公开一些方法,并且您还将围绕它编写一个 JS 包装器以公开一个干净的 API。例如:
var uareu = require('./uareu.node') // the native C++ addon dll
, events = require('events')
, util = require('util');
function FingerprintReader() {
events.EventEmitter.call(this); // initialize the EventEmitter
// do stuff with the native module
// whenever a finger is placed on the reader:
this.emit('finger', { id: idFromSdk });
}
util.inherits(FingerprintReader, events.EventEmitter); // we want this module
// to be an EventEmitter
module.exports = FingerprintReader; // export for require()ing in your app
现在您的应用可以:
var FingerprintReader = require('fingerprint')
, fp = new FingerprintReader();
fp.on('finger', function(d) {
// do something with `d.id`
});
这个例子显然掩盖了很多,但应该让你很好地了解在 JS 端需要发生什么。至于检测手指何时放在阅读器上,我真的不能说如果不访问 SDK,您将如何做到这一点。我敢打赌,你最终会在某个地方进行投票。这应该在插件中的单独线程上完成。
奖励:走原生路线意味着您可能还与 SDK 的 Linux 版本兼容,因此您的应用也可以在 Linux 上运行!
关于c# - 通过 .NET SDK 在 node.js 上的指纹读取器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16430772/
我正在细读 http://www.khronos.org/网站,只找到了 OpenCL 的头文件(不是我不关心的 OpenGL)。如何获取 OpenCL SDK? 最佳答案 AMD 的 ATI Str
Android 项目中最低(最低 sdk)和最高(目标 sdk)级别是否有任何影响。这些东西是否会影响项目的可靠性和效率。 最佳答案 没有影响,如果您以 SDK 级别 8 为目标,那么您的应用将以 9
“min sdk version/target sdk version”和“compile sdk version”有什么区别?我知道 min 和 target sdk 是什么意思,但是 compil
我正在尝试运行 Dji Mobile-Sdk-Android:https://github.com/dji-sdk/Mobile-SDK-Android使用 dji 网站上的说明:https://de
我目前正在向我的 iPhone 应用程序添加新的 Facebook iOS sdk 3.1.1。我看到 sdk 有重大变化。例如。我的旧 sdk 创建一个 Facebook 对象并从 FBReques
我最近刚刚下载了 Xcode 4.6 with mac 10.8.4 with iOS 6.0 SDK package,我立即注意到我无法使用我的 iPhone 3Gs with iOS 4.6 进行
我尝试下载 OpenCL SDK。但是没办法。我有一个 AMD GPU,所以我在谷歌上搜索了 AMD SDK,但是来自谷歌的所有链接和一些教程都被破坏了,不可能通过 AMD 开发者网站找到 sdk。
安装 Google Cloud SDK 后,当我运行时 gcloud 授权登录 我收到一条错误消息: Your browser has been opened to visit: https://a
我一直在 nvidia 网站上搜索 GPU 计算 SDK,因为我正在尝试构建具有 cuda 支持的点云库 (PCL)。但是,在 nvidia 网站上,我只能找到工具包的链接,而不是 SDK 的单个下载
Closed. This question needs to be more focused。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅关注editing this post一个问题。 2
当我打开 Android SDK 管理器时,会出现一个屏幕“选择要安装的包”。它列出了一堆带有绿色复选标记(已经安装)的软件包,还有一些带有 x's 的软件包,它们没有安装。如果我选择“全部接受”,它
在开发过程中,我发布了 SDK 21 Lollipop,但我无法在我的 KitKat 设备上使用它。应用程序非常简单,我只将 SDK 用于动画和 Material 设计,但是当我尝试对 Play 商店
enter image description here friend 们好 在使用 Linux、jenkins 和 docker 探索 dotnet 核心时,我遇到了构建问题,该问题在标题“/usr
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我创建了一个flutter项目,运行flutter packages get,输出如下:【二】flutter包搞定等待另一个 flutter 命令释放启动锁...第二次运行“flutter packa
这个问题在这里已经有了答案: What are the Android SDK build-tools, platform-tools and tools? And which version sh
我使用 Corona SDK 已经快一年了,并且开发了几个简单的游戏。我现在正在寻找的是在 Corona SDK 中创建 3D 幻觉的某种方法。如果有人有 Corona 3D 方面的经验,我将不胜感激
我有一个CLDC 1.1 / MIDP 2.0项目,可以使用Java ME SDK 3.2很好地进行编译。 最近,我已将Java SE升级到8,结果Java ME SDK开始在Windows启动时显示
有没有办法以编程方式控制连接到华擎主板的 RGB 照明?我知道华硕有一个 Aura SDK,但华擎是否也有一个用于他们的硬件? 如果是,我在哪里可以找到它? 最佳答案 没有用于华擎多彩的 sdk。但是
如何使用 crm 2011 sdk 和 XrmServiceContext 创建事务? 在下一个示例中,'new_brand' 是一些自定义实体。我想创建三个品牌。第三个拥有错误的 OwnerID g
我是一名优秀的程序员,十分优秀!