【讨论】关于跨平台

跨平台是软件的一个重要指标。一般程序可分为平台无关和平台相关两部分,平台相关部分主要涉及外围设备(如串口、键盘、鼠标、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 );	

	//......其他接口.....
};

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值