0

我有一个类似于 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 要求另一个输入。问题是程序不是“连续的”。任何形式的帮助将不胜感激。

4

0 回答 0