我使用以下命令从串口获取数据:
char buf [256];
char a [256];
memset (&buf, '\0', sizeof buf);
/* *** READ *** */
if (n < 0)
{
std::cout << "Error reading: " << strerror(errno) << std::endl;
}
/* Print what I read... */
std::cout << "" << buf;
int sa=0;
printf("Gelen Data : \n");
for(sa=0;sa<15;sa++){
printf("::%0.2X",buf[sa]);
}
这是我的数据:
::02::03::98::00::07::20::16::09::29::16::19::45::C0::00::00::00
我可以看到使用这些命令的数据:
for(sa=0;sa<15;sa++){
printf("::%0.2X",buf[sa]);
}
但我不会在任何等式中使用buf[]
数组的元素;例如,我想在下面的等式中使用buf[2]
:
if(buf[2]==02){
cout<<"Equality"<<endl;
}
有人能帮助我吗?
答案 0 :(得分:1)
您可能希望以十六进制格式比较它们。
if( buf[2]==0x02){
cout<<"Equality"<<endl;
}
答案 1 :(得分:1)
也可以使用带有十六进制值的switch语句,这可以提高性能,或者更有可能 - 如果你有很多值可以使用,那么使代码更具可读性。 即
switch (buf[2]) {
case 0x02:
doSomething(); break;
case 0x04:
soSomethingelse(); break;
}