/******************************************************************************* 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; }
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; } }
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); } }
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++; }
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; }
/******************************************************************************** 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();//节约一点是一点 }
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); } }
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; } } } }
/******************************************************************************* 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; }
/************************************************************* 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; } }
/************************************************************* 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; } }
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; }
/************************************************************* 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'; }
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; }
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); } }
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); } }
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); } }
/************************************************************************************** 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(); }
/******************************************************************************* 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; } } } }
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 } } }
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); } }
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; }
/************************************************************* 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();//当存在持续未按下触发 } } } }
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); } }
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; } }
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); } }
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); }