更改电脑时间后,用GETJULIANDATE函数获取时间出错。

k163x 2009-12-14 03:32:20
我无意中把电脑系统的时间调小了几分钟,结果编写的brew程序时间不能正确显示了。
显示的时间为0:0(本来应该是xx(时):xx(分)的),如果我把电脑的时间调大一点,它又能正确显示了,不知道什么原因。
代码如下:
/*===========================================================================

FILE: showtime.c
===========================================================================*/


/*===============================================================================
INCLUDES AND VARIABLE DEFINITIONS
=============================================================================== */
#include "AEEModGen.h" // Module interface definitions
#include "AEEAppGen.h" // Applet interface definitions
#include "AEEShell.h" // Shell interface definitions
#include "AEEStdLib.h"


#include "showtime.bid"


/*-------------------------------------------------------------------
Applet structure. All variables in here are reference via "pMe->"
-------------------------------------------------------------------*/
typedef struct _showtime {
AEEApplet a ; // First element of this structure must be AEEApplet
AEEDeviceInfo DeviceInfo; // always have access to the hardware device information

// add your own variables here...
uint32 count;


} showtime;

/*-------------------------------------------------------------------
Function Prototypes
-------------------------------------------------------------------*/
static boolean showtime_HandleEvent(showtime* pMe, AEEEvent eCode,
uint16 wParam, uint32 dwParam);
boolean showtime_InitAppData(showtime* pMe);
void showtime_FreeAppData(showtime* pMe);

static void callBack1(showtime *pMe);

/*===============================================================================
FUNCTION DEFINITIONS
=============================================================================== */

/*===========================================================================
FUNCTION: AEEClsCreateInstance
===========================================================================*/


static void callBack1 (showtime *pMe)
{



AECHAR szText[6] = {0};
JulianType date;

GETJULIANDATE(0,&date);

WSPRINTF(szText,sizeof(szText),(AECHAR*)L"%d:%d",date.wHour,date.wMinute);



IDISPLAY_DrawText(pMe->a.m_pIDisplay,AEE_FONT_BOLD,szText,-1,0,0,NULL,IDF_ALIGN_CENTER|IDF_ALIGN_MIDDLE);
IDISPLAY_Update(pMe->a.m_pIDisplay);
}

int AEEClsCreateInstance(AEECLSID ClsId, IShell *pIShell, IModule *po, void **ppObj)
{
*ppObj = NULL;

if( ClsId == AEECLSID_SHOWTIME )
{
// Create the applet and make room for the applet structure
if( AEEApplet_New(sizeof(showtime),
ClsId,
pIShell,
po,
(IApplet**)ppObj,
(AEEHANDLER)showtime_HandleEvent,
(PFNFREEAPPDATA)showtime_FreeAppData) ) // the FreeAppData function is called after sending EVT_APP_STOP to the HandleEvent function

{
//Initialize applet data, this is called before sending EVT_APP_START
// to the HandleEvent function
if(showtime_InitAppData((showtime*)*ppObj))
{
//Data initialized successfully
return(AEE_SUCCESS);
}
else
{
//Release the applet. This will free the memory allocated for the applet when
// AEEApplet_New was called.
IAPPLET_Release((IApplet*)*ppObj);
return EFAILED;
}

} // end AEEApplet_New

}

return(EFAILED);
}


