我正在製作一個鍵盤項目。第一個用戶輸入是一個10位數的ID。然後按照6位密碼。我一直在考慮如何從串口接收它們時將這兩個輸入分配到不同的陣列中。這是我迄今的嘗試。從串口讀取字符串並存儲到2個不同的陣列中
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
char[] id = new char[11];
char[] pass = new char[7];
int length;
try
{
serialPort1.ReadTimeout = 100;
do
{
length = serialPort1.Read(id, 0, 11);
} while (length > 0);
}
catch (TimeoutException) { MessageBox.Show(id.ToString()); }
try
{
serialPort1.ReadTimeout = 100;
do
{
length = serialPort1.Read(pass, 0, 7);
} while (length > 0);
}
catch (TimeoutException) { MessageBox.Show(pass.ToString()); }
}
調試之後,該問題是:
- 的
MessageBox.Show()
只會顯示空字符數組。 - 數組可能不包含任何內容。
- 使用
ReadTimeout
,用戶需要在給定的時間內按下鍵盤,這在設計上不太靈活。
任何幫助或提示,真的很受歡迎。提前致謝。如果你有這樣的建議,我不介意從頭開始建造。
當你指定數組,你已經刪除了一個從大小,而不是加入一個...他們應該是'char [] id = new char [11]; char [] pass = new char [6];'相反,它們當前不足以容納10個char和6個char字符串。 – Serdalis
我應該用'char [] id = new char [11]; char [] pass = new char [7];'? 6或7無關緊要?糾正我,如果我錯了 –
你是對的,對不起,我錯了第二陣列。額外的值是保存字符串的空終止符,你可能需要也可能不需要,因爲這是一個數據流,但它很好解釋。 – Serdalis