⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hrtsrvin.c

📁 HART协议编程例程
💻 C
📖 第 1 页 / 共 2 页
字号:
  strHrtAppIf.byData[1] = (BYTE) co_ui8FbHartMfrID;
  strHrtAppIf.byData[2] = (BYTE) co_ui8FbHartMfrDevType;
  strHrtAppIf.byData[3] = (BYTE) co_ui8FbHartNoReqPreAmbs;
  strHrtAppIf.byData[4] = (BYTE) co_ui8FbHartUnivCmdRev;
  strHrtAppIf.byData[5] = (BYTE) co_ui8FbHartTransmSpecRev;
  strHrtAppIf.byData[6] = (BYTE) co_ui8FbHartSoftwRev;
  strHrtAppIf.byData[7] = (BYTE) co_ui8FbHartHardwRev;
  strHrtAppIf.byData[8] = (BYTE) co_ui8FbHartFlags;
  M_API_MEMCPY(&strHrtAppIf.byData[9],&co_ui24FbHartDeviceIDnum,3);
#ifdef VC_STUDIO
  M_API_SWAP3(&strHrtAppIf.byData[9]);
#endif
  strHrtAppIf.byDataLen = 12;
}

          /**************/
static void hrtSrvFnc012(
          /**************/
     void
  )
/*
 * HART Command 12 Handling Function
 */
{
  strHrtAppIf.byResponse1 = 0;
  M_API_MEMCPY(&strHrtAppIf.byData[0],&rs_paFbHartMessage,24);
  strHrtAppIf.byDataLen = 24;
}

          /**************/
static void hrtSrvFnc013(
          /**************/
     void
  )
/*
 * HART Command 13 Handling Function
 */
{
  strHrtAppIf.byResponse1 = 0;
  M_API_MEMCPY(&strHrtAppIf.byData[0],&rl_paFbHartTagName,6);
  M_API_MEMCPY(&strHrtAppIf.byData[6],&rs_paFbHartDescription,12);
  strHrtAppIf.byData[18] = (BYTE) rs_ui8FbHartDayOfMonth;
  strHrtAppIf.byData[19] = (BYTE) rs_ui8FbHartMonthOfYear;
  strHrtAppIf.byData[20] = (BYTE) rs_ui8FbHartYearSince1900;
  strHrtAppIf.byDataLen = 21;
}

          /**************/
static void hrtSrvFnc014(
          /**************/
     void
  )
/*
 * HART Command 14 Handling Function
 */
{
  strHrtAppIf.byResponse1 = 0;
  M_API_MEMCPY(&strHrtAppIf.byData[0],&co_ui24MeasSensSerNum,3);
#ifdef VC_STUDIO
  M_API_SWAP3(&strHrtAppIf.byData[0]);
#endif
  strHrtAppIf.byData[3] = (BYTE) co_ui8MeasSensLimUnit;
  M_API_MEMCPY(&strHrtAppIf.byData[4],&co_flMeasUpperSensLimit,4);
#ifdef VC_STUDIO
  M_API_MSfloatToIEEE(&strHrtAppIf.byData[4]);
#endif
  M_API_MEMCPY(&strHrtAppIf.byData[8],&co_flMeasLowerSensLimit,4);
#ifdef VC_STUDIO
  M_API_MSfloatToIEEE(&strHrtAppIf.byData[8]);
#endif
  M_API_MEMCPY(&strHrtAppIf.byData[12],&co_flMeasMinSpan,4);
#ifdef VC_STUDIO
  M_API_MSfloatToIEEE(&strHrtAppIf.byData[12]);
#endif
  strHrtAppIf.byDataLen = 16;
}

          /**************/
static void hrtSrvFnc015(
          /**************/
     void
  )
