#define DLL_API extern "C" __declspec( dllexport )
//#define _DELAY_scale_	10
//#define intrun_	0
//#define intstop_	1
//#define intback_	2
#define	_P1_	1
#define	_P2_	2
#define	_P3_	3
#define	_P4_	4
#define	_P5_	5
#define	_P6_	6
#define	_P7_	7
#define	_P8_	8

#define	_M1_	1
#define	_M2_	2
#define	_M3_	3
#define	_M4_	4

#define	OFF		0
#define	RED		1
#define	GREEN	2
#define	BLUE	3
#define	YELLOW	4
#define	PURPLE	5
#define	CYAN	6
#define	WHITE	7

DLL_API void SetData(const char* data);
DLL_API void GetData(char* data);
DLL_API bool IsPause();
DLL_API void Start();
int main();
DLL_API void Run();
void excute();
void updateTimes();
void delay(unsigned long dt);//延时

/*初始化*/
void E2RCU_Init();

/*执行模块*/
void SetMotor(int which, int speed);//tbh:马达
void Set3CLed(int which,int Color);//tbh:彩灯

/*光电传感器*/
int GetLightSensor(int which);
void SetWaitforDark(int which, int value);
void SetWaitforLight(int which, int value);
void SetWaitforDarker(int which, int value);
void SetWaitforLighter(int which, int value);
int GetRemoIR(int which);//tbh:火焰检测
int GetIRDete(int which);//tbh:红外测障
int GetIRDist(int which);
int GetTrace(int which,int index);
int GetCompoI(int which,int command);

/*触碰传感器*/
int GetTouch(int which);
void SetWaitForPress(int which);
void SetWaitForRelease(int which);
void SetWaitForBump(int which);

/*其他传感器*/
int GetCompassB(int which);
int GetInfrared(int which);
int GetVolume(int which);//tbh:声音传感器

/*内置模块*/
void SetWaitForTime(float s);
unsigned int GetSysTime();

//tbh:显示模块
void SetLCDChar(unsigned char lx);//tbh:字符型数据显示
void SetLCDInt(unsigned int lx);//tbh:整型数据显示
void SetLCDDouble(double lx);//tbh:浮点数据显示

//tbh:现成模块
void GoLine(//tbh:走线
	int leftMotor,//左马达端口
	int rightMotor, //右马达端口
	int trace,//寻机卡端口
	unsigned int count);//横线数,寻机卡读到的横线数超过count时,则停止并跳出函数
void GoLineForRight(//tbh:走线数右线
	int leftMotor,//左马达端口
	int rightMotor, //右马达端口
	int trace,//寻机卡端口
	unsigned int count);//右线数,寻机卡最右位置读到的黑线数超过count时,则停止并跳出函数
void GoLineForLeft(//tbh:走线数左线
	int leftMotor,//左马达端口
	int rightMotor, //右马达端口
	int trace,//寻机卡端口
	unsigned int count);//左线数,寻机卡最左位置读到的黑线数超过count时,则停止并跳出函数
void TurnLeft(//tbh:左转
	int leftMotor,//左马达端口
	int rightMotor, //右马达端口
	int compass, //指南针端口
	unsigned int angle);//指南针的读数小于angle时,则停止并跳出函数
void TurnRight(//tbh:右转
	int leftMotor,//左马达端口
	int rightMotor, //右马达端口
	int compass, //指南针端口
	unsigned int angle);//指南针的读数大于angle时,则停止并跳出函数
void Go(//tbh:直走
	int leftMotor,//左马达端口
	int rightMotor, //右马达端口
	int ray, //红外测距端口
	unsigned int distance);//红外测距的读数小于distance时,则停止并跳出函数
void Back(//tbh:后退
	int leftMotor,//左马达端口
	int rightMotor, //右马达端口
	int ray, //红外测距端口
	unsigned int distance);//红外测距的读数大于distance时,则停止并跳出函数
