0

プロット値の最上位、中間、および最下位桁である 3 つの uint8 値を受け取ります。

EG: コンソールに出力 (%c):

   1 A 4

uint16_t を受け入れるシグナル ビュー UI グラファーにそれらを渡す必要があります。これまでのところ、それを行う方法は正しく機能していません。

 uint16_t iChanI = (bgp->iChanIH << 8) + (bgp->iChanIM <<4 ) + bgp->iChanIL;
 uint16_t iChanQ = (bgp->iChanQH << 8) + (bgp->iChanQM <<4) + bgp->iChanQL;

[self updateSView:iChanI ichanQ:iChanQ];

それらを正しくマージしていますか、それとも単に値を追加していますか?

どんな助けでも大歓迎です、

ありがとう、

4

1 に答える 1

0

まず、各 16 進文字を同等の 4 ビット (ニブル) 表現に変換してから、それらを にマージする必要がありますint16_t

uint8_t to_nybble(char c)
{
    return 'c' >= '0' && c <= '9' ? c - '0' : c - 'A' + 10;
}

uint16_t iChanI = (to_nybble(bgp->iChanIH) << 8) |
                  (to_nybble(bgp->iChanIM) << 4) |
                   to_nybble(bgp->iChanIL);
于 2013-06-11T15:33:53.530 に答える