我正在編寫一個C#串行接口,用於我正在處理的FPGA項目,並且遇到了問題。我需要一次讀取文件的16個字節,發送16個字節,然後在正確接收發送下一個16個字節等。一次讀取一個文件16字節問題
在調試雖然我得到錯誤但是與讀取文件:
*(偏移量和長度超出數組範圍或計數大於從索引到源集合末尾的元素數量。)
該文件約爲1200字節,並且錯誤發生在第二個程序嘗試讀取16個字節(即文件的字節16-31)。
任何想法?用錯誤的方法來計算偏移量?我與高層次的編程經驗的無比,所以你幫助將是非常讚賞
問候, 邁克爾
///////////////////// Get file data ///////////////////
else if (fileDataSent == false)
{
FileStream fs = File.OpenRead(tbFileToSend.Text);
try
{
byte[] readBytes = new byte[16];
fs.Read(readBytes, nextReadOffset, 16);
fs.Close();
for (int j = 0; j < 16; j++)
{
sendData[j + 3] = readBytes[j];
}
}
finally
{
fs.Close();
}
nextReadOffset = nextReadOffset + 16;
dataBytesSent = dataBytesSent + 16;
sendData[0] = Convert.ToByte("10000001", 2);
sendData[1] = ByteID;
sendData[2] = Convert.ToByte("11000011", 2);
sendData[19] = Convert.ToByte("11100111", 2);
ByteID++;
if (dataBytesSent == WriteFileSize)
{
fileDataSent = true;
}
}
謝謝你們,非常感謝。 這是否意味着我每次打開流:(FileStream fs = File.OpenRead(tbFileToSend.Text);)文件指針將默認爲零? 此外,在EOF情況下,字節數<16。readBytes []是否只填滿零,沒有要讀取的數據?或者我會得到某種錯誤? – TheEngineerer 2012-03-17 11:12:42
@ MichaelAlllen771根據[文檔](http://msdn.microsoft.com/en-us/library/system.io.filestream.read.aspx),「Read」返回實際讀取的字節數(因此實際複製到目標數組中),這可能比請求的字節數少,如果沒有更多的話。請參閱備註部分。 – GSerg 2012-03-17 11:16:26