来自传感器的奇怪读数

时间:2015-08-07 08:14:47

标签: c++ string cout

我的程序由图像处理(OpenCV)和接近传感器(Arduino UNO)组成。基本上它会在计算物体的大小和形状之前检测物体并测量其距离。

尝试从接近传感器读取时,我尝试使用cout代替printf来提高程序性能。以下是计划:

主程序

int main(void){
  int j;

  /*used for port"COM2"*/
  HANDLE hCom=INVALID_HANDLE_VALUE;

  char input[30];
  string ss,ss1,ss2,ss3;

  /*Open "COM2"*/
  hCom=CreateFile("COM2",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);

  if(hCom==INVALID_HANDLE_VALUE)
  {
    printf("can't open file");
  }
  DCB dcb;
  memset(&dcb,0,sizeof (DCB));
  dcb.DCBlength=sizeof (DCB);
  dcb.BaudRate=CBR_9600;
  dcb.ByteSize=8;
  dcb.Parity=NOPARITY;
  dcb.StopBits=ONESTOPBIT;
  SetCommState(hCom,&dcb);

  while(1){
    // OpenCV stuffs
    // Sensor readings AKA printout <-- THIS PART!
  }
}

THIS PART!中的经过测试的命令:

BEFORE

    if(hCom!=INVALID_HANDLE_VALUE)
    {
        DWORD dwBytes=0;
        j=ReadFile(hCom,&input,18,&dwBytes,NULL);
        if(j==1)
        {       
            ss=input;
            ss1=ss.substr(0,6);
            ss2=ss.substr(6,6);
            ss3=ss.substr(12,6);
        }
    }

    for(j=0;j<4;j++){
            printf("%c", ss[j]);
        }

结果:使用OpenCV 1-2 fps

OK-ish slowpoke result

AFTER

    if(hCom!=INVALID_HANDLE_VALUE)
    {
        DWORD dwBytes=0;
        j=ReadFile(hCom,&input,6,&dwBytes,NULL);
        if(j==1)
        {       
            cout << input;
        }
    }

结果:使用OpenCV 15-20ish fps

Weird characters

我的问题是如何消除读数之间的AFTER图片中的随机字符[THIS?

提前致谢!

1 个答案:

答案 0 :(得分:2)

foreach($query2 as $row2) { $id=$row2->id; $month=$row->month; $year=$row->year; } <td><a href="<?=base_url()?>/money_c/updatemanual/<?php echo $id;?>/<?php echo $month;?>/<?php echo $year;?>">insert</a></td> 实际读取的字节数。传感器很可能不会终止使用空字节读取的字符串dwBytes,因为input正在打印垃圾。

您可以做的是在致电cout之前明确设置input[dwBytes] = '\0'