/*
 * HART Command 15 Handling Function
 */
{
  strHrtAppIf.byResponse1 = 0;
  strHrtAppIf.byData[0] = (BYTE) co_ui8FbHartAlmSelCode;
  strHrtAppIf.byData[1] = (BYTE) co_ui8FbHartXferFuncCode;
  strHrtAppIf.byData[2] = (BYTE) co_ui8IoutRangeUnits;
  M_API_MEMCPY(&strHrtAppIf.byData[3],&co_flIoutUpperRange,4);
#ifdef VC_STUDIO
  M_API_MSfloatToIEEE(&strHrtAppIf.byData[3]);
#endif
  M_API_MEMCPY(&strHrtAppIf.byData[7],&co_flIoutLowerRange,4);
#ifdef VC_STUDIO
  M_API_MSfloatToIEEE(&strHrtAppIf.byData[7]);
#endif
  M_API_MEMCPY(&strHrtAppIf.byData[11],&co_flIoutDamping,4);
#ifdef VC_STUDIO
  M_API_MSfloatToIEEE(&strHrtAppIf.byData[11]);
#endif
  strHrtAppIf.byData[15] = (BYTE) rs_ui8FbHartWrProtCode;
  strHrtAppIf.byData[16] = (BYTE) co_ui8FbHartPrivLabDistCode;
  strHrtAppIf.byDataLen = 17;
}

          /**************/
static void hrtSrvFnc016(
          /**************/
     void
  )
/*
 * HART Command 16 Handling Function
 */
{
  strHrtAppIf.byResponse1 = 0;
  M_API_MEMCPY(&strHrtAppIf.byData[0],&rs_ui24FbHartFinAssNum,3);
#ifdef VC_STUDIO
  M_API_SWAP3(&strHrtAppIf.byData[0]);
#endif
  strHrtAppIf.byDataLen = 3;
}

          /**************/
static void hrtSrvFnc017(
          /**************/
     void
  )
/*
 * HART Command 17 Handling Function
 */
{
  /* Write Part of Service */
  if (M_API_IS_WR_PROTECTED)
  { strHrtAppIf.byResponse1 = HRT_IN_WR_PROT_MODE;
    g_bNoData = T_TRUE;
  }
  else
  { if (strHrtAppIf.byDataLen < 24)
    { strHrtAppIf.byResponse1 = HRT_TOO_FEW_DATA_BYTES;
      g_bNoData = T_TRUE;
    }
    else
    { strHrtAppIf.byResponse1 = 0;
      if (strHrtAppIf.byResponse1 == 0)
      { if(memcmp(&rs_paFbHartMessage,&strHrtAppIf.byData[0],24)!=0)
        { M_API_MEMCPY(&rs_paFbHartMessage,&strHrtAppIf.byData[0],24);
          M_API_EE_WRITE(&ee_paFbHartMessage,&rs_paFbHartMessage,24);
          g_bConfChange = TRUE;
        }
      }
    }
  }

  /* Get the response data */
  M_API_MEMCPY(&strHrtAppIf.byData[0],&rs_paFbHartMessage,24);
  strHrtAppIf.byDataLen = 24;
}

          /**************/
static void hrtSrvFnc018(
          /**************/
     void
  )
