QT HID 条形码 reader textinput 中的不同击键然后 Keys.onPressed
QT HID Barcode reader different keystrokes inside textinput then Keys.onPressed
所以总而言之,我有一个条形码 reader MC3300(不相关),我有我的条形码读取应用程序,它读取的一些字符与条形码内的字符不同,它是:
- ascii 41 读作 32
- ascii 62 读作 48
- ascii 30 读作 65535
- ascii 4 读作 65535
等等...
但是它可以正确读取字母或数字等常见字符。
但是,当我在设备上打开任何记事本并进行扫描,然后导出为 txt 并遍历每个字符时,它就会正确读取...
因此它一定是我的应用程序中的一些设置...
我可以要求稍微说明一下吗,也许是我应该如何实施的例子?
谢谢
编辑:我有这个 DMC:
"[)>06V00000596323S00000407141TIA1315JV2P634-00650-0020PQ100014Z16Z12D230903"
ASCII 中有哪些:
94 41 62 30 48 54 29 86 48 48 48 48 48 53 57 54 51 50 29 51 83 48 48 48 48 48 52 48 55 49 52 29 49 84 73 65 49 51 49 53 74 86 50 29 80 54 51 52 45 48 48 54 53 48 45 48 48 29 50 48 80 29 81 49 48 48 48 29 49 52 90 29 49 54 90 49 29 49 50 68 50 51 48 57 48 51 30 4
这些 ASCII 码来自:
TextField {
onTextChanged: {
console.log(text.charAt(text.length - 1)+ " ("+text.charCodeAt(text.length - 1)+"))
}
}
- 所以当我扫描 TextField 上的条形码时,读数是正确的!
然而,如果我这样使用它:
property string scannedValue: ""
Item {
focus: true
Keys.onPressed: { scannedValue += String.fromCharCode(event.key); }
}
onScannedValueChanged: {
console.log(scannedValue .charAt(scannedValue.length - 1)+ " ("+scannedValue .charCodeAt(scannedValue.length - 1)+"))
}
我有非常不同的结果...这将是:
"[)>06V00000596323S00000407141TIA1315JV2P634-00650-0020PQ100014Z16Z12D230903 Q100014 Z16 Z112 D230903"
在 ASCII 中:
91 32 48 32 46 65535 48 54 65535 32 86 48 48 48 48 48 53 57 54 51 50 65535 51 32 83 48 48 48 48 48 52 48 55 49 52 65535 49 32 84 32 73 32 65 49 51 49 53 32 74 32 86 50 65535 32 4 54 51 52 45 48 48 54 53 48 45 48 48 65535 50 48 32 4 65535 32 81 49 48 48 48 65535 49 52 32 90 65535 49 54 32 90 49 65535 49 50 32 68 50 51 48 57 48 51 65535 65535
- 这是不正确的:(
因此,这些差异从何而来,主要是我如何删除它们,以便获得与在 TextField 中扫描时相同的结果?
不要使用 event.key
- 这是键盘代码而不是 ASCII 值。请尝试使用 event.text
。
更多信息在这里:
所以总而言之,我有一个条形码 reader MC3300(不相关),我有我的条形码读取应用程序,它读取的一些字符与条形码内的字符不同,它是:
- ascii 41 读作 32
- ascii 62 读作 48
- ascii 30 读作 65535
- ascii 4 读作 65535 等等...
但是它可以正确读取字母或数字等常见字符。
但是,当我在设备上打开任何记事本并进行扫描,然后导出为 txt 并遍历每个字符时,它就会正确读取... 因此它一定是我的应用程序中的一些设置...
我可以要求稍微说明一下吗,也许是我应该如何实施的例子?
谢谢
编辑:我有这个 DMC:
"[)>06V00000596323S00000407141TIA1315JV2P634-00650-0020PQ100014Z16Z12D230903"
ASCII 中有哪些:
94 41 62 30 48 54 29 86 48 48 48 48 48 53 57 54 51 50 29 51 83 48 48 48 48 48 52 48 55 49 52 29 49 84 73 65 49 51 49 53 74 86 50 29 80 54 51 52 45 48 48 54 53 48 45 48 48 29 50 48 80 29 81 49 48 48 48 29 49 52 90 29 49 54 90 49 29 49 50 68 50 51 48 57 48 51 30 4
这些 ASCII 码来自:
TextField {
onTextChanged: {
console.log(text.charAt(text.length - 1)+ " ("+text.charCodeAt(text.length - 1)+"))
}
}
- 所以当我扫描 TextField 上的条形码时,读数是正确的!
然而,如果我这样使用它:
property string scannedValue: ""
Item {
focus: true
Keys.onPressed: { scannedValue += String.fromCharCode(event.key); }
}
onScannedValueChanged: {
console.log(scannedValue .charAt(scannedValue.length - 1)+ " ("+scannedValue .charCodeAt(scannedValue.length - 1)+"))
}
我有非常不同的结果...这将是:
"[)>06V00000596323S00000407141TIA1315JV2P634-00650-0020PQ100014Z16Z12D230903 Q100014 Z16 Z112 D230903"
在 ASCII 中:
91 32 48 32 46 65535 48 54 65535 32 86 48 48 48 48 48 53 57 54 51 50 65535 51 32 83 48 48 48 48 48 52 48 55 49 52 65535 49 32 84 32 73 32 65 49 51 49 53 32 74 32 86 50 65535 32 4 54 51 52 45 48 48 54 53 48 45 48 48 65535 50 48 32 4 65535 32 81 49 48 48 48 65535 49 52 32 90 65535 49 54 32 90 49 65535 49 50 32 68 50 51 48 57 48 51 65535 65535
- 这是不正确的:(
因此,这些差异从何而来,主要是我如何删除它们,以便获得与在 TextField 中扫描时相同的结果?
不要使用 event.key
- 这是键盘代码而不是 ASCII 值。请尝试使用 event.text
。
更多信息在这里: