我在读取串行设备的某些数据,存储它们并在控制台上打印时遇到一些问题。打印有时会出错。 我用malloc以这种方式在我的main函数中分配内存:
char * outputBuf = (char*)malloc(*1024sizeof(char));
我用以下方式调用我的读取功能:
readSerialData(atCommandHandler, &outputBuf);
我的readSerialData-Function:
int atCommandRead(int *atCommandHandler, char **outputBuf)
{
size_t total=0;
int retval;
FD_ZERO(&portsetmaster);
FD_SET((int)atCommandHandler, &portsetmaster);
int fullframe=0;
memcpy(&portsetlisten, &portsetmaster, sizeof(portsetmaster));
if(select(atCommandHandler+1, &portsetlisten, NULL, NULL,NULL)>0) ///< tbd: select also on error
{
retval = read(atCommandHandler, *outputBuf, AT_BUFFER_MAX);
*(outputBuf+retval) = '\0'; // terminate array outputBuf with \0
}
printf("Buffer: %s\n", *outputBuf);
return retval;
}
有时我的输出看起来像这样: OKVISION 01.010 OKVISION 01.010
实际上看起来应该是这样的: 弗洛里安 A B C D 修订01.010 任何人都可以在代码中看到一些错误吗?
感谢您的帮助:)