0

我主要使用 National Instruments 的 Labwindows CVI 作为编译器。

我必须为设备创建一个接口,并开始为所有不同的寄存器寻找结构。

// Interface.h

typedef enum Color{
    White,
    Black,
    Blue
};

typedef struct Register1{
    int Bit1:1;
    int Bit2:2;
    Color col;
} Register1;

// Interface.c

BuildSendMessage(Register1 temp)
{
    unsigned int iTemp;

    iTemp = temp.Bit1 << 7 + temp.Bit2 << 5 + temp.col; 
}

// sample.c

Register1 reg1;

reg1.Bit1 = 0;
reg1.Bit2 = 1;
reg1.col = White;

// Pass to function where message is built up

BuildSendMessage(reg1);

然后我在调用函数中填充结构,然后将结构传递到一个函数中,在该函数中我执行所有位移,将地址等附加到消息上,并通过 comm 接口将其发送出去。

这可以改进吗?我应该隐藏更多信息并让函数填充结构吗?我一直在做很多阅读,这肯定可以使用一些改进。

4

1 回答 1

0

我想要做的是我有一个我通过 tcp 与之交谈的设备,它有一个解释每个寄存器的作用的文档。

…</p>

然后我在调用函数中填充结构,然后将结构传递到一个函数中,在该函数中我执行所有位移,将地址等附加到消息上,并通过 comm 接口将其发送出去。

这可以改进吗?我应该隐藏更多信息并让函数填充结构吗?

来自维基百科

在计算机科学中,信息隐藏是在计算机程序中分离最有可能更改的设计决策的原则,从而在设计决策发生更改时保护程序的其他部分免受广泛修改。保护包括提供一个稳定的接口来保护程序的其余部分不受实现的影响(最有可能改变的细节)。

每个寄存器在设备中所做的事情不太可能改变,如果它最终应该改变,程序的其他部分可能无论如何都需要修改,所以做“更多信息隐藏”是没有意义的。

于 2016-03-03T12:50:02.650 回答