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