我有一个多窗体的Windows移动应用程序,可以使用EMDK(版本2.6)访问MC75的条形码扫描器。我使用Singleton访问条形码扫描仪。当应用程序启动时,我调用barcodereader.Actions.Enable()
,当应用程序退出时,我调用`barcodereader.Actions.Disable()'。基本上我已经使用EMDK样本作为扫描仪工作的指南。
在应用程序运行时,我将事件处理程序添加到表单激活事件上的条形码阅读器“readNotify”,并在表单激活时删除事件处理程序。我已经放入代码来检查这是否正确发生并添加了一个检查以确保在添加新的事件处理程序之前没有现有的事件处理程序。
该应用程序工作正常,但由于某种原因,条形码扫描仪突然切断,按下触发按钮时不起作用。这似乎总是发生在同一个地方(大约20多个扫描分布在三种形式之后)。没有发现错误,扫描仪指示灯无法亮起。我有一定数量的扫描要做,扫描停在我几秒钟前成功扫描的表格上。我可以在单个表单上执行超过20次扫描,但我在扫描不同的表单时似乎只能解决问题。
如果我重新启动应用程序,扫描仪将再次运行。 datawedge软件已安装但未使用。
我在研究过程中看到过这个问题here,但我的问题似乎并不是断断续续的。
我在Symbol支持网站上看到一条说明,说明在表单之间移动时重复调用`.Actions.Enable'和'.Actions.Disable'是不可取的。我不这样做。
我对在应用程序中查看的内容感到茫然。有什么想法吗?
详细信息 - 使用Windows Visual Studio 2008,设备运行的是Windows Mobile 6.5 Professional,EMDK 2.6版,用C#编写的应用程序。
答案 0 :(得分:2)
我在MC70设备上遇到了同样的问题。不幸的是,这是在以前的雇主,所以我不再有源代码回顾。我确实记得必须创建一个有点丑陋的解决方法才能让它工作。
我知道我最终在父表单中声明/实例化barcodereader对象(因此不需要单例类)。然后每次我实例化一个子表单时,我将父表单对象或条形码阅读器对象BY REFERENCE传递给子表单。然后,我能够反复从子表单访问它,而不会崩溃/锁定。我知道这是一个非常含糊的描述,但是自从我编写代码以来已经有几年了。希望这会有所帮助。
答案 1 :(得分:1)
几年前我就知道这个问题!解决方法是:在进行表单导航时,禁用条形码阅读器(保持它始终处于活动状态)。它对我来说非常有效(我在6年前做过MC9062,现在是MC75A设备)。只需用一些逻辑来告诉你的程序以不同的形式处理不同的扫描数据。 是的,将阅读器对象用作" Singleton"。
非常重要