英创公司十余年来都专注于嵌入式工控主板的开发,推出了很多不同型号的产品,也和许多客户建立了长期的合作和信任。随着英创公司不断的对产品进行更新,推出性能越来越好的新产品,很多客户也对自己的产品进行更新,并且推出新的项目。
经过长时间的累积,已经有许多客户的多个项目使用了英创公司不同型号的板卡,为了让客户更方便的管理应用程序,英创公司整理了一个方便客户识别板卡型号的方法,通过这个方法,客户可以将多个项目的程序整合起来,通过一个管理程序,对板卡进行判断,然后执行相应的操作,十分简单和方便。
客户只需要读取板卡文件系统中的/etc/hostname这个文件就可以了,英创公司目前主要的产品型号和hostname文件的对应可以参考下面的表格:
板卡型号 | hostname文件 |
em9x60系列板卡 | EM9X60 |
em928x系列板卡 | EM9280 |
em335x系列板卡 | EM335X |
esm335x系列板卡 | ESM335X |
esm6800板卡 | ESM6800 |
esm6802板卡 | ESM6802 |
客户可以用过C语言标准的I/O读写函数来实现这一功能,使用fopen打开文件,然后fread将文件内容读取到buffer中,进行对比。
下面的是一个简单的例程,判断板卡型号并打印出来,可以供需要的客户参考:
#include
#include
#include
#include
/* the boardtype of Emtronix */
enum type{em9x60 = 1, em928x, em335x, esm335x, esm6800};
/* get the boadrtype from /etc/hostname */
int main(int argc, char *argv[])
{
FILE *fp;
char buf[50];
int boardtype = 0;
/* open the /etc/hostname read only */
fp = fopen("/etc/hostname", "rb");
if(fp == NULL)
{
perror("/etc/hostname");
return errno;
}
fread( buf, sizeof(char), 50, fp );
/* check the boardtype */
if(strstr(buf, "EM9X60") > 0)
boardtype = em9x60;
else if(strstr(buf, "EM9280") > 0)
boardtype = em928x;
else if(strstr(buf, "EM335X") > 0)
boardtype = em335x;
else if(strstr(buf, "ESM335X") > 0)
boardtype = esm335x;
else if(strstr(buf, "ESM6800") > 0)
boardtype = esm6800;
fclose(fp);
/* printf the boardtype */
switch(boardtype)
{
case em9x60:
printf("the boardtype is EM9x60\n");
break;
case em928x:
printf("the boardtype is EM928x\n");
break;
case em335x:
printf("the boardtype is EM335x\n");
break;
case esm335x:
printf("the boardtype is ESM335x\n");
break;
case esm6800:
printf("the boardtype is ESM680x\n");
break;
default:
printf("the boardtype is unknow, please check the platform!\n");
break;
}
return 0;
}
全部0条评论
快来发表一下你的评论吧 !