我有一个可执行文件,它是一个应该遵循一行的小机器人,我的工作是编写 C 代码来命令它。我的问题是从机器人程序本身获取数据并将其发回。
指令使用 8 位二进制代码传回和第四次传递给软件,我有这两种结构来处理数据。
typedef struct
{
unsigned speed:4;
unsigned inv_right_wheel:1;
unsigned right_wheel:1;
unsigned inv_left_wheel:1;
unsigned left_wheel:1;
} INPUT;
typedef struct
{
unsigned char unused:2;
unsigned char capt_left:1;
unsigned char capt_right:1;
unsigned char cont_back_right:1;
unsigned char cont_front_right:1;
unsigned char cont_back_left:1;
unsigned char cont_front_left:1;
} OUTPUT;
为了找到二进制代码的地址,我有一个像这样的小函数REGISTER(0xE001)
(它的类型是 a static volatile unsigned char * REGISTER(unsigned short address)
),它返回要查找的地址。
我的主要看起来像这样:
int main() {
OUTPUT *out;
INPUT *in;
out = REGISTER(0xE001);
printf("%d", out.capt_left);
return EXIT_SUCCESS;
}