2014-08-28 update 1

This commit is contained in:
parallelbgls@outlook.com
2014-08-28 11:04:32 +08:00
parent eb631389a9
commit e0fea8731e
7 changed files with 142 additions and 20 deletions

View File

@@ -0,0 +1,89 @@
using System;
using System.Collections;
using System.Windows.Forms;
public enum ModbusType
{
Rtu = 0,
Tcp = 1,
}
namespace ModBus.Net
{
public class ModbusUtility
{
private BaseProtocal _wrapper;
private ModbusType _modbusType;
public ModbusType ModbusType
{
get
{
return _modbusType;
}
set
{
_modbusType = value;
switch (_modbusType)
{
case ModbusType.Rtu:
{
_wrapper = new ModbusRtuProtocal();
break;
}
case ModbusType.Tcp:
{
_wrapper = new ModbusTcpProtocal();
break;
}
}
}
}
private static ModbusUtility _modbusUtility;
private ModbusUtility()
{
ModbusType = ModbusType.Rtu;
}
public static ModbusUtility GetInstance()
{
return _modbusUtility ?? (_modbusUtility = new ModbusUtility());
}
public ushort[] ReadHoldRegister(byte belongAddress, string startAddress, ushort getCount)
{
try
{
var inputStruct = new ReadHoldRegisterModbusProtocal.ReadHoldRegisterInputStruct(belongAddress, startAddress, getCount);
var outputStruct =
_wrapper.SendReceive(_wrapper["ReadHoldRegisterModbusProtocal"], inputStruct) as
ReadHoldRegisterModbusProtocal.ReadHoldRegisterOutputStruct;
return outputStruct.HoldRegisterStatus;
}
catch
{
return null;
}
}
public bool WriteMultiRegister(byte belongAddress, string startAddress, object[] writeValue)
{
try
{
var inputStruct = new WriteMultiRegisterModbusProtocal.WriteMultiRegisterInputStruct(belongAddress,
startAddress, writeValue);
var outputStruct =
_wrapper.SendReceive(_wrapper["WriteMultiRegisterModbusProtocal"], inputStruct) as
WriteMultiRegisterModbusProtocal.WriteMultiRegisterOutputStruct;
if (outputStruct.WriteCount != writeValue.Length) return false;
return true;
}
catch
{
return false;
}
}
}
}