35 lines
1.1 KiB
C#
35 lines
1.1 KiB
C#
using System.Text;
|
|
|
|
namespace Modbus.Net.Modbus
|
|
{
|
|
/// <summary>
|
|
/// Modbus/Ascii码协议连接器
|
|
/// </summary>
|
|
public class ModbusAsciiProtocolLinker : ComProtocolLinker
|
|
{
|
|
/// <summary>
|
|
/// 构造函数
|
|
/// </summary>
|
|
/// <param name="com">串口地址</param>
|
|
/// <param name="slaveAddress">从站号</param>
|
|
public ModbusAsciiProtocolLinker(string com, int slaveAddress)
|
|
: base(com, slaveAddress)
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// 校验返回数据是否正确
|
|
/// </summary>
|
|
/// <param name="content">返回的数据</param>
|
|
/// <returns>校验是否正确</returns>
|
|
public override bool? CheckRight(byte[] content)
|
|
{
|
|
if (base.CheckRight(content) != true) return base.CheckRight(content);
|
|
//Modbus协议错误
|
|
var contentString = Encoding.ASCII.GetString(content);
|
|
if (byte.Parse(contentString.Substring(3, 2)) > 127)
|
|
throw new ModbusProtocolErrorException(byte.Parse(contentString.Substring(5, 2)));
|
|
return true;
|
|
}
|
|
}
|
|
} |