2016-09-29 87 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; 
}