以英创公司的X86系列主板为例,英创公司的X86系列主板预装了DOS操作系统,支持DOS的标准应用,可以通过GPRS或以太网两种方式接入WAN,这两种接入WAN的方式往往是单独使用的,但也有可能对于不同的使用环境,使用者希望可以选择接入WAN的方式。为此,可以构建两个应用程序:通过GPRS接入WAN的应用程序APP1,通过以太网接入WAN的应用程序APP2,用户选择哪一种方式上网,其实就是选择执行哪一个应用程序,在本例中用GPIO来识别用户的选择。英创公司的工控主板都提供了数量众多的GPIO,关于GPIO的使用请查看相应的“编程手册”,这里不再赘述。专门编写一个test程序,系统启动后,先调用程序test,在test中判断GPIO的状态,并由这个状态返回一个值,系统判断test的返回选择执行相应的程序,所以编辑user.bat内容如下:
@ECHO OFF
Test
IF ERRORLEVEL 1 GOTO LabApp1
IF ERRORLEVEL 0 GOTO LabApp2
GOTO LabApp3
:LabApp1
APP1
GOTO LabApp3
:LabApp2
APP2
GOTO LabApp3
:LabApp3
ECHO end!
从user.bat可以看到,系统启动后,先执行test.exe,然后利用if errorlevel命令对test的返回值进行判断,if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令,需要注意的是if errorlevel 比较返回码的判断条件并非等于,而是大于等于,所以对于结合使用goto命令时的习惯用法是返回值按从大到小的顺序排列。在user.bat中,通过if errorlevel判断test的返回值,从而决定执行APP1还是APP2,也就实现了上网方式的选择。test.cpp中主要代码如下:
#define BIT0 0x01
if( inportb( PortAddr )&BIT0 ) // 读取GPIO状态(PortAddr为具体的端口地址 )
{
return 0;
}
return 1;
做完上面的工作后,把user.bat,test.exe,app1.exe和app2.exe下载到系统中,用户仅需要通过一个跳线器,将相应的GPIO脚置为高或低就可以轻松的选择应用程序的执行了,从而实现了DOS下应用程序的动态加载。