【讨论】关于跨平台

来源:互联网 发布:小米wifi破解软件 编辑:程序博客网 时间:2024/05/21 15:41
跨平台是软件的一个重要指标。一般程序可分为平台无关和平台相关两部分,平台相关部分主要涉及外围设备(如串口、键盘、鼠标、LCD等)和操作系统API(如定时器、互斥锁、文件系统操作、线程操作等)。

除了程序本身的跨平台需求外,还有种应用是对目标机的模拟,例如在PC上模拟一些嵌入式平台的应用,一来可以方便用户体验产品功能,二来Windows友好的开发环境,程序调试很方便。

所以,可以定义这样一组接口,接口的实现平台相关,由平台无关部分调用。如下所示:

class VArchOper{public://套接字接口void startSocket();void nonBlkSocket( int sock );void closeSocket( int sock );//显存接口int initDspDev( int buf[] );//提供显示属性:屏幕尺寸,色深,显存指针//输入接口//触控接口int getTouchInf( int buf[] );int ctrTouchInf( int cmd, void *arg );//键盘接口int getKeybdInf( int buf[] );//定时器接口int initTimer( void (*hd)( int ) );int loadClock( int clock[] );//时钟函数(年月日时分秒)int loadSysTime( int tm[] );//系统时间(秒,微妙)int cvtSysTm2Clock( const int sysTm[], int clock[] );//互斥操作void initMutex( void *m );void delMutex( void *m );void lockMutex( void *m );void unlockMutex( void *m );//文件夹操作void loadCurDir( char name[], int len );int createDir( const char *name );void * openDir( const char *name );int isFolder( void *dir, const char *baseDir );void * listDir( void *dir, char name[] );void closeDir( void *dir );//文件操作void loadFileInf( const char *name, int inf[] );void rmFile( const char *name );//延时操作void sleepMs( int ms);//线程接口int  createThread( void *(*start_routine)(void *), void * arg, int IsDetach = FALSE );//......其他接口.....};

这组接口应该尽可能小,只包含平台相关部分。不断扩充后,可以作为小范围的标准接口,其他程序则可以省去平台相关部分的编写工作。

原创粉丝点击