<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統 > 牛人業(yè)話 > 《C與指針》讀書筆記九

          《C與指針》讀書筆記九

          作者: 時間:2016-08-22 來源:網絡 收藏

            之所以在語言中占據很大分量,是因為有很大的靈活性。以結構體結合確實為程序的編寫提供了一把鋒利無比的寶劍。在有些資料上介紹結構體是多種數據集合,也就是一個結構體可以包含若干種不同類型的數據。不同類型的數據恰可以和客觀事物的不同屬性結合,用于描述客觀事物非常高效方便。

          本文引用地址:http://www.ex-cimer.com/article/201608/295845.htm

            #define RTX_MAX 50

            #define UART_TIME_LIMT 5

            typedef struct UART_TYPE

            {

            unsigned char RX_buf[RTX_MAX];

            unsigned char RX_count;

            unsigned char TX_buf[RTX_MAX];

            unsigned char TX_count;

            unsigned char TX_Len;

            unsigned char flag;

            unsigned char timer; //判斷一幀數據是否結束判斷

            }UART_TYPE;

            enum OM_FLAGE {NO_RE_ONE_FRAM,REC_ONE_FRAM};

            以上是一個串口管理信息的數據結構,RX_buf[RTX_MAX]、TX_buf[RTX_MAX] 是發(fā)送接收數據緩沖。RX_count 、TX_count接收發(fā)送數據計數器。TX_Len 發(fā)送數據總長度。flag數據接收完成標志。timer接收數據起始計數器。

            結構體定義相當于一個數據集合模板。當需要該數據結構時只需聲明一個即可。

            UART_TYPE UART1 = {

            {0,0},

            0,

            {0,0},

            0,

            0,

            NO_REC_ONE_FRAM,

            0

            };

            在編程中管理也非常方便,如果需要為串口設計一個數據使用,UART_TYPE UART;即可實現。在程序中使用也非常方便,比如:

            //讀取多個寄存器

            if(UART1.RX_buf[1]==0x03)

            {

            if(readMuliReg( )==0)

            {

            UART1_Clear_Buf( );

            return;

            }

            else

            {

            goto RETURN_ERR;

            }

            }

            指針與結構體的結合,在解析MODBUS協議時非常高效。借用一位同事話是“對內存格式化”。也就是用結構體指針對MODBUS報文分析。

            //讀多個寄存器

            typedef struct MODELBUS03CMD

            {

            unsigned char targetADD; //目標地址

            unsigned char CMD; //命令字

            unsigned int regADD; //寄存器地址

            unsigned int regNum; //寄存器數量

            }MODELBUS03CMD;

            這是一個03命令的報文頭結構。在程序使用方法是這樣

            MODELBUS03CMD *pModelBus03;

            pModelBus03 = UART1.RX_buf;

            REGNumber = pModelBus03->regNum;

            regADD = pModelBus03->regADD;

            使用pModelBus03指針指向接收數據緩沖區(qū),很容易提取了regNum寄存器數量以及regADD寄存器地址。



          關鍵詞: C 指針

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();