我正在使用c#中的条形码扫描仪应用程序,并使用Microsoft POS 1.14与扫描仪进行通信。条形码扫描工作正常,但现在我们的客户希望使用带显示屏的扫描仪来显示"友好"文本而不是条形码。
我没有找到关于如何做到这一点的任何代码示例,我希望它是可能的。也许可以使用" DirectIO" -command但不幸的是我无法让它工作。
在DataLogic的“产品参考指南”中,您可以找到"转义序列"可能会发送到扫描仪,这可能是解决方案。
我的问题是如何......那里有没有POS专家可以解决我的问题?
祝你好运
答案 0 :(得分:0)
基于扫描仪(或磁卡读卡器)做了类似的事情,基本上是一个键盘,我可以听,并处理这些按键,因为它们处于某种模式......我没有呃...... ....
按键模式......
;123123?
我编写了以下代码,注意主要表单级别的按键,然后在&#34 ;;"上打开/聚焦相应的表单字段。然后按下所有其他按键直到"?"并将其作为"输入"。
private void EPOSForm_KeyDown(object sender, KeyEventArgs e) {
//this captures ";" and gives focus to the member ref for input also escape key
if (e.KeyValue == 186 || e.KeyValue == 27) {
textBox.Focus();
}
}
private void textBox_KeyDown(object sender, KeyEventArgs e) {
//this captures ";" and ignores it
if (e.KeyValue == 186 || e.KeyValue == 191 || e.KeyValue == 27)
return;
}
private void textBox_TextChanged(object sender, EventArgs e) {
if (textBox.Text.IndexOf(";") != -1) {
//prevents typing of the last char
textBox.Text = textBox.Text.Replace(";", "");
textBox.Focus();
textBox.SelectionStart = textBox.Text.Length;
}
if (textBox.Text.IndexOf("?") != -1) {
//prevents typing of the last char, but assumes it mean "enter"
textBox.Text = textBox.Text.Replace("?", "");
textBox.Focus();
textBox.SelectionStart = textBox.Text.Length;
//click button
}
}