请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:MSP430FR5969 工具/软件:TI C/C++编译器
您好!
出于调试目的,我正在将二进制数据从MSP430FR5969写入Code Composer Studio的控制台。
我正在使用stdio-Library中的fwrite,将所有内容发送到stdout。
这种方法有效,但传输将在发送空字节(0x00)的位置中止。 正如我所知,这只是在使用fputs时的预期行为。 这是一个错误,还是我错了?
我可以使用以下代码重现此问题。 (要在控制台上获得任何输出,我在链接器选项中增加了系统堆栈):
/*
main.c
*使用fwrite通过stdout将二进制数据输出到Code Composer Studio的控制台,但在流中存在零字节(0x00)时失败并终止。
*预期结果:
*发送0x00时fwrite不应停止,通常只能通过fput完成。 因此,在以下示例
中,console-Output的长度应该相同*
*/
#include <stdio.h>
#include <MSP430.h>
#define BUFFERLEN 16
unsigned char buf[BUFFERLEN];
int main(void){
WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器
int i=0;
int zeroBytePlace=0;
fwrite ("开始",1,6,stdout);
而(1){
//使用0xFF初始化缓冲区,但使用0x00初始化一个字节
对于(i=0;i<BUFFERLEN;i++){
IF (I=zeroBytePlace)
buf[i]=0x00;
否则
buf[i]=0xFF;
}
zeroBytePlace =(zeroBytePlace+1)%BUFFERLEN;
//写入输出:问题:只写入缓冲区的第一部分。 在zeroBytePlace,它将停止
fwrite (buf,1,buFFERLEN,stdout);
fflush (stdout);
}
}
我的编译器版本:
TI v 15.12 .4.LTS
此致,
Eiko