我正在做一個10位ID輸入的鍵盤項目。對於每個按鍵,它將發送'1'或'2'或'3'等到串口。但是,在嘗試以Console.WriteLine(id[i])
顯示我的ID緩衝區的內容後,它只顯示串口的第一個鍵盤值。我需要顯示緩衝區中的所有10位數字輸入。我找不到代碼中的錯誤。我使用System.IO.Ports
無法從串口獲取所有字符
static void Main(string[] args)
{
char[] id = new char[10] ;
SerialPort port = new SerialPort("COM4", 9600, Parity.None, 8, StopBits.One);
port.Open();
if (port.IsOpen)
{
Console.WriteLine("port is now open");
}
else
{
Console.WriteLine("port not opened correctly");
}
port.Read(id, 0, 10);
for (int i = 0; i < 10; i++)
{
Console.WriteLine(id[i]);
}
Console.ReadLine();
}
目前看起來不錯。你確定實際上有數據要讀嗎?我通常將讀取過程綁定到'SerialPort'的'DataReceived'事件。另外,你說你相信,但你真的調試過嗎? – nozzleman
你也應該添加你的發送代碼。也許問題在發送方?您還應該將讀取操作的超時設置爲如下所示:https://msdn.microsoft.com/zh-cn/library/system.timeoutexception(v = vs.110).aspx爲了等待較大的值數據到達。 –
標準錯誤,你不能忽略Read()的返回值。只有當你有一臺非常慢的機器時,它纔會是10。你必須保持調用Read(),直到你擁有全部。 –