我正在尝试通过串行连接将 Intel Hex 文件的内容发送到微控制器,该微控制器将处理发送的每一行并根据需要将它们编程到内存中。处理代码期望在 Hex 文件中出现的行被发送,包括每行末尾的换行符。
此代码在 Windows 10 PC 上的 Visual Studio 2013 中运行;作为参考,微控制器是 ARM Cortex-M0+ 型号。
但是,下面的代码似乎并没有按照我预期的方式处理 Intel Hex 记录文件。
...
int count = 0;
char hexchar;
unsigned char Buffer[69]; // 69 is max ascii hex read length for microcontroller
ifstream hexfile("pdu.hex");
while (hexfile.get(hexchar))
{
Buffer[count] = hexchar;
count++;
if (hexchar == '\n')
{
for (int i = 0; i < count; i++)
{
printf("%c", Buffer[i]);
}
serial_tx_function(Buffer); // microcontroller requires unsigned char
count = 0;
}
}
...
目前,串行传输调用已被注释掉,for 循环用于验证文件是否被正确读取。我希望看到 hex 文件的每一行都打印到终端上。相反,我什么也得不到。有任何想法吗?
编辑:经过进一步调查,我确定程序甚至没有进入 while 循环,因为文件无法打开。我不知道为什么会这样,因为该文件存在并且可以在记事本等其他程序中打开。但是,我对文件 I/O 的经验并不丰富,所以我可能会忽略一些东西。