我有一个类似于 ATM 应用程序的程序。我使用我的安卓设备作为键盘。将数据从手机传输到我的 C# 程序没有问题。我使用线程。我对如何真正“启动” ATM 应用程序有疑问。
唯一的输入设备是安卓设备。我不会使用电脑键盘或任何东西。所以程序一旦展示出来,第一件事就是程序会询问这是什么交易。
private void FrontPage_Shown(object sender, EventArgs e)
{
Ask_Transaction();
}
在里面......(编辑部分)
public void Ask_Transaction()
{
string decoded_input = "";
decoded_input = KT.CheckPress(input); //"input" is the data from the arduino. the checkpress will decode it.
do
{
try
{
//input = serialPort.ReadLine();
switch (KT.CheckPress(input))
{
case "S5": //Card;
break;
case "S6": //Cardless
{
PF.Format_Cardless();
AskLanguage(); //if cardless, it will now ask the language. Once again, another input from serial is needed
}
break;
case "Cancel": PF.Format_TransactionCancelled();
break;
default:
break;
}
}
catch
{
//To catch ReadTimeout after 6 seconds
//"You do not respond to the alloted time.."
}
}
while (decoded_input != "S5"
|| decoded_input != "S6"
|| decoded_input != "Cancel");
}
我的问题是,当我尝试循环 Ask_Transaction 直到我使用 do-while 循环获得正确的输入(S5 或 S6 或取消)时,我的程序滞后并最终崩溃。没有错误显示。
编辑:当然我们不能保证用户会输入正确的键。而且通常当您只点击键盘上的数字时,ATM 程序一开始不会通知您。它只会等待可能的正确输入。此外,如果用户输入 S6,程序现在将使用这些键盘数字 s5 和 s6 要求另一个输入。问题是程序不是“连续的”。任何形式的帮助将不胜感激。