2016-09-29 128 views
1

我使用这些命令采取从串口数据:如何读取数组的元素?

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

为什么你不能使用你发布的示例代码? (我相信你滥用术语“等式”;这不是一个等式,并且在C++中没有等式。) – molbdnilo

+2

将程序的文本复制到你的问题中。没有截图或文字图片请。 – drescherjm

+0

我已将屏幕截图转换为代码块并修复了一些措辞。此外,问题已经标记为[tag:C++],不需要将其添加到标题中。 –

回答

1

您可能想要以十六进制格式比较它们。

if(buf[2]==0x02){ 
     cout<<"Equality"<<endl; 
} 
+0

它的工作,谢谢 – king

+0

@MuhammedYıldız,请接受答案,并upvote他们以及如果你认为他们解决了你的问题。 – v78

+0

@MuhammedYıldız,我相信你忘记了upvote男人? ? – v78

1

也可以使用switch语句用十六进制值,这会对性能改进,或更可能 - 如果你已经有很多价值的工作,使代码更易读。 ie

switch (buf[2]) { 
    case 0x02: 
    doSomething(); break; 
    case 0x04: 
    soSomethingelse(); break; 
}