我的程序由图像处理(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
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
我的问题是如何消除读数之间的AFTER图片中的随机字符[THIS?
?
提前致谢!
答案 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'
。