在現有專案中增加modbus ascii報文的支援,因為專案中已經有了rtu和tcp報文的支援,所以想講ascii報文轉換成類似rtu的報文格式,利用rtu的函式處理,節省**量.
根據rtu報文和ascii報文的特點, 從該博文可以看出 ,所以我是用乙個函式處理相鄰2個位元組,轉換成rtu報文格式. 即實現十六進製制轉換成ascii,再轉換回十六進製制.這其中有個小問題需留意,就是ascii下行報文的資料區不一定就是偶數個位元組,需要判斷好.下面是實現的函式:
#include #include #include int hex2hex(int ihexone,int ihextwo)
else if ( (iasciione <= 'f') && (iasciione >= 'a'))
if((iasciitwo <= '9') && (iasciitwo >= '0') )
else if ( (iasciitwo <= 'f') && (iasciitwo >= 'a'))
//ascii->hex
sprintf(chexto,"%c%c",iasciitemp,iasciitempnext);
sscanf(chexto,"%x",&idec);
return idec;
}int main(void)
MODBUS ASCII 通訊協議例項
在ascii傳輸模式下,訊息幀以英文冒號 3a 開始,以回車 0d 和換行 0a 結束,允許傳輸的字符集為十六進製制的0 9和a f。在ascii模式下,每個8位的位元組被拆分成兩個ascii字元進行傳送,比如十六進製制0x28 0010 1000 會被分解成 ascii字元 2 0011 0010...
MODBUS ASCII和RTU兩種模式的對比
下表是modbus ascii協議和rtu協議的比較 協議開始標記 結束標記 校驗傳輸效率 程式處理 ascii 冒號 cr,lf lrc低 直觀,簡單,易除錯 rtu無 無crc 高稍複雜 從上表的比較我們可以看到,modbus的ascii協議和rtu協議相比,modbus ascii協議擁有開始...
java socket報文通訊 報文的封裝
什麼是報文這裡我就不在闡述了,不清楚的朋友可以自己去查資料。我們今天要談的報文主要友以下幾個部分組成 3位同步校驗位 8位報文長度 報文頭 報文體 32位 md5校驗位 基本格式如下 0x110x120x1300000232020420141223 14122301000815217010001張三...