久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
modbus協議上位機通用接口
[打印本頁]
作者:
hopedream
時間:
2018-8-13 08:19
標題:
modbus協議上位機通用接口
public class KModbusUnity
{
static ushort POLYNOMIAL = 0xA001;
/// <summary>
/// 計算CRC校驗結果
/// </summary>
/// <param name="data">數據源</param>
/// <returns>校驗結果</returns>
public static byte[] CRCCheck(byte[] data )
{
ushort crc = 0xffff;
for(ushort i=0;i<data.Length;i++)
{
crc ^= (ushort)(data[i] & 0x00FF);
for(ushort j = 0;j<8;j++)
{
if ((crc & 0x0001) != 0)
{
crc >>= 1;
crc ^= POLYNOMIAL;
}
else
crc >>= 1;
}
}
return System.BitConverter.GetBytes(crc);
}
/// <summary>
/// 收到的數據有效
/// </summary>
/// <param name="data">數據</param>
/// <returns></returns>
public static bool IsValid(byte[] data)
{
bool bReturn = false;
int n = data.Length;
if (n >= 4)
{
byte[] check = new byte[n - 2];
for (int j = 0; j < n - 2; j++)
{
check[j] = data[j];
}
// 校驗結果
byte[] crc = KModbusUnity.CRCCheck(check);
if (crc[0] == data[n - 2] && crc[1] == data[n - 1])
{
bReturn = true;
}
}
return bReturn;
}
/// <summary>
/// 返回帶校驗碼的數據
/// </summary>
/// <param name="data">源數據</param>
/// <returns>帶校驗碼的數據</returns>
public static byte[] CRCData(byte[] data)
{
byte[] crcCheck = CRCCheck(data);
byte[] rdata = new byte[data.Length + 2];
data.CopyTo(rdata, 0);
crcCheck.CopyTo(rdata, data.Length);
return rdata;
}
public static byte[] CRCData(String hex)
{
return CRCData(HexStrToBytes(hex));
}
/// <summary>
/// 16進制字符串轉byte數組
/// </summary>
/// <param name="hex">16進制的字符串,可以是空格隔開的方式</param>
/// <returns>byte數組</returns>
public static byte[] HexStrToBytes(String hex)
{
hex = hex.Replace(" ", "");
if ((hex.Length % 2) != 0)
hex += " ";
byte[] returnBytes = new byte[hex.Length / 2];
for (int i = 0; i < returnBytes.Length; i++)
{
String sub = hex.Substring(i * 2, 2);
returnBytes[i] = Convert.ToByte(sub, 16);
}
return returnBytes;
}
/// <summary>
/// byte數組轉16進制字符串
/// </summary>
/// <param name="bytes">byte數組</param>
/// <returns>16進制字符串</returns>
public static String BytesToHexStr(byte[] bytes)
{
return BitConverter.ToString(bytes).Replace('-', ' ').Trim();
}
/// <summary>
/// byte轉float
/// </summary>
/// <param name="data">byte</param>
/// <param name="nStart">開始位置</param>
/// <returns>float</returns>
public static float BytesToFloat(byte[] data ,int nStart = 0)
{
float fResult = 0;
fResult = BitConverter.ToSingle(new byte[] {data[nStart+3],data[nStart+2],data[nStart+1],data[nStart] }, 0);
return fResult;
}
public static bool[] ByteToBitArray(byte data)
{
bool[] bResult = new bool[8];
for(int i =0;i<8;i++)
{
var tmp = 1 << i;
bool b = ((data & tmp) == tmp);
bResult[i] = b;
}
return bResult;
}
public static byte[] StringToBytes(String str)
{
return System.Text.Encoding.ASCII.GetBytes(str);
}
}
復制代碼
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
日韩欧美在线观看一区
|
91精品国产乱码久久久久久久久
|
成人一区二区视频
|
免费在线成人网
|
韩国精品一区二区三区
|
欧美中文字幕一区二区三区亚洲
|
亚洲人成人一区二区在线观看
|
天堂av中文
|
欧美一区免费在线观看
|
日日做夜夜爽毛片麻豆
|
国产欧美视频一区二区
|
精品久久电影
|
99精彩视频
|
久久精品国产久精国产
|
中文字幕电影在线观看
|
亚洲国产精品suv
|
在线日韩欧美
|
亚洲一区精品在线
|
91精品国产91久久综合桃花
|
成人免费网站www网站高清
|
国产高清在线精品一区二区三区
|
精品中文字幕久久
|
日韩中文一区二区三区
|
国产免费观看视频
|
日本精品视频一区二区三区四区
|
欧美久久大片
|
激情在线视频
|
亚洲精品一区二区三区在线观看
|
毛片免费在线
|
午夜国产一级
|
日本天堂一区二区
|
久久精品色欧美aⅴ一区二区
|
亚洲www啪成人一区二区
|
国产精品波多野结衣
|
国产91丝袜在线播放
|
免费黄色片在线观看
|
91天堂网
|
久久综合av
|
久久久青草婷婷精品综合日韩
|
久久久91
|
国产第一区二区
|