Browse Source

fix modbusRTU

master
Gavin 9 years ago
parent
commit
eab3bf5285
  1. 32
      SCADA/Program/ModbusDriver/ModbusDriver.sln
  2. 10
      SCADA/Program/ModbusDriver/ModbusRTUDriver.cs
  3. BIN
      SCADA/dll/ModbusDriver.dll

32
SCADA/Program/ModbusDriver/ModbusDriver.sln

@ -1,32 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ModbusDriver", "ModbusDriver.csproj", "{AEA44301-6A29-4AF7-91E8-E6D755B618F1}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|Itanium = Debug|Itanium
Debug|x64 = Debug|x64
Release|Any CPU = Release|Any CPU
Release|Itanium = Release|Itanium
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{AEA44301-6A29-4AF7-91E8-E6D755B618F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AEA44301-6A29-4AF7-91E8-E6D755B618F1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AEA44301-6A29-4AF7-91E8-E6D755B618F1}.Debug|Itanium.ActiveCfg = Debug|Itanium
{AEA44301-6A29-4AF7-91E8-E6D755B618F1}.Debug|Itanium.Build.0 = Debug|Itanium
{AEA44301-6A29-4AF7-91E8-E6D755B618F1}.Debug|x64.ActiveCfg = Debug|x64
{AEA44301-6A29-4AF7-91E8-E6D755B618F1}.Debug|x64.Build.0 = Debug|x64
{AEA44301-6A29-4AF7-91E8-E6D755B618F1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AEA44301-6A29-4AF7-91E8-E6D755B618F1}.Release|Any CPU.Build.0 = Release|Any CPU
{AEA44301-6A29-4AF7-91E8-E6D755B618F1}.Release|Itanium.ActiveCfg = Release|Itanium
{AEA44301-6A29-4AF7-91E8-E6D755B618F1}.Release|Itanium.Build.0 = Release|Itanium
{AEA44301-6A29-4AF7-91E8-E6D755B618F1}.Release|x64.ActiveCfg = Release|x64
{AEA44301-6A29-4AF7-91E8-E6D755B618F1}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

10
SCADA/Program/ModbusDriver/ModbusRTUDriver.cs

@ -319,17 +319,20 @@ namespace ModbusDriver
#endregion #endregion
#region :IReaderWriter #region :IReaderWriter
object _async = new object();
public byte[] ReadBytes(DeviceAddress address, ushort size) public byte[] ReadBytes(DeviceAddress address, ushort size)
{ {
int area = address.Area; int area = address.Area;
try
{
//no need to multiply by 16 //no need to multiply by 16
//byte[] header = area == Modbus.fctReadCoil ? CreateReadHeader(address.Start * 16, (ushort)(16 * size), (byte)area) : //byte[] header = area == Modbus.fctReadCoil ? CreateReadHeader(address.Start * 16, (ushort)(16 * size), (byte)area) :
// CreateReadHeader(address.Start, size, (byte)area); // CreateReadHeader(address.Start, size, (byte)area);
byte[] header = CreateReadHeader(address.Start, size, (byte)area); byte[] header = CreateReadHeader(address.Start, size, (byte)area);
lock (_async)
{
try
{
_serialPort.Write(header, 0, header.Length); _serialPort.Write(header, 0, header.Length);
/* different function_code have different realy frameBytes /* different function_code have different realy frameBytes
* function_code 1/2: one register variable use one bit * function_code 1/2: one register variable use one bit
* function_code 3/4: one register variable use two bytes * function_code 3/4: one register variable use two bytes
@ -368,6 +371,7 @@ namespace ModbusDriver
return null; return null;
} }
} }
}
public ItemData<int> ReadInt32(DeviceAddress address) public ItemData<int> ReadInt32(DeviceAddress address)
{ {

BIN
SCADA/dll/ModbusDriver.dll

Binary file not shown.
Loading…
Cancel
Save