tag 标签: 无忧朋友

相关博文
  • 热度 40
    2013-9-4 16:55
    2230 次阅读|
    5 个评论
         一般转换都是用数组,结构体及指针,这样是便于以后函数操作。灵活的运用宏定义,编程更加简洁。 举例消息处理方法应用:     如下的定义为在处理消息时候用到很方便,把消息类型和消息值最后封装在一起。 灵活的处理了Uint和Byte 之间转换。   #define UintToByte3(data)               ((byte *)((data))) #define UintToByte2(data)               ((byte *)((data))) #define UintToByte1(data)               ((byte *)((data))) #define UintToByte0(data)               ((byte *)((data))) #define UintToUshort1(data)             ((ushort *)((data))) #define UintToUshort0(data)             ((ushort *)((data))) #define GetMessageType(data)            UintToByte3(data)  #define GetMessageData(data)            (data 0x00FFFFFF) 消息封装处理函数: void PostMessageToLogicTask(MessageType messageType, uint data) {     bool postMessage;     if (messageType != TimerMessageType)     {         UintToByte3(data) = messageType;     }         postMessage = System.Os.PostMessageQueue(System.Device.MessageQueuePoint, (void *)data);      Assert(postMessage); } 特别说明: MessageType 是枚举型,定义的值为Byte 类型 。详细定义为如下 typedef enum {     KeyMessageType      = 0xFF,         UartMessgeType      = 0xFE,       TimerMessageType    = 0xF0  }MessageType;   更巧妙的定义,大家一起帮忙分析为什么可以这样定义,用引号来美化编程界面。 Menu.WorkForm.BackTextPoint = "频率          Hz功率   %       W电压    电流    温度   C        ";       App.Menu.WorkForm.BackTextPoint =                                       "频率          Hz"                                       "功率   %       W"                                       "电压    电流    "                                       "温度   C        "; 上面二种定义为啥功能一样。欢迎各位探讨。 typedef struct {     const byte* BackTextPoint;     Chart     * ChartPoint;     Label     * LabelPoint;     TextBox   * TextBoxPoint;     void      * FocusTextBoxDataPoint; }Form; 欢迎各位与我一起学习ARM 技术,我的E-MIAL:timeisours@163.com,web:www.51buddy.com,QQ:158377757