英创信息技术获取英创Linux主板型号的方法简介

描述

英创公司十余年来都专注于嵌入式工控主板的开发,推出了很多不同型号的产品,也和许多客户建立了长期的合作和信任。随着英创公司不断的对产品进行更新,推出性能越来越好的新产品,很多客户也对自己的产品进行更新,并且推出新的项目。

经过长时间的累积,已经有许多客户的多个项目使用了英创公司不同型号的板卡,为了让客户更方便的管理应用程序,英创公司整理了一个方便客户识别板卡型号的方法,通过这个方法,客户可以将多个项目的程序整合起来,通过一个管理程序,对板卡进行判断,然后执行相应的操作,十分简单和方便。

客户只需要读取板卡文件系统中的/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;

}

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分