我正在协助开发摩托罗拉 MC75 的定制应用程序。除了条形码阅读器的一个随机错误之外,它都经过了很好的调整。如果按下右肩按钮,条码阅读器将定期激活(开始读取)。中间和左肩按钮不知何故被禁用。这是一个独特的错误,因为它随机发生并且只影响三个按钮中的 2 个。EMDK 同时启用所有按钮,所以我不知道这是从哪里来的(内部或代码相关)。如果有人有任何意见或建议,请提前告诉我并感谢您。
谢谢,
扎克
我正在协助开发摩托罗拉 MC75 的定制应用程序。除了条形码阅读器的一个随机错误之外,它都经过了很好的调整。如果按下右肩按钮,条码阅读器将定期激活(开始读取)。中间和左肩按钮不知何故被禁用。这是一个独特的错误,因为它随机发生并且只影响三个按钮中的 2 个。EMDK 同时启用所有按钮,所以我不知道这是从哪里来的(内部或代码相关)。如果有人有任何意见或建议,请提前告诉我并感谢您。
谢谢,
扎克
我之前在 MC55 上使用过 Motorola EMDK。我不确定为什么这些按钮被禁用,并且由于您在 6 月发布了此内容,您可能不再需要答案,但这里有一个可能的解决方法:
您可以通过设置事件来捕获所有触发器,而不是让 EMDK 自己处理触发器:
// Create a trigger device to handle all trigger events of stage 2 (pressed) or RELEASED
var device = new TriggerDevice(TriggerID.ALL_TRIGGERS, new[] { TriggerState.RELEASED, TriggerState.STAGE2 });
var trigger = new Trigger(device);
trigger.Stage2Notify += OnTrigger;
然后,在您的 OnTrigger 方法中,您可以处理触发器并执行适当的操作。例如,您可以在按下任何触发器时激活条形码阅读器:
private void OnTrigger(object sender, TriggerEventArgs e)
{
if (e.NewState == e.PreviousState)
return;
// Pseudocode
if (e.NewState == TriggerState.RELEASED)
{
myBarcodeReader.Actions.ToggleSoftTrigger();
myBarcodeReader.Actions.Flush();
myBarcodeReader.Actions.Disable();
}
else if (e.NewState == TriggerState.STAGE2)
{
// Prepare the barcode reader for scanning
// This initializes various objects but does not actually enable the scanner device
// The scanner device would still need to be triggered either via hardware or software
myBarcodeReader.Actions.Enable();
myBarcodeReader.Actions.Read(data);
// Finally, turn on the scanner via software
myBarcodeReader.Actions.ToggleSoftTrigger();
}
}