/*
 * HART Command 18 Handling Function
 */
{
  /* Write Part of Service */
  if (M_API_IS_WR_PROTECTED)
  { strHrtAppIf.byResponse1 = HRT_IN_WR_PROT_MODE;
    g_bNoData = T_TRUE;
  }
  else
  { if (strHrtAppIf.byDataLen < 21)
    { strHrtAppIf.byResponse1 = HRT_TOO_FEW_DATA_BYTES;
      g_bNoData = T_TRUE;
    }
    else
    { strHrtAppIf.byResponse1 = 0;
      if (strHrtAppIf.byResponse1 == 0)
      { if(memcmp(&rl_paFbHartTagName,&strHrtAppIf.byData[0],6)!=0)
        { M_API_MEMCPY(&rl_paFbHartTagName,&strHrtAppIf.byData[0],6);
          M_API_EE_WRITE(&ee_paFbHartTagName,&rl_paFbHartTagName,6);
          se_bFbHartParamChanged = TRUE;
          g_bConfChange = TRUE;
        }
        if(memcmp(&rs_paFbHartDescription,&strHrtAppIf.byData[6],12)!=0)
        { M_API_MEMCPY(&rs_paFbHartDescription,&strHrtAppIf.byData[6],12);
          M_API_EE_WRITE(&ee_paFbHartDescription,&rs_paFbHartDescription,12);
          g_bConfChange = TRUE;
        }
        if(rs_ui8FbHartDayOfMonth != strHrtAppIf.byData[18])
        { rs_ui8FbHartDayOfMonth = (BYTE) strHrtAppIf.byData[18];
          M_API_EE_WRITE(&ee_ui8FbHartDayOfMonth,&rs_ui8FbHartDayOfMonth,1);
          g_bConfChange = TRUE;
        }
        if(rs_ui8FbHartMonthOfYear != strHrtAppIf.byData[19])
        { rs_ui8FbHartMonthOfYear = (BYTE) strHrtAppIf.byData[19];
          M_API_EE_WRITE(&ee_ui8FbHartMonthOfYear,&rs_ui8FbHartMonthOfYear,1);
          g_bConfChange = TRUE;
        }
        if(rs_ui8FbHartYearSince1900 != strHrtAppIf.byData[20])
        { rs_ui8FbHartYearSince1900 = (BYTE) strHrtAppIf.byData[20];
          M_API_EE_WRITE(&ee_ui8FbHartYearSince1900,&rs_ui8FbHartYearSince1900,1);
          g_bConfChange = TRUE;
        }
      }
    }
  }

  /* Get the response data */
  M_API_MEMCPY(&strHrtAppIf.byData[0],&rl_paFbHartTagName,6);
  M_API_MEMCPY(&strHrtAppIf.byData[6],&rs_paFbHartDescription,12);
  strHrtAppIf.byData[18] = (BYTE) rs_ui8FbHartDayOfMonth;
  strHrtAppIf.byData[19] = (BYTE) rs_ui8FbHartMonthOfYear;
  strHrtAppIf.byData[20] = (BYTE) rs_ui8FbHartYearSince1900;
  strHrtAppIf.byDataLen = 21;
}

          /**************/
static void hrtSrvFnc019(
          /**************/
     void
  )
/*
 * HART Command 19 Handling Function
 */
{
  /* Write Part of Service */
  if (M_API_IS_WR_PROTECTED)
  { strHrtAppIf.byResponse1 = HRT_IN_WR_PROT_MODE;
    g_bNoData = T_TRUE;
  }
  else
  { if (strHrtAppIf.byDataLen < 3)
    { strHrtAppIf.byResponse1 = HRT_TOO_FEW_DATA_BYTES;
      g_bNoData = T_TRUE;
    }
    else
    { strHrtAppIf.byResponse1 = 0;
      if (strHrtAppIf.byResponse1 == 0)
      { 
#ifdef VC_STUDIO
        M_API_SWAP3(&strHrtAppIf.byData[0]);
#endif
        if(memcmp(&rs_ui24FbHartFinAssNum,&strHrtAppIf.byData[0],3)!=0)
        { M_API_MEMCPY(&rs_ui24FbHartFinAssNum,&strHrtAppIf.byData[0],3);
          M_API_EE_WRITE(&ee_ui24FbHartFinAssNum,&rs_ui24FbHartFinAssNum,3);
          g_bConfChange = TRUE;
        }
      }
    }
  }

  /* Get the response data */
  M_API_MEMCPY(&strHrtAppIf.byData[0],&rs_ui24FbHartFinAssNum,3);
#ifdef VC_STUDIO
  M_API_SWAP3(&strHrtAppIf.byData[0]);
#endif
  strHrtAppIf.byDataLen = 3;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -