private void SendOneFile(string fileName, string flashName = "")
{
if (string.IsNullOrWhiteSpace(flashName))
flashName = Path.GetFileName(fileName);
using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
_headerTop.Add(string.Format("const char FNAME{0:D3}[] PROGMEM = \"{1}\";" + Environment.NewLine,
_flashFileNo, flashName));
_headerBottom.Add(string.Format(" {{ FNAME{0:D3}, {1,3:D}, {2:D} }}," + Environment.NewLine,
_flashFileNo, _flashOffset / DATAFLASH_PAGE_BYTES, fs.Length));
serialPort1.Write("START " + _flashOffset.ToString() + " " + fs.Length.ToString() + "\n");
_sendState = SendState.WAITFORSEND;
byte[] myBuff = new byte[DATAFLASH_PAGE_BYTES];
int r;
while ((r = fs.Read(myBuff, 0, myBuff.Length)) > 0)
{
serialPort1.Write(myBuff, 0, r);
_flashOffset += r;
}
fs.Close();
}
// Round up to the next page
_flashOffset = ((_flashOffset / DATAFLASH_PAGE_BYTES) + 1) * DATAFLASH_PAGE_BYTES;
++_flashFileNo;
_sendState = SendState.SENDINGFILE;
}