读出串行设备并使用双指针保存数据

时间:2015-12-08 10:54:23

标签: c pointers

我在读取串行设备的某些数据,存储它们并在控制台上打印时遇到一些问题。打印有时会出错。 我用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 任何人都可以在代码中看到一些错误吗?

感谢您的帮助:)

0 个答案:

没有答案