/*===========================================================================
FUNCTION SampleAppWizard_HandleEvent
===========================================================================*/
static boolean showtime_HandleEvent(showtime* pMe, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{


switch (eCode)
{
// App is told it is starting up
case EVT_APP_START:
ISHELL_SetTimer(pMe->a.m_pIShell,
3000,
(PFNNOTIFY)callBack1,
(void*)pMe);


return(TRUE);


// App is told it is exiting
case EVT_APP_STOP:
// Add your code here...

return(TRUE);


// App is being suspended
case EVT_APP_SUSPEND:
// Add your code here...

return(TRUE);


// App is being resumed
case EVT_APP_RESUME:
// Add your code here...

return(TRUE);


// An SMS message has arrived for this app. Message is in the dwParam above as (char *)
// sender simply uses this format "//BREW:ClassId:Message", example //BREW:0x00000001:Hello World
case EVT_APP_MESSAGE:
// Add your code here...

return(TRUE);

// A key was pressed. Look at the wParam above to see which key was pressed. The key
// codes are in AEEVCodes.h. Example "AVK_1" means that the "1" key was pressed.
case EVT_KEY:
// Add your code here...

return(TRUE);
// Flip event. Look at the wParam above to know flip state.
case EVT_FLIP:
// wParam = FALSE, when flip is closed.
if(wParam == FALSE)
{
// Add your code here...
}
else
{
// Add your code here...
}

return(TRUE);

// Key-guard event. Look at the wParam above to know key-guard state.
case EVT_KEYGUARD:

// wParam = TRUE, when key-guard is enabled.
if(wParam == TRUE)
{
// Add your code here...
}
else
{
// Add your code here...
}

return(TRUE);

// If nothing fits up to this point then we'll just break out
default:
break;
}

return FALSE;
}


// this function is called when your application is starting up
boolean showtime_InitAppData(showtime* pMe)
{
// Get the device information for this handset.
// Reference all the data by looking at the pMe->DeviceInfo structure
// Check the API reference guide for all the handy device info you can get
pMe->DeviceInfo.wStructSize = sizeof(pMe->DeviceInfo);
ISHELL_GetDeviceInfo(pMe->a.m_pIShell,&pMe->DeviceInfo);

// Insert your code here for initializing or allocating resources...

pMe->count = 0;

// if there have been no failures up to this point then return success
return TRUE;
}

// this function is called when your application is exiting
void showtime_FreeAppData(showtime* pMe)
{
// insert your code here for freeing any resources you have allocated...

// example to use for releasing each interface:
// if ( pMe->pIMenuCtl != NULL ) // check for NULL first
// {
// IMENUCTL_Release(pMe->pIMenuCtl) // release the interface
// pMe->pIMenuCtl = NULL; // set to NULL so no problems trying to free later
// }
//

}

...全文
1862 2 打赏 收藏 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
在真机上应该是没有问题的
k163x 2009-12-14
  • 打赏
  • 举报
回复
跪求达人解决,不然我只有重装系统这条路了。。
内容概要:本文聚焦于“基于中间电容应力分担机制的三阶立方体双向DC-DC变换器”的建模与优化设计,系统阐述其在dq域下的动态建模方法与控制策略优化,涵盖变频与移相协同控制、高电压增益实现、降频软启动、多模式平滑切换等核心技术。结合Matlab、Simulink及PSCAD仿真平台,深入实现全桥LLC、双三相LLC等谐振变换器的混合控制与动态响应分析,并拓展至飞轮储能系统、混合储能平抑风电波动、直流母线电压稳定控制等实际应用场景,构建了从器件级建模到系统级集成的完整仿真体系。同时包含多项高水平期刊论文的复现内容,强化科研可重复性与工程实用性。; 适合人群:电力电子、电气工程及其自动化等相关专业的研究生、科研人员及从事新能源发电、储能系统、电动汽车、智能电网等领域研发的工程技术人员;具备电路拓扑分析、控制系统设计及仿真基础者更佳。; 使用场景及目标:①掌握高频双向DC-DC变换器的精确建模与先进控制方法;②复现并验证权威期刊论文中的关键仿真案例,提升科研创新能力与仿真技术水平;③应用于储能系统能量管理、新能源并网调控、电动汽车充放电模块等高性能电源变换系统的优化设计与动态性能分析。; 阅读建议:建议按照文档目录结构循序渐进学习,优先理解主拓扑的工作原理与控制逻辑,结合所提供的仿真模型进行实操复现,重点关注不同工况下的动态响应、稳定性边界及模式切换过程,深化对电力电子系统协同控制与多时间尺度动态特性的理解。
内容概要:本文系统研究了基于序贯蒙特卡洛模拟法的配电网可靠性评估方法,并通过Matlab代码实现了算法的仿真与复现。文章深入阐述了该方法在电力系统可靠性分析中的理论基础,通过模拟电力元件的故障与修复过程的时间序列,对配电网的关键可靠性指标(如系统平均停电频率SAIFI、平均停电持续时间SAIDI等)进行精确统计评估。研究结合IEEE标准测试系统,详细展示了状态转移抽样、时序仿真流程设计及可靠性指标计算等关键技术环节的实现方法。该方法能够有效处理复杂配电网络中元件的随机性、相关性与时序特性,为电网的规划、运行维护及风险评估提供了科学、可靠的决策依据。; 适合人群:具备电力系统基础知识和Matlab编程能力的高校研究生、科研人员及从事电力系统可靠性分析的工程技术人员。; 使用场景及目标:①掌握序贯蒙特卡洛模拟法在配电网可靠性评估中的应用原理与实现技巧;②学习如何通过时序仿真评估SAIFI、SAIDI等核心可靠性指标;③为电网规划、故障风险分析和运维策略制定提供量化分析工具; 阅读建议:此资源以Matlab代码为核心载体,强调理论与实践的紧密结合,建议读者在学习过程中仔细研读算法原理,动手运行并调试所提供的代码,深入理解状态抽样、时序推进和指标统计的每一个细节,以达到融会贯通的目的。
内容概要:本文详细介绍了OPC DA协议的基本原理及其在工业自动化领域的应用,重点讲解了如何使用Matrikon OPC仿真工具生成模拟数据,并通过supOS平台实现数据接入与在线调试。内容涵盖OPC DA的技术架构、数据点三要素(值、质量、时间戳)、协议特点,以及仿真服务器和客户端的安装配置、DCOM系统设置、数据地址空间查看、实时数据监控等操作步骤。最后,指导用户在supOS平台创建OPC DA采集通道、配置数据点表并进行在线调试,提供了常见问题的排查方法。; 适合人群:从事工业自动化、智能制造及相关领域的工程师和技术人员,具备基本的工控系统知识和Windows操作系统操作能力,适合初学者和中级技术人员学习参考。; 使用场景及目标:①用于OPC DA协议的学习与实训,掌握其通信机制和数据交互流程;②在无真实PLC设备的情况下,利用仿真工具开展数据采集系统开发与测试;③实现OPC DA数据接入supOS工业操作系统,支撑工业数据可视化、监控与分析应用。; 阅读建议:建议按照文档顺序逐步操作,确保每一步骤配置正确,尤其注意DCOM权限设置和数据路径的准确性,配合OPC Explorer客户端验证数据连通性后再接入supOS平台,以提高调试效率。

7,802

社区成员

发帖
与我相关
我的任务
社区描述
本论坛以AI、IoT、PC 、XR、Auto等核心板块组成,为开发者提供便捷及高效的学习和交流平台。 高通开发者专区主页:https://qualcomm.csdn.net/
物联网人工智能开源 企业社区 北京·东城区
社区管理员
  • csdnsqst0050
  • chipseeker
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