- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我是 C# 的新手,目前正在编写支持密码键盘的后端代码。基本上,我的代码
OpenDevice() -> RequestPIN()
-> key in PIN on PIN PAD -> GetResultPIN()
-> ConsolePrintOutPIN() -> Print keyed PIN on the Console
我不知道如何为此编写线程,因此一旦在 PIN 后在设备上按下“Enter 键”,系统将自动滚动到函数 GetResultPIN()
。因此,凭借我的基础知识,我使用 Console.ReadLine()
编写了以下代码来分隔每个过程:
static void Main(string[] args)
{
// 1. Open PIN Pad device
OpenDevice();
Console.ReadLine();// to hold up from the previous procedure, it is *not* for input data purpose
// 2. Request PIN from PIN Pad device.
// On the PIN Pad device, it reads:
// "Key in the PIN: "
RequestPIN();
Console.ReadLine();// to hold up from the previous procedure, it is *not* for input data purpose
// 3. get PIN from the device
GetResultPIN();
// 4. Print out on the Console
ConsolePrintOutPIN();
Console.ReadLine();// to hold up from the previous procedure, it is *not* for input data purpose
}
问题:谁能给我任何关于如何使用线程/事件/委托(delegate)的建议,以避免使用 Console.ReadLine()
?
如上文所述,Console.ReadLine()
仅用于停止程序(很抱歉我天真地以这种方式使用它......)一旦我使用 Console.ReadLine ()
,在 RequestPIN()
和 GetResult()
之间,系统至少会等待我从 PIN PAD(连接到通过 USB 连接计算机,不是 从键盘),然后我会按键盘上的任意键以传递 Console.ReadLine()
和 GetResultPIN()
将能够从 PIN Pad 获取我的 PIN 号码......整个程序现在可以运行,它还没有为客户准备好,因为它非常不稳定,由于 Console.ReadLine( )
我添加了.....
理想情况下,所有方法都将一起流动。打开设备后,RequestPIN()
应该会在 PIN Pad 屏幕上显示要求输入 PIN 码,有人可以在 PIN Pad 上键入并按回车键,它自然会流向 GetResultPIN()
并读取结果,然后在控制台上打印 PIN...`
或
如果此人不输入 PIN,设备将等待 30 秒并直接转到 GetResultPIN()
并在控制台上打印出“0000”
我已经查看了 treading 和 delegate,但我不确定如何在这种情况下使用它们......谢谢!
引用:下面列出了 RequestPin() 和 GetResultPIN:
mIPAD.requestPIN(waitTime, pinMsg, minLen, maxLen, tone, option, ",");
//This function wraps device command 0x04.
//It directs the device to prompt the user to enter a PIN
//by displaying one of five predetermined messages and playing
// a specified sound.
//The messages on the device’s screen look like the figures below.
//The event associated with this function is
//OnPINRequestCompleteEvent.
waitTime:设备等待用户开始输入 PIN 的时间
pinMsg:显示为用户提示的消息,例如“输入 PIN”、“重新输入 PIN”、“验证 PIN”等
minLen 和 maxLen:PIN 的最小长度和最大长度
tone:提示音选项
选项:验证 PIN,不验证 PIN,ISO0 格式,ISO3 格式
输出将是:一个整数,0:成功,非零:错误
public void GetResultPIN()
{
StringBuilder sb = new StringBuilder();
sb.Append(mIPAD.pin.KSN);
// Key Serial Number:
//a given number from the device, unique for each device
sb.Append("," + mIPAD.pin.EPB);
// EPB: encryption of PIN after Dubpt TripleDES,
// essentially, EPB is PIN
sb.Append("," + mIPAD.getStatusCode());
//status code: Zero is good/done
// None-Zero is Error
sb.Append("\r\n");
result = sb.ToString();
}
基本上,GetResultPIN() 会返回一串随机代码,例如:9A00030000047A2000AB,AD781711481B08A2,0
PIN 成功时。如果跳过 pin 输入部分,它将返回 ,,0
。
最佳答案
如果没有硬件可以玩,真的很难知道这是否可行......
这是我设想的工作方式:
static void Main()
{
OpenDevice();
RequestPIN();
if (GetResultPIN())
{
// do something with the PIN:
var pin = mIPAD.pin.EPB;
// ...
}
else
{
Console.WriteLine("0000");
}
}
public static bool GetResultPIN()
{
TimeSpan timeout = TimeSpan.FromSeconds(30);
System.Diagnostics.Stopwatch SW = new System.Diagnostics.Stopwatch();
SW.Start();
while (mIPAD.getStatusCode() != 0 && SW.Elapsed < timeout)
{
System.Threading.Thread.Sleep(50); // small call to prevent CPU usage ramping to 100%
}
return (mIPAD.getStatusCode() == 0);
}
关于pin pad 设备的 C# 线程和事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31662622/
String 有 PadLeft 和 PadRight。我需要左右填充(居中对齐)。是否有执行此操作的标准化方法,或者更好的是,是否有实现相同目标的内置方法? 最佳答案 据我所知没有。如果您发现自己经
我刚开始学习 CSS,所以我的问题很基础。如图,如果设置padding:10px;的,但在结果中,似乎只有顶部和左侧工作,为什么会这样,我的意思是如果使用工作流程,它应该是最后两个底部和左侧工作吗?
我正在尝试重新创建类似于 this 的内容.我注意到输入字段不能在 内因为那样他们会得到难看的填充物。另一方面,按钮需要此填充,否则它会粘在没有任何填充的一侧。 以下代码不起作用,因为它将按钮放置在
我正在尝试将以下 Keras 模型代码转换为 pytorch,但在处理 padding='same' 时遇到问题。 model = Sequential() model.add(Con
与主题中的问题相同,有时是否可以将 pad 从例如 decodebin 元素链接到其他兼容元素的 pad? 我正在尝试做这样的事情: GstElement *decodebin = gst_eleme
尝试使用相同的数据集依次评估一堆 transformers 模型,以检查哪个模型表现更好。 模型列表是这个: MODELS = [ ('xlm-mlm-enfr-1024' ,"XLM
尝试使用相同的数据集依次评估一堆 transformers 模型,以检查哪个模型表现更好。 模型列表是这个: MODELS = [ ('xlm-mlm-enfr-1024' ,"XLM
根据 http://www.maxdesign.com.au/articles/inline/ ,名为“内联元素和填充”的部分说 While padding can be applied to all
在 的左侧和右侧有 3px 的填充标记导致顶部和底部填充。请参阅此处的示例...(但是对于这个 jsfiddle,我只复制了底部的填充,而不是顶部的填充)。 #xyz { padding-r
我有一个滚动时间线 ( demo ),我遇到了 padding-left 在滚动之前隐藏时间线左侧的时间线分支图像的问题, 但 padding-right 无法隐藏右侧的分支图像。 我尝试使用的方法是
我不想用这个来骚扰你,但我在互联网上的任何地方都找不到对“位填充”到底是什么的详细解释,也没有找到与位填充相关的线程的任何答案在 StackOverflow 上。 我还在 ISO 9899-1990
在检查一些代码时,我发现了这个新声明:-webkit-padding-start 但我无法理解与现有的 padding-left 有什么区别属性(property)。我已经阅读了 Mozilla De
这是我的CSS: body { margin: 0px; background-color: white; } #navbar { background-color: red; margin: 0 a
所以我试图获得一些带有填充的文本修饰符,在我导入 androidx.compose.foundation.layout.padding 之前一切都很好以及 Modifier.padding(10.dp
我正在尝试使用 Python 的 base64.b64decode(str) 方法对字符串进行 Base64 解码(转换为字节): 46oWrWpy2gTEGwNnN6Ayy 并且我确保它有 4 个
两台不同的计算机(相同的 python 版本)为 time.ctime() 返回不同的格式。一个返回 "Sun May 6 14:04:28 2018" 月份前有2个空格;其他返回 "Sun May
代码中没有设置右边距或右边距的地方,当在 Chrome 的开发者工具中查看表单元素时,它在样式列表中同时显示“padding: 0”和“margin: 0”,但是 确实将鼠标悬停在表单元素上时显示边距
有没有办法在 Flexbox 中将 padding-left 和 padding-right 设置为元素宽度的 10%。我尝试使用 padding: 0 10%;,但它不是元素宽度的 10%。 .fl
image codepen 你好,我需要 CSS 样式方面的帮助。 我正在尝试有一个响应式主菜单,但无法想出一种方法来保持文本在元素框中水平居中,一旦这些由于视口(viewport)宽度较低而开始缩小
androidx.compose.material3.Scaffold 填充错误地添加了导航栏填充,即使在打开软键盘时添加了 IME 填充,导致导航栏填充量加倍(请参见下面的屏幕截图,分隔线应该接触到
我是一名优秀的程序员,十分优秀!