Fix
This commit is contained in:
@@ -11,7 +11,7 @@ namespace Modbus.Net.Modbus
|
||||
{
|
||||
public class ModbusRtuDataReceiver
|
||||
{
|
||||
private ModbusRtuProtocolReceiver _receiver;
|
||||
private List<ModbusRtuProtocolReceiver> _receivers;
|
||||
|
||||
private readonly IConfigurationRoot configuration = new ConfigurationBuilder()
|
||||
.SetBasePath(Directory.GetCurrentDirectory())
|
||||
@@ -59,10 +59,14 @@ namespace Modbus.Net.Modbus
|
||||
|
||||
public ModbusRtuDataReceiver(MachineDataType dataType)
|
||||
{
|
||||
_receiver = new ModbusRtuProtocolReceiver(ConfigurationReader.GetValue("Receiver", "d:connectionString"), int.Parse(ConfigurationReader.GetValue("Receiver", "g:slaveAddress")));
|
||||
var machineName = ConfigurationReader.GetValue("Receiver", "a:id");
|
||||
var addressMapName = ConfigurationReader.GetValue("Receiver", "e:addressMap");
|
||||
var endian = ValueHelper.GetInstance(Endian.Parse(ConfigurationReader.GetValue("Receiver", "i:endian")));
|
||||
_receivers = new List<ModbusRtuProtocolReceiver>();
|
||||
var receiversDef = configuration.GetSection("Modbus.Net").GetSection("Receiver").GetChildren();
|
||||
foreach (var receiverDef in receiversDef)
|
||||
{
|
||||
var _receiver = new ModbusRtuProtocolReceiver(receiverDef.GetValue<string>("d:connectionString"), receiverDef.GetValue<int>("g:slaveAddress"));
|
||||
var machineName = receiverDef.GetValue<string>("a:id");
|
||||
var addressMapName = receiverDef.GetValue<string>("e:addressMap");
|
||||
var endian = ValueHelper.GetInstance(Endian.Parse(receiverDef.GetValue<string>("i:endian")));
|
||||
_receiver.DataProcess = receiveContent =>
|
||||
{
|
||||
var returnTime = DateTime.Now;
|
||||
@@ -190,11 +194,19 @@ namespace Modbus.Net.Modbus
|
||||
if (returnBytes != null) return returnBytes;
|
||||
else return null;
|
||||
};
|
||||
_receivers.Add(_receiver);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public async Task<bool> ConnectAsync()
|
||||
{
|
||||
return await _receiver.ConnectAsync();
|
||||
var result = await Task.FromResult(Parallel.ForEach(_receivers, async _receiver =>
|
||||
{
|
||||
await _receiver.ConnectAsync();
|
||||
}));
|
||||
return result.IsCompleted;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user