C# MODBUS-RTU返回的數據解析


用於學習記錄

上位機發送的命令:01 03 01 00 00 01 85 F6
下位機返回的命令:  01 03 02 27 10 A2 78
有用的數據信息是27 10 ,這是16進制的,轉換成10進制就是10000,對應的數據就是100.00,將接收到的數據解析

解析代碼如下:

for (int i = 0; i < bytesRead; i++)
{
bytesData[i] = Convert.ToByte(serialPort.ReadByte());

strReceive += Convert.ToString(bytesData[i], 16).PadLeft(2, '0').PadRight(3, ' ').ToUpper();
Sdate += Convert.ToString(bytesData[i], 16).PadLeft(2, '0').PadRight(3, ' ').ToUpper();
}

if(bytesData.Length>3)
{
temp = (bytesData[3] * 256 + bytesData[4]) / 100.0;
Temp = temp.ToString();
}

Convert.ToString(bytesData[i], 16).PadLeft(2, '0').PadRight(3, ' ').ToUpper();

1. PadLeft()方法和PadRight()方法時ToString()方法里的子方法,ToString()方法可以調用這兩個方法,PadLeft()方法可以規定字符的寬度並且可以在字符左側填充自定義的數據,PadRight()方法類似;

2. 那個16意思是轉換成16進制數據;
3. 2:表示字符占兩位,寬度為2;"0"表示在寬度為2的字符串里填充數據0,以此達到規定的字符寬度;
4."3"表示在字符的右側填充寬度為3的數據,也就是3位數據,' ':單引號里有空格,表示以空格填充字符
String.ToUpper(),String.ToLower()

String.ToUpper(),String.ToLower()
介紹:將字符串大寫/小寫。不改變原字符串,返回大寫/小寫字符串。

 

 

 

 

 

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM