2017-11-22 10 views
1

誰かが私を助けてくれることを願っています。かなり新しいC(PHPのバックグラウンドから来た)で、この問題のカップルの日に執着しました。まだ頭の丸いポインタなどを取得しようとすると、喜びPHPは持っていません。UARTのデータからアレイを更新する

基本的には、配列内の特定の値をUART経由で与えられた値に更新したいと思っています。 UARTはすべて正常に動作しています。配列を更新するためのコードを手に入れてください。 UARTからのデータは、下のコードの文字列 'uart'にあり、値 '0430'を持ちます(最初の2桁は配列キーを参照し、2番目の2桁はそれを更新する値になります)。

// Array values 
int unsigned array[15] = {05,76,33,02,11,07,34,32,65,04,09,32,90,03,44}; 

// Split the UART string into required parts 
// Array Key 
int key; 
memcpy (key, &uart[0], 2); 
// New Value 
int value; 
memcpy (value, &uart[2], 2); 

array[key] = value; // Im sure this is wrong and needs to be done via a pointer? 

新しい配列が今すべきである: {05,76,33,02,30,07,34,32,65,04,09,32,90,03,44}。

アドバイスはすばらしく、短い説明でさえわかりやすくするのに役立ちます。事前に

おかげ

+1

OT:

atoiを使用しての例では、あなたはこれをしたいあなたは、 '09'が違法である知っていますか? '0'で始まる整数の定数は8進数です。 –

答えて

3

あなたは単にint変数に文字列「04」から2つのバイトをコピーし、それはあなたがのために、値4に文字列「04」を変換する必要が4を含むように期待することはできません

char uart[] = "0430"; // made up uart buffer just for debugging 
    char temp[3] = { 0 }; // buffer for 2 char string, all 3 bytes initialized to 0 

    temp[0] = uart[0]; 
    temp[1] = uart[1];  // temp contains now "04" 

    int key = atoi(temp); // convert from string to integer, key now contains 4 

    temp[0] = uart[2];  
    temp[1] = uart[3];  // temp contains now "30" 

    int value = atoi(temp); // convert from string to integer, value now contains 30 
+0

すべての作業中 - 多くの感謝:) – Steveo

関連する問題