gpt4 book ai didi

c# - 读取 RFID 卡时 Visual C# 键检测异常(添加 D 字符)

转载 作者:行者123 更新时间:2023-11-30 23:21:59 34 4
gpt4 key购买 nike

我正在使用 Visual C# 2015 开发一个程序,它应该通过 rfid 卡对用户进行身份验证。我使用的设备只是模拟键盘:假设我打开记事本,然后在阅读器附近刷标签或卡,我得到序列号 + 输入,就像大多数条形码阅读器一样。显然,我不希望用户看到代码,也不想让他/她能够在文本框中键入它,所以我的想法是在身份验证时捕获来自“那个键盘”的输入,使用 KeyDown 事件,将所有字符放入一个缓冲区变量,然后在按下回车键时(即代码的末尾)将其与数据库进行检查。

问题是,假设卡片被标记为 12345678,这是我在记事本或文本框中得到的。但是当我显示缓冲区时,我得到“D1D2D3D4D5D6D7D8”;我可以通过在数据库的每个字符之前添加一个 D 来简单地避免这个问题,但我真的很想了解为什么会这样。是编码问题,还是按键事件彼此太接近?有人知道吗?谢谢

编辑:

代码如下:

XAML

<Window x:Class="myApp.MainWindow"
(...)
KeyDown="OnKeyDownHandler">

C#

private void OnKeyDownHandler(object sender, KeyEventArgs e)
{
if (!authenticated) {

if (e.Key != Key.Enter)
{
cardReadBuffer += e.Key;
}
else
{
//this returns every character preceded by a D; doesn't happen
//if I type some characters on my keyboard and then press enter
MessageBox.Show(cardReadBuffer);
cardReadBuffer = "";
}
}
}

最佳答案

KeyDown 事件只是给你实际按下的键,所以尝试使用 TextInput 事件来处理字符串部分:

private void OnKeyDownHandler(object sender, KeyEventArgs e) {     
if (e.Key == Key.Enter) {
MessageBox.Show(cardReadBuffer);
cardReadBuffer = "";
e.Handled = true;
}
}

private void OnTextInput(object sender, TextCompositionEventArgs e) {
cardReadBuffer += e.Text;
}

关于c# - 读取 RFID 卡时 Visual C# 键检测异常(添加 D 字符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38982414/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com