私は作業中のFPGAプロジェクト用のC#シリアルインターフェイスを作成中です。問題が発生しました。私はしかし、ファイルを読み込むと、エラーを取得していますけれども、私は、デバッグ中にファイルを一度に16バイトずつ読む
.. 16のバイトを送信し、正しい受信時に次の16バイトなど送って、一度ファイルに16のバイトを読んでする必要があります。
*(オフセットと長さが配列の範囲外であるか、または数がソースコレクションの末尾までのインデックスの要素数より多い)
ファイルは約1200バイトで、2番目のファイルでエラーが発生していますプログラムが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);)ファイルポインタがデフォルトでゼロになることを意味しますか? また、bytes <16の場合のEOF状況では、readBytes []は読み取るデータがなかった場合には単にゼロでいっぱいになりますか?それとも、何らかのエラーが発生するでしょうか? – TheEngineerer
@ MichaelAlllen771 [ドキュメント](http://msdn.microsoft.com/en-us/library/system.io.filestream.read.aspx)に従って、 'Read'は実際に読み込まれたバイト数を返します宛先配列に)、これは何もない場合に要求されたバイト数よりも少なくなることがあります。 「備考」を参照してください。 – GSerg