123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- namespace MinicsUI.Connector;
- public partial class HubReceiver
- {
- public HubReceiver(Hardwares hardwares, TemperatureConfigs configs, AlarmRealtime alarmRealtime, DatabaseCleaner databaseCleaner)
- {
- _hardwares = hardwares;
- _configs = configs;
- _alarmRealtime = alarmRealtime;
- _dataUpdateQueue ??= new(DataUpdateQueueHandler);
- _databaseCleaner = databaseCleaner;
- }
- private readonly DatabaseCleaner _databaseCleaner;
- private readonly Hardwares _hardwares;
- private readonly TemperatureConfigs _configs;
- private readonly AlarmRealtime _alarmRealtime;
- private readonly EventQueue<(byte, byte, ChannelData)> _dataUpdateQueue;
- public void UpdateDataBaseInfo(int duration, DateTime dateTime)
- {
- _databaseCleaner.KeepRange = (uint)duration;
- _databaseCleaner.LastCheckDate = dateTime;
- }
- public void UpdateSingleChannel(byte mini8Index, byte channelIndex, ChannelData channelData)
- {
- if (!_hardwares.Mini8Channels.TryGetValue(mini8Index, out var channels) || channels is null)
- return;
- if (!channels.TryGetValue(channelIndex, out Channel? channel) || channel is null)
- return;
- channelData.Adapt(channel);
- }
- public void UpdateChannels(byte key, List<ChannelData> value)
- {
- if (!_hardwares.Mini8s.TryGetValue(key, out Mini8Info? mini8) || mini8 is null || string.IsNullOrEmpty(mini8.Name))
- return;
- _hardwares.Mini8Channels[key] ??= [];
- foreach (ChannelData channelModel in value)
- {
- if (!_hardwares.Mini8Channels[key].TryGetValue(channelModel.ChannelIndex, out Channel? channel) || channel is null)
- {
- //channel = new(mini8.Name);
- channel = new();
- channelModel.Adapt(channel);
- _hardwares.Mini8Channels[key][channel.ChannelIndex] = channel;
- }
- channelModel.Adapt(channel);
- }
- }
- public void ClearFiles()
- {
- Application.Current.Dispatcher.Invoke(() =>
- {
- _configs.ConfigFiles?.Clear();
- });
- }
- public void UpdateFiles(TemperatureConfig value)
- {
- TempConfig tempConfig = new();
- value.Adapt(tempConfig);
- Application.Current.Dispatcher.Invoke(() =>
- {
- _configs.ConfigFiles.Add(tempConfig);
- });
- }
- public void UpdateAddress(byte key, Mini8Address address)
- {
- if (!_hardwares.Mini8s.TryGetValue(key, out Mini8Info? mini8) || mini8 is null)
- return;
- mini8.Address = address.Address;
- mini8.Port = address.Port;
- }
- public void CurrentFile(TemperatureConfig config)
- {
- if (config is null)
- return;
- TempConfig tempConfig = new();
- config.Adapt(tempConfig);
- CurrentTempConfig currentTempConfig = new()
- {
- Selector = TempConfigSelector.Manual,
- SelectedTime = DateTime.Now,
- ConfigFile = tempConfig,
- };
- _configs.CurrentConfigFile = currentTempConfig;
- }
- public void Mini8Connect(byte key, bool isConnect)
- {
- if (!_hardwares.Mini8s.TryGetValue(key, out Mini8Info? mini8) || mini8 is null)
- return;
- if (!mini8.Enable)
- return;
- mini8.IsConnected = isConnect;
- }
- public void AlarmNotify(byte mini8, byte channel, float temperature)
- {
- _alarmRealtime.InsertAlarm(mini8, channel, temperature);
- }
- public void AlarmTcBrockenNotify(byte mini8, byte channel)
- {
- _alarmRealtime.InsertTcBrocken(mini8, channel);
- }
- public void ChannelDataUpdate(byte mini8Index, byte channelIndex, ChannelData data)
- => _dataUpdateQueue.Enqueue(new(mini8Index, channelIndex, data));
- private void DataUpdateQueueHandler((byte mini8Index, byte channelIndex, ChannelData data) mini8Input)
- {
- if (!_hardwares.Mini8s.TryGetValue(mini8Input.mini8Index, out Mini8Info? mini8) || mini8 is null)
- return;
- if (!mini8.Enable)
- return;
- if (!_hardwares.Mini8Channels.TryGetValue(mini8Input.mini8Index, out var channels) || channels is null)
- return;
- if (!channels.TryGetValue(mini8Input.channelIndex, out Channel? channel) || channel is null)
- return;
- mini8Input.data.Adapt(channel);
- //Try Cancel Alarm
- if (channel.Status.In(ChannelSuatus.Warning, ChannelSuatus.Normal))
- _alarmRealtime.CancelAlarm(mini8.Index, channel.ChannelIndex);
- Mini8Status finalStatus = Mini8Status.Normal;
- foreach (Channel item in channels.Values)
- {
- if (item.Inhibit == Inhibit.Disable)
- continue;
- switch (item.Status)
- {
- case ChannelSuatus.Error:
- mini8.Status = Mini8Status.Error;
- return;
- case ChannelSuatus.Warning:
- finalStatus = Mini8Status.Warning;
- continue;
- default:
- continue;
- }
- }
- mini8.Status = finalStatus;
- }
- }
|