0

我有一个多形式的 Windows 移动应用程序,它使用 EMDK(2.6 版)访问 MC75 的条形码扫描仪。我使用 Singleton 访问条形码扫描仪。当应用程序启动时,我调用barcodereader.Actions.Enable(),当应用程序退出时,我调用“barcodereader.Actions.Disable()”。基本上,我使用 EMDK 示例作为让扫描仪工作的指南。

在应用程序运行时,我将事件处理程序添加到表单激活事件的条形码阅读器“readNotify”,并在表单激活时删除事件处理程序。我已放入代码以检查这是否正确发生,并添加了一项检查以确保在添加新事件处理程序之前不存在现有事件处理程序。

该应用程序工作正常,但由于某种原因,条形码扫描仪突然中断,按下触发按钮时无法工作。这似乎总是发生在同一个地方(在三种形式的大约 20 次扫描之后)。没有发现错误并且扫描仪灯无法亮起。我有一定数量的扫描要做,并且扫描会在几秒钟前成功扫描的表单上停止。我可以在一个表单上进行 20 多次扫描,但似乎只有在扫描不同表单时才会遇到问题。

如果我重新启动应用程序,扫描仪将再次工作。datawedge 软件已安装但未使用。

我在这里研究期间看到了这个问题,但我的问题似乎不是断断续续的。

我在 Symbol 支持网站上看到一条说明,在表单之间移动时重复调用“.Actions.Enable”和“.Actions.Disable”是不可取的,我不这样做。

我不知道在应用程序中检查什么。有任何想法吗?

详细信息 - 使用 Windows Visual Studio 2008,设备运行 Windows Mobile 6.5 Professional,EMDK 版本 2.6,用 C# 编写的应用程序。

4

2 回答 2

2

我在 MC70 设备上遇到了同样的问题。不幸的是,它是在以前的雇主那里,所以我不再有源代码可以回顾。我确实记得必须创建一个有点丑陋的解决方法才能让它工作。

我知道我最终在父表单内声明/实例化了barcodereader 对象(因此不需要单例类)。然后,每次我实例化一个子表单时,我都会将父表单对象或barcodereader 对象通过引用传递给子表单。然后我能够从子窗体反复访问它而不会崩溃/锁定。我知道这是一个非常模糊的描述,但是自从我编写该代码以来已经有几年了。希望这可以帮助。

于 2012-08-06T20:40:22.887 回答
1

几年前我就知道这个问题!解决方案是:在进行表单导航时不要禁用条形码阅读器(保持它始终处于活动状态)。它非常适合我(我在 6 年前做过 MC9062,现在做了 MC75A 设备)。只需添加一些逻辑来告诉您的程序在不同的形式下以不同的方式处理扫描的数据。是的,将阅读器对象用作“单例”很重要。

于 2012-09-04T03:04:11.837 回答