我有一個C#程序的問題。 通過串口我收到一個大約110個字符的字符串。 這部分工作正常,但是當我添加代碼來分割字符串時,我收到了一些行後的錯誤。 以下是錯誤我得到:C#中的串口數據接收問題#
**類型「System.ArgumentOutOfRangeException」未處理的異常出現在mscorlib.dll
其他信息:索引和長度必須引用在字符串中的位置**
下面是代碼:
private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
if (!comport.IsOpen) return;
if (CurrentDataMode == DataMode.Text)
{
// Read all the data waiting in the buffer
string data = comport.ReadExisting();
Log(LogMsgType.Incoming, data);
string ziua = data.Substring(0, 8);
string ora = data.Substring(8, 8);
string linie = data.Substring(18, 1);
string interior = data.Substring(22, 3);
string durata1 = data.Substring(26, 4);
string durata2 = data.Substring(30, 8);
string nrtel = data.Substring(38, 10);
string tipapel = data.Substring(75, 1);
string acct = data.Substring(76, 5);
}
else
{
int bytes = comport.BytesToRead;
byte[] buffer = new byte[bytes];
comport.Read(buffer, 0, bytes);
Log(LogMsgType.Incoming, ByteArrayToHexString(buffer));
}
}
編輯:
我測試過每串和他們中的任何一個都可以。 字符串長度爲112.它不能縮短。
此錯誤後的112 ......約一個幾行半
這個答案是正確的。我建議您通過查看堆棧跟蹤消息來學習診斷錯誤。你會注意到這個錯誤與串口沒有任何關係,但是使用字符串操作。 – usr 2010-10-15 16:26:28