57 lines
1.7 KiB
C#
57 lines
1.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using WPFWCSDemo.Models.Devices.CircleRGVStation;
|
|
|
|
namespace WPFWCSDemo.Utilities
|
|
{
|
|
public class Checksum
|
|
{
|
|
/// <summary>
|
|
/// 字节数拆分求和
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public static short GetChecksum(int number)
|
|
{
|
|
byte byte1 = (byte)(number >> 24);
|
|
byte byte2 = (byte)(number >> 16);
|
|
byte byte3 = (byte)(number >> 8);
|
|
byte byte4 = (byte)(number);
|
|
|
|
int sum = byte1 + byte2 + byte3 + byte4;
|
|
|
|
return (short)sum;
|
|
}
|
|
|
|
public static short GetChecksum(short number)
|
|
{
|
|
byte byte1 = (byte)(number >> 8);
|
|
byte byte2 = (byte)(number);
|
|
|
|
int sum = byte1 + byte2;
|
|
|
|
return (short)sum;
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 获取校验码---字节拆分求和
|
|
/// </summary>
|
|
/// <param name="circleRGVStationCommand"></param>
|
|
/// <returns></returns>
|
|
public static short GetChecksum(CircleRGVStationCommand circleRGVStationCommand)
|
|
{
|
|
return Convert.ToInt16(GetChecksum((short)circleRGVStationCommand.Write_DeviceNumber) +
|
|
GetChecksum((short)circleRGVStationCommand.Write_SourceLocation) +
|
|
GetChecksum((short)circleRGVStationCommand.Write_TargetLocation) +
|
|
GetChecksum((short)circleRGVStationCommand.Write_TaskType) +
|
|
GetChecksum(circleRGVStationCommand.Write_TaskNumber) +
|
|
GetChecksum((short)1));
|
|
}
|
|
|
|
}
|
|
}
|