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:
@@ -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,
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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")]
|
||||
|
||||
Reference in New Issue
Block a user