qinchenglim
級別: 論壇先鋒
|
現在用到一款溫控器,用RS-232通訊讀取當前溫度值。用PLC發送讀取指令的時候要發送FCS效驗碼,以前沒有用過這樣的效驗方式,不知道怎么計算,請用過的朋友分享一下計算方法。先謝謝了! 比如發送數據 H4030 H3030 H3131 ,它的FCS效驗碼是多少?怎么算的?再次感謝大家。 |
---|---|
|
yamqq
雅馬哈,愛普生,電裝機器人。
級別: 網絡英雄
|
#include "stdafx.h" char *fnFCS(const char *pstr,int iCount,char *pFCS) //定義FCS校驗函數 { if(pstr==NULL||pFCS==NULL) //如果指針為null return NULL; //返回NULL char ch=*pstr; //定義字符變量并賦初值 for(int i=1;i<iCount;i++) //循環iCount次 { ch^=*(pstr+i); //異或運算 } char ct=ch>>4; //取異或結果的高四位 if(ct>9) //轉為ASCII碼 ct+='A'-10; else ct+='0'; *pFCS=ct; ct=ch&0x0F; //取異或結果的低四位 if(ct>9) //轉為ASCII碼 ct+='A'-10; else ct+='0'; *(pFCS+1)=ct; return pFCS; //返回校驗值 } int main(int argc, char* argv[]) //定義主函數 { char c,str[100]=""; //定義變量 int i=0; //定義變量 char jyTemp[2]; //定義變量 printf("請輸入要校驗的字符串:\n"); //要求輸入字符串 while((str=getchar())!='\n') //輸入字符串,直到遇到回車符 { i+=1; fnFCS(str,i,&jyTemp[0]); //調用FCS計算函數 } printf("以上字符串的FCS校驗是:'%c%c'。\n",jyTemp[0],jyTemp[1]); //輸出結果 return 0; } |
|
---|---|---|
本帖最近評分記錄:
|
qinchenglim
級別: 論壇先鋒
|
一樓的朋友能具體解釋一下FCS的計算原理嗎?這么多高級語言看著有點眼暈了 |
---|---|
|