2016-01-07 update 1 version 1.1 support little endian protocal and change the description of TaskManager ReturnValue and AddressTranslator.

This commit is contained in:
parallelbgls@outlook.com
2016-03-07 15:35:10 +08:00
parent 1a1f21d8a4
commit 84f4eeda1e
29 changed files with 192 additions and 100 deletions

View File

@@ -54,17 +54,23 @@ namespace Modbus.Net.Modbus
};
}
public override KeyValuePair<int, int> AddressTranslate(string address, bool isRead)
public override AddressDef AddressTranslate(string address, bool isRead)
{
address = address.ToUpper();
string[] splitString = address.Split(' ');
string head = splitString[0];
string tail = splitString[1];
return isRead
? new KeyValuePair<int, int>(TransDictionary[head] + int.Parse(tail) - 1,
ReadFunctionCodeDictionary[head])
: new KeyValuePair<int, int>(TransDictionary[head] + int.Parse(tail) - 1,
WriteFunctionCodeDictionary[head]);
? new AddressDef()
{
Area = ReadFunctionCodeDictionary[head],
Address = TransDictionary[head] + int.Parse(tail) - 1,
}
: new AddressDef()
{
Area = WriteFunctionCodeDictionary[head],
Address = TransDictionary[head] + int.Parse(tail) - 1,
};
}
}
@@ -92,17 +98,23 @@ namespace Modbus.Net.Modbus
};
}
public override KeyValuePair<int, int> AddressTranslate(string address, bool isRead)
public override AddressDef AddressTranslate(string address, bool isRead)
{
address = address.ToUpper();
string[] splitString = address.Split(' ');
string head = splitString[0];
string tail = splitString[1];
return isRead
? new KeyValuePair<int, int>(int.Parse(tail) - 1,
ReadFunctionCodeDictionary[head])
: new KeyValuePair<int, int>(int.Parse(tail) - 1,
WriteFunctionCodeDictionary[head]);
? new AddressDef()
{
Area = ReadFunctionCodeDictionary[head],
Address = int.Parse(tail) - 1,
}
: new AddressDef()
{
Area = WriteFunctionCodeDictionary[head],
Address = int.Parse(tail) - 1,
};
}
}
}

View File

@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>Modbus.Net.Modbus</id>
<version>1.0.0</version>
<version>1.1.0</version>
<title>Modbus.Net.Modbus</title>
<authors>Chris L.(Luo Sheng)</authors>
<owners>Hangzhou Delian Information and Science Technology Co.,Ltd.</owners>
@@ -13,7 +13,7 @@
<copyright>Copyright 2015 Hangzhou Delian Science and Technology Co.,Ltd.</copyright>
<tags>hardware communicate protocal modbus Delian</tags>
<dependencies>
<dependency id="Modbus.Net" version="1.0.0" />
<dependency id="Modbus.Net" version="1.1.0" />
</dependencies>
</metadata>
<files>

View File

@@ -58,9 +58,9 @@ namespace Modbus.Net.Modbus
public ReadDataModbusInputStruct(byte belongAddress, string startAddress, ushort getCount, AddressTranslator addressTranslator)
{
BelongAddress = belongAddress;
KeyValuePair<int, int> translateAddress = addressTranslator.AddressTranslate(startAddress, true);
FunctionCode = (byte)translateAddress.Value;
StartAddress = (ushort)translateAddress.Key;
var translateAddress = addressTranslator.AddressTranslate(startAddress, true);
FunctionCode = (byte)translateAddress.Area;
StartAddress = (ushort)translateAddress.Address;
GetCount = getCount;
}
@@ -121,9 +121,9 @@ namespace Modbus.Net.Modbus
public WriteDataModbusInputStruct(byte belongAddress, string startAddress, object[] writeValue, AddressTranslator addressTranslator)
{
BelongAddress = belongAddress;
KeyValuePair<int, int> translateAddress = addressTranslator.AddressTranslate(startAddress, false);
FunctionCode = (byte)translateAddress.Value;
StartAddress = (ushort)translateAddress.Key;
var translateAddress = addressTranslator.AddressTranslate(startAddress, false);
FunctionCode = (byte)translateAddress.Area;
StartAddress = (ushort)translateAddress.Address;
WriteCount = (ushort)writeValue.Length;
WriteByteCount = 0;
WriteValue = writeValue;

View File

@@ -65,7 +65,7 @@ namespace Modbus.Net.Modbus
ModbusType = (ModbusType) connectionType;
}
protected override async Task<byte[]> GetDatasAsync(byte belongAddress, byte masterAddress, string startAddress, int getByteCount)
public override async Task<GetDataReturnDef> GetDatasAsync(byte belongAddress, byte masterAddress, string startAddress, int getByteCount)
{
try
{
@@ -74,7 +74,11 @@ namespace Modbus.Net.Modbus
var outputStruct = await
Wrapper.SendReceiveAsync(Wrapper[typeof (ReadDataModbusProtocal)], inputStruct) as
ReadDataModbusOutputStruct;
return outputStruct?.DataValue;
return new GetDataReturnDef()
{
ReturnValue = outputStruct?.DataValue,
IsLittleEndian = Wrapper[typeof(ReadDataModbusProtocal)].IsLittleEndian,
};
}
catch
{

View File

@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
// 方法是按如下所示使用“*”: :
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyVersion("1.1.0")]
[assembly: AssemblyFileVersion("1.1.0")]