|
楼主 |
发表于 2010-4-5 16:03:50
|
显示全部楼层
最后打印的是乱码,板子上用的是sm32f103ze内部sram,PhyTextCbback函数是在一个任务当中调用的。
他是在
void PhyTextInfoCreate(void)
{
WM_HWIN PhyDialog,modemdialog;
BUTTON_SetDefaultFont(&GUI_FontHZ_Fixedsys_16);
FRAMEWIN_SetDefaultFont(&GUI_FontHZ_Fixedsys_16);
TEXT_SetDefaultFont(&GUI_FontHZ_Fixedsys_16);
initialPhyInfo();
PhyDialog = GUI_CreateDialogBox(PhyInfoResourse,countof(PhyInfoResourse),PhyTextCbback,0,0,0);
FRAMEWIN_AddCloseButton(PhyDialog,FRAMEWIN_BUTTON_RIGHT,1); //在对话框标题栏建立关闭按钮
}
这个函数中调用的,调用语句为:
PhyDialog = GUI_CreateDialogBox(PhyInfoResourse,countof(PhyInfoResourse),PhyTextCbback,0,0,0);
PhyTextCbback为ucgui的回调函数。
这个函数void PhyTextInfoCreate(void)是在
void AppInfo(void *par)
{
int term;
int XSize = LCD_GetXSize();
int YSize = LCD_GetYSize();
int XMid = XSize / 2;
int YMid = YSize / 2;
int KeyVal;
GUI_Init();
GUI_SetBkColor(GUI_BLUE);//GUI_GREEN GUI_BLUE
GUI_Clear();
GUI_Touchinitial();
GUI_TOUCH_SetDefaultCalibration();
WM_SetDesktopColor(GUI_BLUE); //设置桌面颜色
initialdesktop();
WM_SetCallback(WM_HBKWIN,CbBkWindow); //设置桌面窗口的回调函数
WM_SetCreateFlags(WM_CF_MEMDEV); //使用存储设备刷新
hWinDesk = WM_GetDesktopWindow(); //获得桌面窗口句柄
term= BKP_ReadBackupRegister(BKP_DR3);//后备寄存器
DesktopInfoCreate();
MyInitial();
//GUI_DrawBitmap(&bmpon,0,0);
}
上面的函数是在下面这个函数中调用:
void CbBkWindow(WM_MESSAGE *pMsg)
{
time_t now;
WM_HWIN hWin = pMsg->hWin;
switch(pMsg->MsgId)
{
case WM_PAINT:
GUI_SetBkColor(GUI_BLUE);
GUI_SetFont(&GUI_Font6x8);
GUI_Clear();
GUI_DrawBitmap(&bmbgPower3,220,0);// 电量
time(&now);
GUI_DispString (ctime(&now)+10);//时分秒
// rt_kprintf("%s\n", );//时间显示
break;
case WM_INIT_DIALOG:
//hWinDesk
break;
case WM_NOTIFY_CHILD_HAS_FOCUS:
break;
case WM_NOTIFY_PARENT:
switch(pMsg->Data.v)
{
case WM_NOTIFICATION_RELEASED:
{
int id = WM_GetId(pMsg->hWinSrc);
switch(id)
{
case GUI_ID_BUTTON0://单位转换
PhyTextInfoCreate();
break;
case GUI_ID_BUTTON1: //主菜单
LanpingInfoCreate();
break;
case GUI_ID_BUTTON2://存储记录
BOHAOCreate();
break;
case GUI_ID_BUTTON3://系统关机
while(1)
{
MACHINE_OFF();
}
//break;
//case GUI_ID_BUTTON11://物理层测试 TouchCalibration
// break;
case GUI_ID_BUTTON11://
//
break;
default:
break;
}
}
break;
default:
break;
}
break;
default:
break;
}
}
上面这个函数是在初始化完硬件后建立任务调用如下:
int rt_application_init()
{
rt_thread_t init_thread;
/*建立初始化任务*/
init_thread = rt_thread_create("init",rt_init_thread_entry, RT_NULL,512, 8, 20);
rt_thread_startup(init_thread);
/*建立键盘扫描任务*/
AppTaskKbd = rt_thread_create("kbd",AppKbd,RT_NULL,512,9,100);//512
rt_thread_startup(AppTaskKbd);
/*建立界面刷新任务*/
AppTaskInfoUp = rt_thread_create("Infopdate",AppUp,RT_NULL,2048,11,100);
rt_thread_startup(AppTaskInfoUp);
/*建立交互界面任务*/
AppTaskInfo = rt_thread_create("AppInfo",AppInfo,RT_NULL,2048,10,100);//2048
rt_thread_startup(AppTaskInfo);
/*建立秒周期任务*/
SecondTask = rt_thread_create("secondtask",AppSecondTask,RT_NULL,2048,12,50);//2048
rt_thread_startup(SecondTask);
/*系统互斥量调试用函数*/
// thread2 = rt_thread_create("tasd2",thread2_entry, RT_NULL,512, 15, 5);
// rt_thread_startup(thread2);
// thread1 = rt_thread_create("task1",thread1_entry, RT_NULL,512, 16, 5);
// rt_thread_startup(thread1);
return 0;
} |
|