私は次の構造体を持っています:
typedef union
{
struct
{
unsigned char ID;
unsigned short Vdd;
unsigned char B1State;
unsigned short B1FloatV;
unsigned short B1ChargeV;
unsigned short B1Current;
unsigned short B1TempC;
unsigned short B1StateTimer;
unsigned short B1DutyMod;
unsigned char B2State;
unsigned short B2FloatV;
unsigned short B2ChargeV;
unsigned short B2Current;
unsigned short B2TempC;
unsigned short B2StateTimer;
unsigned short B2DutyMod;
} bat_values;
unsigned char buf[64];
} BATTERY_CHARGE_STATUS;
そして私は次のように配列からそれを詰め込んでいます:
for(unsigned char ii = 0; ii < 64; ii++) usb_debug_data.buf[ii]=inBuffer[ii];
配列には次の(任意の)値があることがわかります。
inBuffer[0] = 80;
inBuffer[1] = 128;
inBuffer[2] = 12;
inBuffer[3] = 0;
inBuffer[4] = 23;
...
ここで、QEditLineのテキストを変更してこれらの値を表示したいと思います。
str=QString::number((int)usb_debug_data.bat_values.ID);
ui->batID->setText(str);
str=QString::number((int)usb_debug_data.bat_values.Vdd)
ui->Vdd->setText(str);
str=QString::number((int)usb_debug_data.bat_values.B1State)
ui->B1State->setText(str);
...
ただし、QEditLineのテキスト値が期待どおりに表示されません。私は次のように見えます:
usb_debug_data.bat_values.ID = 80 (correct)
usb_debug_data.bat_values.Vdd = 12 (incorrect)
usb_debug_data.bat_values.B1State = 23 (incorrect)
'usb_debug_data.bat_values.Vdd'は短いようですが、inBuffer[1]とinBuffer[2]から値を取得していません。同様に、'usb_debug_data.bat_values.B1State'はinBuffer[3]から値を取得する必要がありますが、何らかの理由でinBuffer[4]から値を取得しています。
なぜこれが起こっているのか考えていますか?