예제 #1
0
/*******************************************************************************
Func:写内容到指定页
Date:2014-7-27
Note:返回该页写完的剩余量
*******************************************************************************/
TQFS_Error TQFS_WritePageContext(TQFS_Open_File *Open_File,uint8 *Buffer,uint16 Length)
{
	File_Infor TempFile;
	int OviLenth;
	uint16 Offset=0;
  OviLenth=(Open_File->OffsetCursor+Length);
	OviLenth-=NAND_PAGE_SIZE;//写不下的长度
	if(OviLenth>=0)//当前页不够
	{
		Nand_WritePage(Nand_Infor.FileStartPage+Open_File->PageCursor,&Buffer[Offset],Open_File->OffsetCursor+NAND_SPARE_SIZE,Length-OviLenth);
		Offset=Length-OviLenth;
		Open_File->OffsetCursor=0;
		Read_FileInfor(Open_File->PageCursor,&TempFile);
		TempFile.NextPageAddr=TQFS_FindKeyPageMark(FT_NotUsed,FT_FileCenter);
		DeBug("TempFile.NextPageAddrTempFile.NextPageAddr%x",TempFile.NextPageAddr,Infor_Infor);
		if(TempFile.NextPageAddr==0xffffffff)
		{
			DeBug("Page after use All",Infor_Infor);
			return TE_NoNextPage;
		}
		TempFile.Page_Status=PS_UsedFully;//标记页被使用完
		Write_FileInfor(Open_File->PageCursor,&TempFile);//在当前页写入下页地址
		Open_File->PageCursor=TempFile.NextPageAddr;
	  TempFile.Page_Status=PS_NotFully;
		TempFile.PreviousPageAddr=Open_File->PageCursor;
		TempFile.NextPageAddr=0xffffffff;
		TempFile.FileIndex++;
		Write_FileInfor(Open_File->PageCursor,&TempFile);//在当前页写入下页地址
		Length=OviLenth;		
	}
		Nand_WritePage(Nand_Infor.FileStartPage+Open_File->PageCursor,&Buffer[Offset],Open_File->OffsetCursor+NAND_SPARE_SIZE,Length);
		Open_File->OffsetCursor+=Length;
	if(OviLenth>=0)return TE_NewPage;
	else return TE_CurrentPage;
}
예제 #2
0
void Task_UpConfig(void *Tags)
{
	uint16 i=0;
	uint8 sta,length;
	uint8 Buf[USART_RX_BUFFER_SIZE],Data[USART_RX_BUFFER_SIZE];
	UIShowValue.RSSI=99;
	UIShowValue.UpgradePogress=0;
	sta=QuectelM26_Init();
	if(sta)DeBug("初始化失败[%d]",sta,Infor_Warning);
	sta=UpgradeServer_Connect();
	if(sta)DeBug("连接服务器[%d]",sta,Infor_Warning);
	DeBug("上传配置",Infor_Warning);
	while(1)
	{
		Buf[0]=23;
		i=0;
		while(1)
		{
			length=UpConfig_Create(&Data[0],100,i);
			while(1)
			{
			Tos_TaskDelay(1000);
			if(!UpgradeServer_Read(&Buf[0],0x0002,UCG_SendBinCFG,&Data[0],length))break;
			UIShowValue.UpgradePogress=(uint16)i*100/(sizeof(UIShowValue.SaveValue)/100);
			Tos_TaskDelay(1000);
			}
			i++;
			if(length==0)break;
		}
		QuectelM26Printf_Bytes("SaveData:",&((uint8 *)&UIShowValue.SaveValue)[0],sizeof(UIShowValue.SaveValue));
		GPRS_CloseNet();
		BEEP_Double();
		DeBug("上传配置完毕",Infor_Warning);return;
	}
}
예제 #3
0
void Task_Upgrade(void *Tags)
{
	uint16 i=0;
	uint8 sta;
	uint8 Buf[USART_RX_BUFFER_SIZE],Data[]={0x01,15};
	UIShowValue.RSSI=99;
	UIShowValue.UpgradePogress=0;
	sta=QuectelM26_Init();
	if(sta)DeBug("初始化失败[%d]",sta,Infor_Warning);
	sta=UpgradeServer_Connect();
	if(sta)DeBug("连接服务器[%d]",sta,Infor_Warning);
	DeBug("应用升级",Infor_Warning);
	while(1)
	{
		Buf[0]=23;
		if(!UpgradeServer_Read(&Buf[0],0x0002,UGC_SetBinFile,&Data[0],2))
		{
			while(1)
			{
				if(!UpgradeServer_Read(&Buf[0],i,UGC_ReadBinFile,&Data[0],0))
				{
					i++;
					W25Q16_Write(i*271,&Buf[5],271);
					DeBug("写入nand[%d]",i*271,Infor_Warning);
				}
				Tos_TaskDelay(20000);
			}
		};
	//	W25Q16_Write(0x3432,&Buf[0],100);
		Buf[0]=0;
		//W25Q16_Read(0x3432,&Buf[0],100);
		//DeBug("读取数据[%d]",Buf[0],Infor_Warning);
		Tos_TaskDelay(20000);
	}
}
예제 #4
0
void _CAN_SendMsg(uint8 *Buf,uint8 Length)
{
	static uint8 TestValue;
	u8 TransmitMailbox=0,i=0;
	CanTxMsg  TxMessage;
	CanRxMsg  RxMessage;
	TxMessage.StdId=0x00;//接收板地址
	TxMessage.RTR=CAN_RTR_DATA;//发送数据帧
	TxMessage.IDE=CAN_ID_STD;
	TxMessage.DLC=2;//发送数据的长度
	TxMessage.Data[0]=TestValue;
	TxMessage.Data[1]=0xFE;
	TransmitMailbox=CAN_Transmit(CAN1,&TxMessage);
	while((CAN_TransmitStatus(CAN1,TransmitMailbox)!=CANTXOK)&&(i!=0xff))
	{
	i++;
	}
	if(i==0xff)DeBug("Can Send TimeOut2",Infor_Infor);
	CAN_Receive(CAN1, CAN_FIFO0, &RxMessage);
	if(RxMessage.Data[0]==TestValue%0xff)
	{
		DeBug("Can_PoolBack_Ok TestValue=%d",TestValue,Infor_Infor);
	}
	TestValue++;
}
예제 #5
0
void kbd_test_cb(GtkWidget *widget, GdkEventKey *event, gpointer user_data)
{
	int fn_ser = 75;	// Fn key position
	DeBug(printf("key name: %s\n", gdk_keyval_name(event->keyval)))
	DeBug(printf("hw_keycode: %d\n", event->hardware_keycode))
	DeBug(printf("keycode[%d]: %d\n", idx, keycode[idx]))

	gdk_color_parse("#CD9B1D", &btn_pressed_color);


	if (idx < SUM_KEY) {
		if (event->hardware_keycode == keycode[idx]) {
			if (event->type == GDK_KEY_PRESS) {
				gtk_widget_modify_bg (button[idx], GTK_STATE_NORMAL, &btn_pressed_color);
				gtk_widget_modify_bg (button[idx], GTK_STATE_SELECTED, &btn_pressed_color);
				gtk_widget_modify_bg (button[idx], GTK_STATE_PRELIGHT, &btn_pressed_color);
			} else if (event->type == GDK_KEY_RELEASE) {
				gtk_widget_modify_bg (button[idx], GTK_STATE_NORMAL, &btn_passed_color);
				gtk_widget_modify_bg (button[idx], GTK_STATE_SELECTED, &btn_passed_color);
				gtk_widget_modify_bg (button[idx], GTK_STATE_PRELIGHT, &btn_passed_color);
				if (idx == fn_ser) {
					gtk_widget_modify_bg (button[idx + 2], GTK_STATE_NORMAL, &btn_guide_color);
					gtk_widget_modify_bg (button[idx + 2], GTK_STATE_SELECTED, &btn_guide_color);
					gtk_widget_modify_bg (button[idx + 2], GTK_STATE_PRELIGHT, &btn_guide_color);
					idx += 2;
				} else {
					if (idx != SUM_KEY - 1) {
						gtk_widget_modify_bg (button[idx + 1], GTK_STATE_NORMAL, &btn_guide_color);
						gtk_widget_modify_bg (button[idx + 1], GTK_STATE_SELECTED, &btn_guide_color);
						gtk_widget_modify_bg (button[idx + 1], GTK_STATE_PRELIGHT, &btn_guide_color);
					}
					idx += 1;
				}
			} else {
				;
			}
//		} else {
//			printf("else\n");
		}
	} else {
		kbd_result = 0;
		g_usleep(1000000);
		gtk_widget_destroy(widget);
		gtk_main_quit();
		return;
	}
	printf("\n");

	if (idx >= SUM_KEY) {
		gtk_label_set_text(GTK_LABEL(label), "键盘测试完毕,请按任意键退出。");
	}

	return;
}
예제 #6
0
파일: Tos.c 프로젝트: tongjingyu/Prj
/********************************************************************************
 Func: 系统节拍处理
 Time: 20014-2-2
 Ver.: V4.0
 Note; 本方法处理系统节拍中断
********************************************************************************/
void Tos_SysTick()
 {
	  Tos_ComputeCPURate();//定时器扫描
		Tos_TaskReady();//任务就绪
	 	if(Tos_CPUInfor.RunStatus==_TTS_Error){DeBug( "Task TimeOut Will TOS Reset" ,Infor_Infor);MCU_Reset();}//系统有任务运行超时自动复位
		if(Tos_Timer_P)Tos_TimerReady();//节约一点是一点
 }
