| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- using System;
- using System.Threading.Tasks;
- using TeamAAS.Feeder.Attributes;
- using TeamAAS.Feeder.Interfaces;
- using TeamAAS.Feeder.UI;
- using TeamAAS.Feeder.Enums;
- using TeamAAS.Feeder.Models;
- namespace TeamAAS.Feeder.Devices
- {
- /// <summary>
- /// Afag 品牌供料器骨架:已按插槽规格注册(品牌 + 专属调试页),
- /// 协议收发待开发——命令类方法目前统一抛出"待开发"提示,连接层仅保留 TCP 骨架。
- /// </summary>
- [Feeder("Afag 供料器", FeederBrand.Afag, Description = "待开发", DebugPageType = typeof(AfagFeederDebugPage))]
- public class AfagFeeder : IFeeder
- {
- private readonly object _ioLock = new object();
- private System.Net.Sockets.TcpClient _tcp;
- private volatile bool _manualDisconnect;
- public Guid Id { get; }
- public int FeederNo { get; }
- public string Name { get; }
- public FeederBrand Brand => FeederBrand.Afag;
- public bool IsConnected => _tcp?.Connected ?? false;
- public bool IsBacklightOn { get; private set; }
- public event Action<IFeeder, bool> ConnectionChanged;
- public event Action<IFeeder, string, bool> MessageExchanged;
- private string IP { get; }
- private int Port { get; }
- public AfagFeeder(Guid id, int feederNo, string name, string ip, int port)
- {
- Id = id;
- FeederNo = feederNo;
- Name = name;
- IP = ip;
- Port = port;
- }
- public async Task ConnectAsync()
- {
- _manualDisconnect = false;
- await Task.Run(() =>
- {
- _tcp = new System.Net.Sockets.TcpClient();
- _tcp.Connect(System.Net.IPAddress.Parse(IP), Port);
- ConnectionChanged?.Invoke(this, true);
- });
- }
- public async Task DisconnectAsync()
- {
- _manualDisconnect = true;
- await Task.Run(() =>
- {
- try { _tcp?.Close(); } catch { }
- ConnectionChanged?.Invoke(this, false);
- });
- }
- public void Dispose()
- {
- _manualDisconnect = true;
- try { _tcp?.Close(); } catch { }
- }
- private void EnsureDeveloping()
- {
- if (!IsConnected)
- throw new InvalidOperationException("Afag 供料器未连接");
- throw new NotSupportedException("Afag 供料器协议待开发");
- }
- public Task OpenBacklightAsync() { EnsureDeveloping(); return Task.CompletedTask; }
- public Task CloseBacklightAsync() { EnsureDeveloping(); return Task.CompletedTask; }
- public Task<bool> QueryBacklightAsync() { EnsureDeveloping(); return Task.FromResult(false); }
- public Task<int> RunDirectionAsync(FeederAction action, int? durationMs = null) { EnsureDeveloping(); return Task.FromResult(0); }
- public Task StopAsync() { EnsureDeveloping(); return Task.CompletedTask; }
- public Task<SingleActionParam> GetActionParamAsync(int index) { EnsureDeveloping(); return Task.FromResult(new SingleActionParam()); }
- public Task SetActionParamAsync(int index, SingleActionParam param) { EnsureDeveloping(); return Task.CompletedTask; }
- public Task DownloadAllParamsAsync(FeederInfo info) { EnsureDeveloping(); return Task.CompletedTask; }
- public Task SaveToDeviceAsync() { EnsureDeveloping(); return Task.CompletedTask; }
- public Task<FeederSystemParam> GetSystemParamAsync() { EnsureDeveloping(); return Task.FromResult(new FeederSystemParam()); }
- public Task SetSystemParamAsync(FeederSystemParam param) { EnsureDeveloping(); return Task.CompletedTask; }
- public Task<HopperOutputParam> GetHopperParamAsync(int group) { EnsureDeveloping(); return Task.FromResult(new HopperOutputParam()); }
- public Task SetHopperParamAsync(int group, HopperOutputParam param) { EnsureDeveloping(); return Task.CompletedTask; }
- public Task<int> RunHopperOutputAsync(int id, int? timespan = null) { EnsureDeveloping(); return Task.FromResult(0); }
- public Task StopHopperOutputAsync() { EnsureDeveloping(); return Task.CompletedTask; }
- public Task<int> GetInputTriggerAsync(int index) { EnsureDeveloping(); return Task.FromResult(0); }
- public Task SetInputTriggerAsync(int index, int sequenceId) { EnsureDeveloping(); return Task.CompletedTask; }
- public Task<int> ReadParamAsync(int id) { EnsureDeveloping(); return Task.FromResult(0); }
- public Task WriteParamAsync(int id, int value) { EnsureDeveloping(); return Task.CompletedTask; }
- }
- }
|