получение переменных из основной структуры - PullRequest
0 голосов
/ 15 октября 2011

Я пытаюсь создать разные сообщения для передачи между двумя хостами.Структура программы, которой я следую, заключается в создании основной структуры, в которой объявляются все переменные, передаваемые в разных сообщениях.Затем я создал другую структуру для разных сообщений, используя одни и те же переменные из основной структуры, значения которых я пытаюсь передать через указатели.Ниже приводится грубая схема того, что я пытаюсь сделать.Я не знаю, является ли это правильным подходом или есть другой лучший способ сделать это.

Ошибки, которые я получаю при компиляции: 1. выражение должно иметь постоянное значение 2. неполный тип недопустим

Оба указываются, когда я пытаюсь создать экземпляр структуры сообщения и передать указатели основной структуры.

Пожалуйста, помогите.

[код]

struct Master{

char  Bulk_Charging_Complete : 1;
char  Charging_Complete : 1;
short Vehicle_Energy_Capacity;
char  Vehicle_RESS_SOC;
short Vehicle_Maximum_Power_Limit : 13;
short Vehicle_Maximum_Current_Limit: 13;
short Vehicle_Maximum_Voltage_Limit: 13;
short Charger_Maximum_Power_Limit: 13;
short Charger_Maximum_Current_Limit: 13;
short Charger_Maximum_Voltage_Limit: 14;
short Charge_Current_Request: 13;
} Power;


/* create a pointer of type Master struct and point to instance of that struct type,i.e Power */


struct Master *power_pointer = &Power;    


// creating a structure of a message, the value to its variables will be fetched by pointer to the master structure

struct {
short var1 : 1;
char var2 : 4;
short var3 : 1;
short var4 : 4;  
}EV_msg_01;

// creating a structure of a message, the value to its variables will be fetched by pointer to the master structure

struct {
short var1 : 1;
short var2 : 4;
short var3 : 1;
short var4 : 4;  
}station_msg_01;



struct EV_msg  EV_msg_01 = {
                      power_pointer->Vehicle_Energy_Capacity,power_pointer->Vehicle_RESS_SOC,power_pointer->Vehicle_Maximum_Power_Limit,power_pointer->Vehicle_Maximum_Current_Limit
                      };


struct station_msg_01 station_msg_01 = {
                      power_pointer->Charger_Maximum_Power_Limit, power_pointer->Charger_Maximum_Current_Limit,power_pointer->Charger_Maximum_Voltage_Limit,power_pointer->Charge_Current_Request
                      };

[/ code]

1 Ответ

0 голосов
/ 15 октября 2011

Я не имею ни малейшего представления о том, что вы там сказали или что вы пытаетесь сделать. Но:

struct {
short var1 : 1;
char var2 : 4;
short var3 : 1;
short var4 : 4;  
}EV_msg_01;

создает переменную с именем EV_msg_01 анонимного типа.

struct EV_msg  EV_msg_01 = {

EV_msg нигде не определено, а переменная EV_msg_01 уже существует, она была определена в первой части.

struct station_msg_01 station_msg_01 = {

station_msg_01 - это переменная, которая уже была объявлена, а не тип. И вы не можете иметь переменную с тем же именем, что и тип.

EV_msg_01 = { power_pointer->Vehicle_Energy_Capacity, }

Я понятия не имею, что вы намеревались, но это назначение пытается присвоить Vehicle_Energy_Capacity (короткое слово) для short : 1; (bool?), И ноль инициализирует других членов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...