Fix
This commit is contained in:
@@ -410,7 +410,7 @@ namespace Modbus.Net.Modbus
|
||||
FunctionCode == (byte) ModbusProtocalWriteDataFunctionCode.WriteSingleCoil
|
||||
? ((bool) writeValue
|
||||
? new byte[] {0xFF, 0x00}
|
||||
: new byte[] {0x00, 0xFF})
|
||||
: new byte[] {0x00, 0x00})
|
||||
: ValueHelper.GetInstance(endian).GetBytes(ushort.Parse(writeValue.ToString()));
|
||||
WriteValue = writeByteValue;
|
||||
}
|
||||
|
||||
@@ -273,6 +273,46 @@ namespace Modbus.Net.Tests
|
||||
Assert.AreEqual(ans3["A6"].PlcValue, dic1["A6"]);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public async Task ModbusWriteSingleTest()
|
||||
{
|
||||
Random r = new Random();
|
||||
|
||||
var dic1 = new Dictionary<string, double>()
|
||||
{
|
||||
{
|
||||
"4X 1", r.Next(0, UInt16.MaxValue)
|
||||
}
|
||||
};
|
||||
|
||||
var dic2 = new Dictionary<string, double>()
|
||||
{
|
||||
{
|
||||
"0X 1", r.Next(0, 2)
|
||||
}
|
||||
};
|
||||
|
||||
await _modbusTcpMachine.BaseUtility.GetUtilityMethods<IUtilityMethodWriteSingle>().SetSingleDataAsync("4X 1", dic1["4X 1"]);
|
||||
await _modbusAsciiMachine.BaseUtility.GetUtilityMethods<IUtilityMethodWriteSingle>().SetSingleDataAsync("4X 1", dic1["4X 1"]);
|
||||
await _modbusRtuMachine.BaseUtility.GetUtilityMethods<IUtilityMethodWriteSingle>().SetSingleDataAsync("4X 1", dic1["4X 1"]);
|
||||
var ans = await _modbusTcpMachine.BaseUtility.GetUtilityMethods<IUtilityMethodData>().GetDatasAsync<ushort>("4X 1", 1);
|
||||
var ans2 = await _modbusRtuMachine.BaseUtility.GetUtilityMethods<IUtilityMethodData>().GetDatasAsync<ushort>("4X 1", 1);
|
||||
var ans3 = await _modbusAsciiMachine.BaseUtility.GetUtilityMethods<IUtilityMethodData>().GetDatasAsync<ushort>("4X 1", 1);
|
||||
Assert.AreEqual(ans[0], dic1["4X 1"]);
|
||||
Assert.AreEqual(ans2[0], dic1["4X 1"]);
|
||||
Assert.AreEqual(ans3[0], dic1["4X 1"]);
|
||||
await _modbusTcpMachine.BaseUtility.GetUtilityMethods<IUtilityMethodWriteSingle>().SetSingleDataAsync("0X 1", dic2["0X 1"] >= 1);
|
||||
await _modbusAsciiMachine.BaseUtility.GetUtilityMethods<IUtilityMethodWriteSingle>().SetSingleDataAsync("0X 1", dic2["0X 1"] >= 1);
|
||||
await _modbusRtuMachine.BaseUtility.GetUtilityMethods<IUtilityMethodWriteSingle>().SetSingleDataAsync("0X 1", dic2["0X 1"] >= 1);
|
||||
var ans21 = await _modbusTcpMachine.BaseUtility.GetUtilityMethods<IUtilityMethodData>().GetDatasAsync<bool>("0X 1", 1);
|
||||
var ans22 = await _modbusRtuMachine.BaseUtility.GetUtilityMethods<IUtilityMethodData>().GetDatasAsync<bool>("0X 1", 1);
|
||||
var ans23 = await _modbusAsciiMachine.BaseUtility.GetUtilityMethods<IUtilityMethodData>().GetDatasAsync<bool>("0X 1", 1);
|
||||
Assert.AreEqual(ans21[0] ? 1 : 0, dic2["0X 1"]);
|
||||
Assert.AreEqual(ans22[0] ? 1 : 0, dic2["0X 1"]);
|
||||
Assert.AreEqual(ans23[0] ? 1 : 0, dic2["0X 1"]);
|
||||
}
|
||||
|
||||
|
||||
[TestCleanup]
|
||||
public void MachineClean()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user