예제 #7
0
void CAN_Filter_Configs(uint16 LocalAddr,BOOL Host)
{
	if(Host)
	{
	CAN_FilterInitTypeDef  CAN_FilterInitStructure;
		DeBug("Configs Filter For Master",Infor_Infor);
	CAN_FilterInitStructure.CAN_FilterNumber=0;	 
	CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;	 // 标识符屏蔽位模式
	CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;   // 32位过滤器
	CAN_FilterInitStructure.CAN_FilterIdHigh=0x00;			// id高位包含
	CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;		// 过滤器屏蔽标识符
	CAN_FilterInitStructure.CAN_FilterIdLow=(uint16)(CAN_GROUP<<3)|CAN_RTR_DATA|CAN_ID_EXT;;		//id低位包含		
	CAN_FilterInitStructure.CAN_FilterMaskIdLow=0xffff;
	CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_FIFO0;	 // FIFO0指向过滤器
	CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;
	CAN_FilterInit(&CAN_FilterInitStructure);
	}
	else
	{
		
	CAN_FilterInitTypeDef  CAN_FilterInitStructure;
		DeBug("Configs Filter For Slave Addr=0x%x",LocalAddr,Infor_Infor);
	CAN_FilterInitStructure.CAN_FilterNumber=0;	 
	CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;	 // 标识符屏蔽位模式
	CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;   // 32位过滤器
	CAN_FilterInitStructure.CAN_FilterIdHigh=LocalAddr;			
	CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0xffff;		// 掩码
	
	CAN_FilterInitStructure.CAN_FilterIdLow=(uint16)(CAN_GROUP<<3)|CAN_RTR_DATA|CAN_ID_EXT;		//id低位包含		
	CAN_FilterInitStructure.CAN_FilterMaskIdLow=0xffff;   //掩码
	CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_FIFO0;	 // FIFO0指向过滤器
	CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;
	CAN_FilterInit(&CAN_FilterInitStructure);
	
	CAN_FilterInitStructure.CAN_FilterNumber=1;	 
	CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;	 // 标识符屏蔽位模式
	CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;   // 32位过滤器
	CAN_FilterInitStructure.CAN_FilterIdHigh=0xffff;			// 设备可以接到广播地址
	CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0xffff;		// 掩码
	
	CAN_FilterInitStructure.CAN_FilterIdLow=(uint16)(CAN_GROUP<<3)|CAN_RTR_DATA|CAN_ID_EXT;		//id低位包含		
	CAN_FilterInitStructure.CAN_FilterMaskIdLow=0xffff;   //掩码
	CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_FIFO0;	 // FIFO0指向过滤器
	CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;
	CAN_FilterInit(&CAN_FilterInitStructure);
	}
}
예제 #8
0
void DeviceList_Printf()
{
uint8 i;
	for(i=0;i<Tos_DeviceTotal;i++)
	{
		if(Tos_Device_Tab[i].DeviceName!=Null)
		{
			switch(Tos_Device_Tab[i].DeviceVirtue)
				{
					case DV_Array:DeBug("Device[%d]Name:%s[%d]",i,Tos_Device_Tab[i].DeviceName,Tos_Device_Tab[i].Note,Infor_Infor);break;
					case DV_Task:DeBug("Device[%d]Name:%s",i,Tos_Device_Tab[i].DeviceName,Infor_Infor);break;
					case DV_IOList:DeBug("Device[%d]Name:%s",i,Tos_Device_Tab[i].DeviceName,Infor_Infor);break;
					case DV_TaskValue:DeBug("Device[%d]Name:%s",i,Tos_Device_Tab[i].DeviceName,Infor_Infor);break;
					default:DeBug("Device[%d]Name:%s",i,Tos_Device_Tab[i].DeviceName,Infor_Infor);break;
				}
		}
	}
}
예제 #9
0
/*******************************************************************************
Func:在某某页创建文件空间
Date:2014-7-27
Note:Page为相对位置即认为文件存储区首页为第一页
*******************************************************************************/
uint32 TQFS_CreateFileRoom(TQFS_Open_File *Open_File,uint32 Page,File_Infor *FI)
{
	FI->FileID=Page;
	FI->FileIndex=0;
	DeBug("Create Object File In Page[%d]",Page,Infor_Infor);
	Write_FileInfor(Page,FI);
	TQFS_SetCursor(Open_File,Page,0);
	return 0;
}
예제 #10
0
/*************************************************************
Func:  按下超时事件
Date:  2014 端午节
Note:  测试
*************************************************************/
void Touch_DownDelayEvent()
{
	if(Touch_Event.Down_Event)
	{
#ifdef COMPILE_MODE_DEBUG
		DeBug("TOUCH_EVENT_DOWN",Infor_Infor);
#endif
		Touch_Event.Down_Event=Null;
	}
}
예제 #11
0
/*************************************************************
Func:  松开超时事件
Date:  2014 端午节
Note:  测试
*************************************************************/
void Touch_UpDelayEvent()
{
	if(Touch_Event.Up_Event)
	{
#ifdef COMPILE_MODE_DEBUG
		DeBug("TOUCH_EVENT_UP",Infor_Infor); 
#endif
		Touch_Event.Up_Event=Null;
	}
}
예제 #12
0
u8 UpgradeServer_Read(uint8 *ReBuf,uint16 Addr,uint8 Cmd,uint8 *Data,uint16 Length)
{
	uint8 Buf[300];
	BufferFill(USART_RX_Buffer[1],0x00,USART_RX_BUFFER_SIZE);
	BufferFill(&ReBuf[0],0x00,USART_RX_BUFFER_SIZE);
	Length=ZBUS_SendMsg(&Buf[0],Addr,Cmd,&Data[0],Length);
	USART_WriteLine(USART2,"AT+QISEND=%d\r\n",Length);
	if(!GPRS_Ack(">",2000))return 1;
	USART_WriteDatas(USART2,&Buf[0],Length);
	if(!GPRS_Ack("SEND OK",1000))return 2;
	Length=USART_ReadDatas(USART2,&ReBuf[0],USART_RX_BUFFER_SIZE,2000);
	if(Length)
	{
		if(ZBUS_CheckCrc(USART_RX_Buffer[1]))
		{
			QuectelM26Printf_Bytes("R:",USART_RX_Buffer[1],Length);
			return 0;
		}else DeBug("校验失败",Infor_Warning);
	}
	DeBug("返回超时",Infor_Warning);
	return 3;
}
예제 #13
0
/*************************************************************
Func:  CAN 发送消息
Date:  2014-8-26
Note:  
*************************************************************/
void CAN_SendMsg(void *Msg,uint8 Length)
{
	static uint8 TestValue='0';
	uint16 TransmitMailbox=0,i=0;
	CanTxMsg  TxMessage;
	TxMessage.ExtId=0x11<<13;//接收板地址
	TxMessage.RTR=CAN_RTR_DATA;//发送数据帧
	TxMessage.IDE=CAN_ID_EXT;
	TxMessage.DLC=Length+1;//发送数据的长度
	BufferCoppy(Msg,&TxMessage.Data[0],Length);
	TxMessage.Data[Length]=TestValue;
	TransmitMailbox=CAN_Transmit(CAN1,&TxMessage);
	while((CAN_TransmitStatus(CAN1,TransmitMailbox)!=CANTXOK)&&(i!=0xff)) 
	{
	i++;
		Tos_TaskDelay(1);
	}
	if(i==0xff)DeBug("Can Send TimeOut1",Infor_Infor);
	else DeBug("Can Send Succeed1",Infor_Infor);
	if(TestValue<'9')TestValue++;
	else TestValue='0';
}
예제 #14
0
uint8 UpConfig_Create(uint8 *Buf,uint16 Space,uint16 index)
{
	uint16 Length,i;
	uint16 SpaceSize=Space;
	Length=sizeof(UIShowValue.SaveValue);
	i=(Length-index*SpaceSize)/SpaceSize;//剩余包数包含当前包
	if(Length<=index*SpaceSize){SpaceSize=0;goto OK;}//剩余长度不够
  if(i==0){SpaceSize=Length-index*SpaceSize;goto OK;}//剩余半包
OK:
	i=0;
	i+=BufferCoppy(&((uint8 *)&UIShowValue.SaveValue)[index*Space],&Buf[i],SpaceSize);
	DeBug("数据长度[%d]",i,Infor_Warning);
	return i;
}
예제 #15
0
void Task_DownTextConfig(void *Tags)
{
	uint16 i=0;
	uint8 sta,maxpog;
	uint8 Buf[USART_RX_BUFFER_SIZE],Data[]={0x01,15};
	UIShowValue.RSSI=99;
	UIShowValue.UpgradePogress=0;
	sta=QuectelM26_Init();
	if(sta)DeBug("初始化失败[%d]",sta,Infor_Warning);
	sta=UpgradeServer_Connect();
	if(sta)DeBug("连接服务器[%d]",sta,Infor_Warning);
	DeBug("更新配置",Infor_Warning);
	while(1)
	{
		Buf[0]=23;
		i=0;
		if(!UpgradeServer_Read(&Buf[0],0x0000,UCG_GetDateTime,&Data[0],0))
		{
			UIShowValue.DateTime.Year=Buf[5];
			UIShowValue.DateTime.Mon=Buf[6];
			UIShowValue.DateTime.Day=Buf[7];
			UIShowValue.DateTime.Hour=Buf[8];
			UIShowValue.DateTime.Min=Buf[9];
			UIShowValue.DateTime.Sec=Buf[10];
			UIShowValue.DateTime.Week=Buf[11];
			ISL1208_SetDateTime(&UIShowValue.DateTime);	
			DeBug("同步时间完毕",Infor_Warning);;
		}
		if(!UpgradeServer_Read(&Buf[0],0x0001,UGC_SetTextFile,&Data[0],2))
		{
			Tos_TaskDelay(2000);
			if(!UpgradeServer_Read(&Buf[0],0x0001,UGC_GetTextFileInfor,0,0))
			{
				maxpog=Buf[5];
				while(1)
			{
				if(!UpgradeServer_Read(&Buf[0],i,UGC_ReadTextFile,&Data[0],0))
				{
					i++;
					UIShowValue.UpgradePogress=(uint16)i*100/maxpog;
					DeBug("ReadLine[%d]:%s",i,&Buf[5],Infor_Warning);
					if(i>=maxpog)
					{
						GPRS_CloseNet();
						BEEP_Double();
						DeBug("更新配置完毕",Infor_Warning);return;
					}
				}
				Tos_TaskDelay(100);
			}
			}
		}
		Buf[0]=0;
		Tos_TaskDelay(40000);
	}
}
예제 #16
0
void TaskReadADC(void *Tags)
{
	int16 ADC;
	IniCS1168();
	//AD7705_Init(1);
	Tos_TaskCreate(2,Sensor_Command,(uintbus)&ADC,"Sensor_Command",1000);
	while(1)
	{
		Tos_TaskDelay(500);
		ADC=CS1168_ReadADC();
		//ADC=AD7705_ReadFitel();
		DeBug("CS1180_ADC1=%x",GetLockCode(),Infor_Infor);
		
	}
}
예제 #17
0
void Task_CAN_SIGMY(void *Tags)
{
	uint8 Data[10];
	uint16 Temp;
	CAN_SIG_Init();
	CAN_SIG_Filter_Configs();
	while(1)
	{		
		LED3_ON;
		//Uint32ToByte(&Data[0],SIG_GetUint32());
		BufferCoppy(&ADC_Buffer[0],&Data[0],2);
		CAN_SIG_SendMsg(&Data[0],0x7C0);
		Temp=Data[1];
		Temp<<=8;
		Temp|=Data[0];
		DeBug("%d",Temp);
		Tos_TaskDelay(250);
		LED3_OFF;
		Tos_TaskDelay(250);
	}
}
예제 #18
0
/**************************************************************************************
 Func: 触摸屏校准
 Time: 2014-6-18
 Ver.: V1.0
 Note;
**************************************************************************************/
void TouchScreen_Correct()
{
	uint8 TOUCH_Index=0;
	if(Cheak_Correct()){
#ifdef COMPILE_MODE_DEBUG
	DeBug("Load Touch Configs Ok!",Infor_Infor);
#endif
		return;}
	LCD_Clear_Screen(Color_Black);
	TOUCH_Correct_TaskID=Tos_TaskCurrent;
	TOUCH_DrawRound(TOUCH_Index);
	DeBug_Get();
	while(TOUCH_Index<5)
	{
		TOUCH_DrawRound(TOUCH_Index);
		TouchScreen_GetTouch(TOUCH_Index);
		Draw_Cross(TOUCH_CROSS_ADDR[TOUCH_Index][0],TOUCH_CROSS_ADDR[TOUCH_Index][1],5,Color_White,TOUCH_Index);
		TOUCH_Index++;
	}
	if(Cheak_Correct())Save_Touch_Configs();
	DeBug_Drop();
}
예제 #19
0
/*******************************************************************************
Func各设备初始化及设备注册
Date:2014-5-22
Note:设备在注册登记后需要对设备列表里的设备进行初始化
*******************************************************************************/
void Device_Init()
{
	uint8 i;
typedef   void 					(*FuncTaskTags)(void);
typedef   void 					(*FuncArrayTags)(uint8 ID);
typedef   void 					(*FuncIOListTags)(const GPIO_InitStruct *List);
typedef   void 					(*FuncValueTags)(void *);
	DeBug("Tos Device Init..........",Infor_Infor);
	for(i=0;i<Tos_DeviceTotal;i++)
	{
			if(Tos_Device_Tab[i].Init)
			{
				switch(Tos_Device_Tab[i].DeviceVirtue)
				{
					case DV_Array:((FuncArrayTags)(Tos_Device_Tab[i].Init))(Tos_Device_Tab[i].Note);break;
					case DV_Task:((FuncTaskTags)Tos_Device_Tab[i].Init)();break;
					case DV_IOList:((FuncIOListTags)Tos_Device_Tab[i].Init)((const GPIO_InitStruct *)Tos_Device_Tab[i].Note);break;
					case DV_TaskValue:((FuncValueTags)Tos_Device_Tab[i].Init)((void *)Tos_Device_Tab[i].Note);break;
				}
			}
	}
}
예제 #20
0
void query_buf_and_mmap()
{
	buffers = (buffer*)calloc(reqbuf_count, sizeof(*buffers));
	if(!buffers) {
		// Error handler
	}

	int i = 0;
	struct v4l2_buffer buf;

	for(i = 0; i < reqbuf_count; ++i) {
		CLEAR (buf);

		buf.type   = V4L2_BUF_TYPE_VIDEO_CAPTURE;
		buf.memory = V4L2_MEMORY_MMAP;
		buf.index  = i;

		if(-1 == xioctl(fd, VIDIOC_QUERYBUF, &buf)) {
			fprintf(stderr, "query buf error\n");
			// Error handler
		}
		DeBug(printf("buffer length: %d\nbuffer offset: %d\n", buf.length, buf.m.offset))

		buffers[i].length = buf.length;
		buffers[i].start = mmap(NULL,
								buf.length,
								PROT_READ|PROT_WRITE,
								MAP_SHARED,
								fd,
								buf.m.offset);

		if(MAP_FAILED == buffers[i].start) {
		// Error handler
		}
	}
}
예제 #21
0
파일: App_Sensor.c 프로젝트: tongjingyu/Prj
void Sensor_Command(void *Tags)
{
	uint16 Length;
	uint8 Buf[200],DataStart;
	ModBus_Message ModBusMsg;
	USART_TypeDef *USARTx=(USART_TypeDef *)Tags;
	uint8 UsartCH=USART_GetIndex(USARTx);
	ModBus_Create(&ModBusMsg,0x01,0x05,WorkMode_Slave,MBCM_Crc);
	while(1)
	{
	//	DeBug_Drop();
		ClearWithBuffer(USART_RX_Buffer[0],50);
		Length=USART_ReadDatas(USARTx,Null,50,0);
	//	DeBug_Get();
		Length=ModBus_Expend(USART_RX_Buffer[0],Length,&ModBusMsg);
		DataStart=Length;
		if(ModBusMsg.ErrorFlag==ModBus_Ok)
		{
			switch(ModBusMsg.MsgFlag)
			{
				case SCFF_GetHandVersion:
						 Length=StringCoppy(SensorHandVersion,&Buf[0]);
						 break;
				case SCFF_GetSoftVersion:
						 Length=StringCoppy(SensorSoftVersion,&Buf[0]);
						 break;
				case SCFF_GetSystemInfor:
						 Length=StringCoppy(SystemInfor,&Buf[0]);
						 break;
				case SCFF_GetProgTime:
						 Length=StringCoppy(__DATE__" - "__TIME__,&Buf[0]);
						 break;
				case SCFF_GetLibVersion:
						 FmtToBuf((char *)&Buf[0],"V %d.%d.%d n",__STM32F10X_STDPERIPH_VERSION_MAIN,__STM32F10X_STDPERIPH_VERSION_SUB1,__STM32F10X_STDPERIPH_VERSION_SUB2);
						 Length=10;
						 break;
				case SCFF_GetSensorModel:
						 Length=StringCoppy(SensorModel,&Buf[0]);
						 break;
				case SCFF_GetSensorName:
						 Length=StringCoppy(SensorName,&Buf[0]);
						 break;
				case SCFF_GoToBootLoader:
					   System_Reset();
						 break;
				case SCFF_GetSensorNote:
						 Length=StringCoppy(SensorDefNote,&Buf[0]);
						 break;
				case SCFF_GetSensorTest:
					   Length=StringCoppy("Hello",&Buf[0]);
						 break;
				case SCFF_GetSensorNumber:
					   Length=StringCoppy(SensorDefNumber,&Buf[0]);
						 break;
				case SCFF_GetCPUModel:
						 Length=StringCoppy(CPU_Model,&Buf[0]);
					   break;
				case SCFF_GetSensorValue:
					   Length=Float32ToByte(&Buf[0],UIShowValue.CH_Value[0]);
						 Length+=Float32ToByte(&Buf[Length],UIShowValue.CH_Value[1]);
						 Length+=Float32ToByte(&Buf[Length],UIShowValue.CH_Value[2]);
						 Buf[Length++]=Tos_CPUInfor.Userate_CPU;
						 break;
				case SCFF_SetDeBugMode:
						 DeBug_SetType(USART_RX_Buffer[0][DataStart]);
						 Length=StringCoppy(String_Ok,&Buf[0]);
						 break;
				case SCFF_SetReg:
						 Ht1621_ShowASCII(USART_RX_Buffer[0][DataStart],USART_RX_Buffer[0][DataStart+1]);
				     Length=StringCoppy(String_Ok,&Buf[0]);
						 break;
				case SCFF_GetAlarmList:			
						 Length=Float32ToByte(&Buf[0],UIShowValue.SaveValue.CH_Limit[USART_RX_Buffer[0][DataStart]].Max);
						 Length+=Float32ToByte(&Buf[Length],UIShowValue.SaveValue.CH_Limit[USART_RX_Buffer[0][DataStart]].Min);				
						 break;
				case SCFF_SetAlarmList:			
						 UIShowValue.SaveValue.CH_Limit[USART_RX_Buffer[0][DataStart]].Max=Float32FromByte(&USART_RX_Buffer[0][DataStart+1]);
						 UIShowValue.SaveValue.CH_Limit[USART_RX_Buffer[0][DataStart]].Min=Float32FromByte(&USART_RX_Buffer[0][DataStart+5]);
						 Length=StringCoppy(String_Ok,&Buf[0]);
						 Task_SaveConfigs();				
						 break;
				case SCFF_GetCallList:
						 Length=BufferCoppy(&UIShowValue.SaveValue.CallNumber[USART_RX_Buffer[0][DataStart]][0],&Buf[0],sizeof(UIShowValue.SaveValue.CallNumber[USART_RX_Buffer[0][DataStart]]));
						 Buf[Length++]=0;
						 break;				
				case SCFF_SetCallList:
						 Length=BufferCoppy(&USART_RX_Buffer[0][DataStart+1],&UIShowValue.SaveValue.CallNumber[USART_RX_Buffer[0][DataStart]][0],sizeof(UIShowValue.SaveValue.CallNumber[USART_RX_Buffer[0][DataStart]]));
						 Length=StringCoppy(String_Ok,&Buf[0]);		
						 Task_SaveConfigs();
						 break;		
				case SCFF_GetLoginHead:
						 Length=BufferCoppy(&UIShowValue.SaveValue.LoginHead[0],&Buf[0],sizeof(UIShowValue.SaveValue.LoginHead));
						 Buf[Length++]=0;
						 break;
				case SCFF_SetLoginHead:
						 Length=BufferCoppy(&USART_RX_Buffer[0][DataStart],&UIShowValue.SaveValue.LoginHead[0],sizeof(UIShowValue.SaveValue.LoginHead));
						 Length=StringCoppy(String_Ok,&Buf[0]);		
						 break;
				case SCFF_PrintHistory:
						Task_PrintfHistory();
						 Length=0xffff;
						 break;
				case SCFF_CleanHistory:
						 Task_CleanHistory();
						 MCU_Reset();
						 Length=0;
						 break;
				case SCFF_SetDateTime:
						UIShowValue.DateTime.Year=USART_RX_Buffer[0][DataStart];
						UIShowValue.DateTime.Mon=USART_RX_Buffer[0][DataStart+1];
						UIShowValue.DateTime.Day=USART_RX_Buffer[0][DataStart+2];
						UIShowValue.DateTime.Hour=USART_RX_Buffer[0][DataStart+3];
						UIShowValue.DateTime.Min=USART_RX_Buffer[0][DataStart+4];
						UIShowValue.DateTime.Sec=USART_RX_Buffer[0][DataStart+5];
						UIShowValue.DateTime.Week=USART_RX_Buffer[0][DataStart+6];
						Length=StringCoppy(String_Ok,&Buf[0]);		
				 	  ISL1208_SetDateTime(&UIShowValue.DateTime);	
						 break;
				case SCFF_COMMenuList:
						 switch(USART_RX_Buffer[0][DataStart])
										{
											case 0x01:COM_Menu_Enter(USART_RX_Buffer[0][DataStart+1],&USART_RX_Buffer[0][DataStart+2]);
													 Length=COM_Menu_Load(USART_RX_Buffer[0][DataStart+1],&Buf[0]);											
														break;
											case 0x02:Length=COM_Menu_Load(USART_RX_Buffer[0][DataStart+1],&Buf[0]);break;
											default:break;
										}
						 break;
				default: Length=StringCoppy("Null",&Buf[0]);
						 break;
			}
			if(Length!=0xffff)
			{
				ModBus_Create(&ModBusMsg,USART_RX_Buffer[0][2],0x05,WorkMode_Slave,MBCM_Crc);
				Length=ModBus_CreateMsg(USART_TX_Buffer[0],&ModBusMsg,0x01,0x01,0x01,&Buf[0],Length);
				USART_WriteDatas(USART1,USART_TX_Buffer[0],Length);
			}
		
		}else if(ModBusMsg.ErrorFlag==ModBus_Broad)
		{
			
		}
		else if(ModBusMsg.ErrorFlag==ModBus_FlagError)
		{
			DeBug("%s",USART_RX_Buffer[0],Infor_Error);
		}else DeBug("%d",ModBusMsg.ErrorFlag,Infor_Infor);
	}
}
예제 #22
0
BOOL Cheak_Correct()
{
	uint16 X,Y;
	uint16 Error=0;//容差
#ifdef COMPILE_MODE_DEBUG
	DeBug("Cheak_TouchCorrect:",Infor_Infor);
#endif
	Error+=ABS(TOUCH_CROSS_DATA[1][1]-TOUCH_CROSS_DATA[0][1]);
#ifdef COMPILE_MODE_DEBUG
DeBug("Tolerance=%d",Error,Infor_Infor);
#endif
	Error+=ABS(TOUCH_CROSS_DATA[2][1]-TOUCH_CROSS_DATA[3][1]);
#ifdef COMPILE_MODE_DEBUG
  DeBug("Tolerance=%d",Error,Infor_Infor);
#endif
	Error+=ABS(TOUCH_CROSS_DATA[3][0]-TOUCH_CROSS_DATA[0][0]);
#ifdef COMPILE_MODE_DEBUG
	DeBug("Tolerance=%d",Error,Infor_Infor);
#endif
	Error+=ABS(TOUCH_CROSS_DATA[2][0]-TOUCH_CROSS_DATA[1][0]);
#ifdef COMPILE_MODE_DEBUG
	DeBug("Tolerance=%d",Error,Infor_Infor);
#endif
	if(Error>50){
#ifdef COMPILE_MODE_DEBUG
							DeBug("Correct Fail!",Infor_Infor);
#endif
	return False;}
  Error=ABS(TOUCH_CROSS_DATA[1][0]-TOUCH_CROSS_DATA[0][0]);
#ifdef COMPILE_MODE_DEBUG
	DeBug("Discrete=%d",Error,Infor_Infor);
#endif
	Error+=ABS(TOUCH_CROSS_DATA[2][0]-TOUCH_CROSS_DATA[3][0]);
#ifdef COMPILE_MODE_DEBUG
	DeBug("Discrete=%d",Error,Infor_Infor);
#endif
	Error+=ABS(TOUCH_CROSS_DATA[3][1]-TOUCH_CROSS_DATA[0][1]);
#ifdef COMPILE_MODE_DEBUG
	DeBug("Discrete=%d",Error,Infor_Infor);
#endif
	Error+=ABS(TOUCH_CROSS_DATA[2][1]-TOUCH_CROSS_DATA[1][1]);
#ifdef COMPILE_MODE_DEBUG
	DeBug("Discrete=%d",Error,Infor_Infor);
#endif
  if(Error<1000){
#ifdef COMPILE_MODE_DEBUG
	DeBug("Correct Fail!",Infor_Infor);
#endif
	return False;}
	X=Opera_WhithADC(TOUCH_CROSS_DATA[4][0],TOUCH_CROSS_DATA[0][0],TOUCH_CROSS_ADDR[0][0],TOUCH_CROSS_DATA[1][0],TOUCH_CROSS_ADDR[1][0],LCD_XMAX);
	Y=Opera_WhithADC(TOUCH_CROSS_DATA[4][1],TOUCH_CROSS_DATA[0][1],TOUCH_CROSS_ADDR[0][1],TOUCH_CROSS_DATA[3][1],TOUCH_CROSS_ADDR[3][1],LCD_YMAX);
	DeBug("X=%d  Y=%d",X,Y,Infor_Infor);
	return True;
}
예제 #23
0
/*************************************************************
Func:  触摸屏监视任务
Date:  2014 端午节
Note:  测试
*************************************************************/
void Task_GetTouch(void *Tags)
{
  uint32 Temp_ADC1,Temp_ADC2,Temp_ADC11;
	TGUI_TouchMsg  TouchMsg;
	TOUCH_Tos_TaskID=Tos_TaskCurrent;
	ADC_WatchdogConfig();
	while(1)
	{
		
		Tos_TaskDelay(30); 
		Touch_ADCX_Config();
		Tos_TaskDelay(10);
		Temp_ADC11=AvrFilter_ByWords((uint16 *)&TOUCH_ADC_Value[0][1],TOUCH_ADC_BUFSize,TOUCH_ADC_BUFSize);
		if(Temp_ADC11>100)
		{
			Tos_TaskDelay(10); 
			Temp_ADC1=AvrFilter_ByWords((uint16 *)&TOUCH_ADC_Value[0][1],TOUCH_ADC_BUFSize,TOUCH_ADC_BUFSize);
			Touch_ADCY_Config();
			Tos_TaskDelay(10); 
			Temp_ADC2=AvrFilter_ByWords((uint16 *)&TOUCH_ADC_Value[0][0],TOUCH_ADC_BUFSize,TOUCH_ADC_BUFSize);
			if(__fabs(Temp_ADC11-Temp_ADC1)<20&Temp_ADC2>400)//消抖
			{
			  TOUCH_ADC_YValue=Temp_ADC2; 
				TOUCH_ADC_XValue=Temp_ADC1;
				if(Touch_Update==TOUCH_DOWNING){Touch_Update=TOUCH_DOWN;}
				if(Touch_Update!=TOUCH_DOWN)
					{
					Touch_Update=TOUCH_DOWNING;
						Touch_Event.DownIng_Event=Touch_DownIngEvent;//事件测试
						Touch_Event.Down_Event=Touch_DownDelayEvent;//事件测试
					if(Touch_Event.DownIng_Event)Touch_Event.DownIng_Event();//当存在按下事件时触发
						Touch_Event.UpIng_Event=Touch_UpIngEvent;//////事件测试
					Touch_Event.DownDelay_Count=0;
					}	
				if(Touch_Update==TOUCH_DOWN)
					{
						if(Touch_Event.DownDelay_Count<TOUCH_DOWNDELAYCOUNT)
						{
							Touch_Event.DownDelay_Count++;
						}else if(Touch_Event.Down_Event)Touch_Event.Down_Event();//当存在持续按下事件时触发
					}
				
				TOUCH_XValue=Opera_WhithADC(TOUCH_ADC_XValue,TOUCH_CROSS_DATA[0][0],TOUCH_CROSS_ADDR[0][0],TOUCH_CROSS_DATA[1][0],TOUCH_CROSS_ADDR[1][0],LCD_XMAX);
	      TOUCH_YValue=Opera_WhithADC(TOUCH_ADC_YValue,TOUCH_CROSS_DATA[0][1],TOUCH_CROSS_ADDR[0][1],TOUCH_CROSS_DATA[3][1],TOUCH_CROSS_ADDR[3][1],LCD_YMAX);	
#ifdef COMPILE_MODE_DEBUG
			  DeBug("X=%d Y=%d",TOUCH_ADC_XValue,TOUCH_ADC_YValue,Infor_Infor);
#endif
				TouchMsg.TouchValueX=TOUCH_XValue;
				TouchMsg.TouchValueY=TOUCH_YValue;
				TouchMsg.TouchType=Touch_Update;
				TouchMsg.TouchTime=0;	
				if(Touch_Update==TOUCH_DOWN)TouchMsg.TouchTime=Touch_Event.DownDelay_Count;
				if(Touch_Update==TOUCH_UP)TouchMsg.TouchTime=Touch_Event.UpDelay_Count;
				Tos_TaskPutQmsg(Touch_Screen_UserTaskID,TGUI_MsgType_TouchScreen,sizeof(TGUI_TouchMsg),&TouchMsg);
		}
	}else
	{
		if(Touch_Update==TOUCH_UPING){Touch_Update=TOUCH_UP;}
		if(Touch_Update!=TOUCH_UP)//触摸屏第一次按下触发
			{
			Touch_Update=TOUCH_UPING;	
			if(Touch_Event.UpIng_Event)Touch_Event.UpIng_Event();//当存在放下动作时触发
			Touch_Event.UpDelay_Count=0;//按下第一次时清除按下时间计数
			Touch_Event.Up_Event=Touch_UpDelayEvent;//////事件测试
			}
		if(Touch_Update==TOUCH_UP)//触摸屏一直按下
		{
			if(Touch_Event.UpDelay_Count<TOUCH_UPDELAYCOUNT)
			{
			
				Touch_Event.UpDelay_Count++;
			}else if(Touch_Event.Up_Event)Touch_Event.Up_Event();//当存在持续未按下触发
		}
	}
	} 
}
예제 #24
0
void Task_DownConfig(void *Tags)
{
	uint16 i=0,Length,c=0;
	uint8 sta;
	uint8 Buf[USART_RX_BUFFER_SIZE],Data[]={0x00,100},WR[sizeof(UIShowValue.SaveValue)];
	UIShowValue.RSSI=99;
	UIShowValue.UpgradePogress=0;
	sta=QuectelM26_Init();
	if(sta)DeBug("初始化失败[%d]",sta,Infor_Warning);
	sta=UpgradeServer_Connect();
	if(sta)DeBug("连接服务器[%d]",sta,Infor_Warning);
	DeBug("自动配置",Infor_Warning);
	while(1)
	{
		if(!UpgradeServer_Read(&Buf[0],0x0000,UCG_GetDateTime,&Data[0],0))
		{
			UIShowValue.DateTime.Year=Buf[5];
			UIShowValue.DateTime.Mon=Buf[6];
			UIShowValue.DateTime.Day=Buf[7];
			UIShowValue.DateTime.Hour=Buf[8];
			UIShowValue.DateTime.Min=Buf[9];
			UIShowValue.DateTime.Sec=Buf[10];
			UIShowValue.DateTime.Week=Buf[11];
			ISL1208_SetDateTime(&UIShowValue.DateTime);	
			DeBug("同步时间完毕",Infor_Warning);;
		}
		if(!UpgradeServer_Read(&Buf[0],0x0001,UCG_SetBinCFGFile,&Data[0],2))
		{
			c=0;
			while(1)
			{
				if(!UpgradeServer_Read(&Buf[0],i,UGC_ReadBinFile,&Data[0],0))
				{
					i++;
					Length=Buf[3];
					Length<<=8;
					Length|=Buf[4];
					if((c+Length)<=sizeof(WR))c+=BufferCoppy(&Buf[5],&WR[c],Length);
					QuectelM26Printf_Bytes("Bin:",&Buf[5],Length);
					UIShowValue.UpgradePogress=(uint16)c*100/sizeof(WR);
					if(Length==0)
					{
						QuectelM26Printf_Bytes("CFG:",&WR[0],c);
						if(c==sizeof(UIShowValue.SaveValue))
						{
							Save_AppConfig(&WR[0],0);
							Task_LoadConfigs();
							DeBug("下载配置完成",Infor_Warning);
						}else DeBug("配置文件长度错误",Infor_Warning);
							GPRS_CloseNet();
							BEEP_Double();
						return;
					}
				}
				Tos_TaskDelay(1000);
			}
		};
	//	W25Q16_Write(0x3432,&Buf[0],100);
		Buf[0]=0;
		//W25Q16_Read(0x3432,&Buf[0],100);
		//DeBug("读取数据[%d]",Buf[0],Infor_Warning);
		Tos_TaskDelay(20000);
	}
}
예제 #25
0
void Task_UpTextConfig(void *Tags)
{
	uint16 i=0,Length;
	uint8 MenuLength;
	const COM_MenuStruct *Menu=MenuList;
	uint8 sta;
	uint8 Buf[USART_RX_BUFFER_SIZE],Data[40];
	UIShowValue.RSSI=99;
	UIShowValue.UpgradePogress=0;
	sta=QuectelM26_Init();
	if(sta)DeBug("初始化失败[%d]",sta,Infor_Warning);
	sta=UpgradeServer_Connect();
	if(sta)DeBug("连接服务器[%d]",sta,Infor_Warning);
	DeBug("更新配置",Infor_Warning);
	while(1)
	{
		i=0;
		if(!UpgradeServer_Read(&Buf[0],0x0000,UCG_GetDateTime,&Data[0],0))
		{
			UIShowValue.DateTime.Year=Buf[5];
			UIShowValue.DateTime.Mon=Buf[6];
			UIShowValue.DateTime.Day=Buf[7];
			UIShowValue.DateTime.Hour=Buf[8];
			UIShowValue.DateTime.Min=Buf[9];
			UIShowValue.DateTime.Sec=Buf[10];
			UIShowValue.DateTime.Week=Buf[11];
			ISL1208_SetDateTime(&UIShowValue.DateTime);	
			DeBug("同步时间完毕",Infor_Warning);
		}
		BEEP_Double();
		
		
Set:
		i=0;
		sta=BufferCoppy((uint8 *)0x1ffff7e8,&Data[0],12);
		Menu=MenuList;
		MenuLength=Menu_OptionLength(Menu);
		if(!UpgradeServer_Read(&Buf[0],0xff00+MenuLength,UCG_SetMenuList,&Data[0],sta))
		while(Menu->Type!=VT_End)
		{
			MUI_GetOptionString((char *)&Data[0],Menu);
			sta=GetTextLength(Data);
			DeBug("上传菜单:%s",&Data[0],Infor_Warning);
			if(!UpgradeServer_Read(&Buf[0],i,UCG_SetMenuList,&Data[0],sta))
			{
				i++;
				UIShowValue.UpgradePogress=i*100/MenuLength;
				Menu++;
			}
			Tos_TaskDelay(10);
		}
		i=0;
		Menu=MenuList;
		sta=Menu_OptionLength(Menu)-2;
		while(1)
		{
			
			if(!UpgradeServer_Read(&Buf[0],i,UCG_CheckNewMenu,&Data[0],0))
			{
				Length=Buf[3];
				Length<<=8;
			  Length|=Buf[4];
				if(Length>0)if(Buf[5]==3)goto Over;
				if(Length>0)if(Buf[5]==2)goto Set;
				if(Length>0)if(Buf[5]==1)
			while(1)
			{
				if(!UpgradeServer_Read(&Buf[0],i,UCG_GetMenuList,&Data[0],0))
				{
						Length=Buf[3];
						Length<<=8;
						Length|=Buf[4];
					if(Length>0)
					{
						COM_Menu_Enter(Buf[1],&Buf[5]);
						DeBug("下载菜单:%s",&Buf[5],Infor_Warning);
					}
					if(i++>=sta){BEEP_Double();Task_SaveConfigs();goto Set;}
					UIShowValue.UpgradePogress=i*100/MenuLength;
			  }
				Tos_TaskDelay(10);
			}
			}
			Tos_TaskDelay(5000);
		}
Over:		
		GPRS_CloseNet();
		BEEP_Double();
		DeBug("更新配置完毕",Infor_Warning);return;
	}
}
예제 #26
0
void Sensor_Command(void *Tags)
{
	uint16 Length;
	uint8 Buf[200],DataStart;
	uint8 Mode_DeBug;
	ModBus_Message ModBusMsg;
	USART_TypeDef *USARTx=(USART_TypeDef *)Tags;
	uint8 UsartCH=USART_GetIndex(USARTx);
	ModBus_Create(&ModBusMsg,0x01,0x05,WorkMode_Slave,MBCM_Crc);
	while(1)
	{
		if(!Mode_DeBug)DeBug_Drop();
		ClearWithBuffer(USART_RX_Buffer[0],50);
		Length=USART_ReadDatas(USARTx,Null,50,0);
		DeBug_Get();
		Length=ModBus_Expend(USART_RX_Buffer[0],Length,&ModBusMsg);
		DataStart=Length;
		if(ModBusMsg.ErrorFlag==ModBus_Ok)
		{
			switch(ModBusMsg.MsgFlag)
			{
				case SCFF_GetHandVersion:
						 Length=StringCoppy(SensorHandVersion,&Buf[0]);
						 break;
				case SCFF_GetSoftVersion:
						 Length=StringCoppy(SensorSoftVersion,&Buf[0]);
						 break;
				case SCFF_GetSystemInfor:
						 Length=StringCoppy(SystemInfor,&Buf[0]);
						 break;
				case SCFF_GetProgTime:
						 Length=StringCoppy(__DATE__" - "__TIME__,&Buf[0]);
						 break;
				case SCFF_GetLibVersion:
						 FmtToBuf((char *)&Buf[0],"V %d.%d.%d n",__STM32F10X_STDPERIPH_VERSION_MAIN,__STM32F10X_STDPERIPH_VERSION_SUB1,__STM32F10X_STDPERIPH_VERSION_SUB2);
						 Length=10;
						 break;
				case SCFF_GetFlashSize:
						 FmtToBuf((char *)&Buf[0],"%dKb",Get_FlashSize());
						 Length=5;
						 break;
				case SCFF_GetSensorModel:
						 Length=StringCoppy(SensorModel,&Buf[0]);
						 break;
				case SCFF_GetSensorName:
						 Length=StringCoppy(SensorName,&Buf[0]);
						 break;
				case SCFF_GetSensorNote:
						 Length=StringCoppy(SensorDefNote,&Buf[0]);
						 break;
				case SCFF_GetSensorTest:
					   Length=StringCoppy("Hello",&Buf[0]);
						 break;
				case SCFF_GetSensorNumber:
					   Length=StringCoppy(SensorDefNumber,&Buf[0]);
						 break;
				case SCFF_GetCPUModel:
						 Length=StringCoppy(CPU_Model,&Buf[0]);
					   break;
				case SCFF_GetSensorValue:
					   Length=Float32ToByte(&Buf[0],UIShowValue.CH_Value[0]);
						 Length+=Float32ToByte(&Buf[Length],UIShowValue.CH_Value[1]);
						 break;
				case SCFF_InDeBug:
					   Mode_DeBug=True;
				     Length=StringCoppy(String_Ok,&Buf[0]);
						 break;
				case SCFF_OutDeBug:
						 Mode_DeBug=False;
				     Length=StringCoppy(String_Ok,&Buf[0]);
						 break;
				case SCFF_SetReg:
						 Ht1621_ShowASCII(USART_RX_Buffer[0][DataStart],USART_RX_Buffer[0][DataStart+1]);
				     Length=StringCoppy(String_Ok,&Buf[0]);
						 break;
				case SCFF_GetAlarmList:			
						 Length=Float32ToByte(&Buf[0],UIShowValue.SaveValue.CH_Limit[USART_RX_Buffer[0][DataStart]].Max);
						 Length+=Float32ToByte(&Buf[Length],UIShowValue.SaveValue.CH_Limit[USART_RX_Buffer[0][DataStart]].Min);				
						 break;
				case SCFF_SetAlarmList:			
						 UIShowValue.SaveValue.CH_Limit[USART_RX_Buffer[0][DataStart]].Max=Float32FromByte(&USART_RX_Buffer[0][DataStart+1]);
						 UIShowValue.SaveValue.CH_Limit[USART_RX_Buffer[0][DataStart]].Min=Float32FromByte(&USART_RX_Buffer[0][DataStart+5]);
						 Length=StringCoppy(String_Ok,&Buf[0]);
						 Task_SaveConfigs();				
						 break;
				case SCFF_GetIpPortList:	
						 Length=IpPortToString(&UIShowValue.SaveValue.IPPort[USART_RX_Buffer[0][DataStart]],&Buf[0]);					
						 break;
				case SCFF_SetIpPortList:	
						 IpPortFromString(&UIShowValue.SaveValue.IPPort[USART_RX_Buffer[0][DataStart]],&USART_RX_Buffer[0][DataStart+1]);	
						 Length=StringCoppy(String_Ok,&Buf[0]);		
						 Task_SaveConfigs();
						 break;
				case SCFF_GetCallList:
						 Length=BufferCoppy(&UIShowValue.SaveValue.CallNumber[USART_RX_Buffer[0][DataStart]][0],&Buf[0],sizeof(UIShowValue.SaveValue.CallNumber[USART_RX_Buffer[0][DataStart]]));
						 Buf[Length++]=0;
						 break;				
				case SCFF_SetCallList:
						 Length=BufferCoppy(&USART_RX_Buffer[0][DataStart+1],&UIShowValue.SaveValue.CallNumber[USART_RX_Buffer[0][DataStart]][0],sizeof(UIShowValue.SaveValue.CallNumber[USART_RX_Buffer[0][DataStart]]));
						 Length=StringCoppy(String_Ok,&Buf[0]);		
						 Task_SaveConfigs();
						 break;		
				case SCFF_GetLoginHead:
						 Length=BufferCoppy(&UIShowValue.SaveValue.LoginHead[0],&Buf[0],sizeof(UIShowValue.SaveValue.LoginHead));
						 Buf[Length++]=0;
						 break;
				case SCFF_SetLoginHead:
						 Length=BufferCoppy(&USART_RX_Buffer[0][DataStart],&UIShowValue.SaveValue.LoginHead[0],sizeof(UIShowValue.SaveValue.LoginHead));
						 Length=StringCoppy(String_Ok,&Buf[0]);		
						 break;
				case SCFF_GetHeartBeat:
						 Length=BufferCoppy(&UIShowValue.SaveValue.Heartbeat[0],&Buf[0],sizeof(UIShowValue.SaveValue.Heartbeat));
						 Buf[Length++]=0;
						 break;
				case SCFF_SetHeartBeat:
						 Length=BufferCoppy(&USART_RX_Buffer[0][DataStart],&UIShowValue.SaveValue.Heartbeat[0],sizeof(UIShowValue.SaveValue.Heartbeat));
						 Length=StringCoppy(String_Ok,&Buf[0]);		
						 break;
				case SCFF_COMMenuList:
						 switch(USART_RX_Buffer[0][DataStart])
										{
											case 0x01:COM_Menu_Enter(USART_RX_Buffer[0][DataStart+1],&USART_RX_Buffer[0][DataStart+2]);
													 //Length=Length=StringCoppy(String_Ok,&Buf[0]);  
													 Length=COM_Menu_Load(USART_RX_Buffer[0][DataStart+1],&Buf[0]);											
														break;
											case 0x02:Length=COM_Menu_Load(USART_RX_Buffer[0][DataStart+1],&Buf[0]);break;
											default:break;
										}
						 break;
				default: Length=StringCoppy("Null",&Buf[0]);
						 break;
			}
			ModBus_Create(&ModBusMsg,USART_RX_Buffer[0][2],0x05,WorkMode_Slave,MBCM_Crc);
			Length=ModBus_CreateMsg(USART_TX_Buffer[0],&ModBusMsg,0x01,0x01,0x01,&Buf[0],Length);
			USART_WriteDatas(USART1,USART_TX_Buffer[0],Length);
		}else if(ModBusMsg.ErrorFlag==ModBus_Broad)
		{
			
		}
		else if(ModBusMsg.ErrorFlag==ModBus_FlagError)
		{
			DeBug("%s",USART_RX_Buffer[0],Infor_Error);
		}else DeBug("%d",ModBusMsg.ErrorFlag,Infor_Infor);
	}
}
예제 #27
0
void Task_PrintfLog()
{
	uint8 i;
	HistoryRecord HR;
	DeBug("用户:%s",&UIShowValue.SaveValue.PrintfName[0],Infor_Error);
	DeBug("标题:%s",&UIShowValue.SaveValue.PrintfTitle[0],Infor_Error);
	DeBug("********************************",Infor_Error);
	DeBug("记录时间           温度   湿度  ",Infor_Error);
	for(i=0;i<UIShowValue.RecordCount;i++)
	{
		W25Q16_Read((uint32)i*sizeof(HR)+RECORDADDR,&HR,sizeof(HR));
		DeBug("%02d-%02d-%02d %02d:%02d     %.2f   %.2f",HR.DT.Year,HR.DT.Mon,HR.DT.Day,HR.DT.Hour,HR.DT.Min,HR.CH_Value[0],HR.CH_Value[1],Infor_Error);
		if(i%50==49)Tos_TaskDelay(4000);
	}
	DeBug("********************************",Infor_Error);
	DeBug("                                ",Infor_Error);
	DeBug("签字:                     时间: ",Infor_Error);
	DeBug("                                ",Infor_Error);
	DeBug("                                ",Infor_Error);
	DeBug("                                ",Infor_Error);
	DeBug("备注:                           ",Infor_Error);
	DeBug("\r\n\r\n\r\n                    ",Infor_Error);
}