Team.Feeder.FFFeeder 2.0.0-alpha2

Team.Feeder.FFFeeder

Team.Feeder.FFFeeder 是 FFFeeder 设备的完整客户端实现包。它把 TCP 连接、ASCII 花括号协议、设备参数读写、动作执行、实时状态轮询和参数导入导出统一封装成一个可直接给宿主使用的设备对象。

适用场景

  • 你要直接连接并控制 FFFeeder 设备。
  • 你需要振动程序集、料斗、序列、背光和系统参数的完整 API。
  • 你要做参数导出、导入或槽位复制。
  • 你希望 UI 能订阅高频实时状态,而不是自己轮询寄存器。

包内提供的核心对象

类型 作用
FFFeeder FFFeeder 的默认设备实现
IFFFeederDevice 聚合公共生命周期和全部 FFFeeder 专属能力
FFFeederOptions 设备级配置,包括连接信息、轮询周期、自动重连策略
FFFeederConnectionOptions TCP 连接参数、命令超时、Keep-Alive 等
IFFFeederLiveState 高频实时状态视图,适合 UI 订阅
IShakeProgramController 振动程序集/动作参数与平台动作控制
IHopperController 料斗动作与料斗参数控制
ISequenceController 序列读取、写入、启动和停止
ILightController 背光开关、亮度、超时、闪烁控制
ISystemSettingsController 全局阈值、输入触发序列、模拟量输出模式等系统参数

安装

dotnet add package Team.Feeder.FFFeeder

安装本包时会自动拉取 Team.Feeder.Abstractions 和 Team.Feeder.Core。

最小连接示例

using Team.Feeder.FFFeeder.Capabilities;
using Team.Feeder.FFFeeder.Devices;
using Team.Feeder.FFFeeder.Models;

var options = new FFFeederOptions
{
	LogicalName = "Line-01",
	MacAddress = "80:34:28:66:49:6A",
	ConnectionOptions = new FFFeederConnectionOptions
	{
		IPv4Address = "192.168.31.200",
		Port = 5000,
		ConnectTimeout = TimeSpan.FromSeconds(5),
		CommandTimeout = TimeSpan.FromMilliseconds(2000),
	},
};

await using var feeder = new FFFeeder(Guid.NewGuid(), "FFFeeder-01", options);

await feeder.InitializeAsync();
await feeder.ConnectAsync();

Console.WriteLine($"Connected: {feeder.Status.IsConnected}");
Console.WriteLine($"Model: {feeder.Descriptor.Model}");
Console.WriteLine($"Firmware: {feeder.Descriptor.FirmwareVersion}");

调用专属能力

IFFFeederDevice 把专属功能拆成若干子接口,但 FFFeeder 自己已经把这些接口都实现好了,所以最常见的用法是直接把对象当成 IFFFeederDevice 使用:

IFFFeederDevice device = feeder;

var shake = await device.GetShakeActionParametersAsync(1);
shake.Duration = TimeSpan.FromMilliseconds(300);
await device.UpdateShakeActionParametersAsync(1, shake);
await device.PersistShakeProgramsAsync();

await device.RunHopperFeedAsync();
await device.StartSequenceAsync(1);
await device.TurnLightOnAsync();

实时状态订阅

低频生命周期状态看 IFeeder.StatusChanged,高频动作/背光/告警状态看 IFFFeederLiveState:

device.LiveState.Changed += (_, args) =>
{
	Console.WriteLine($"PlatformBusy: {device.LiveState.IsPlatformBusy}");
	Console.WriteLine($"SequenceBusy: {device.LiveState.IsSequenceBusy}");
	Console.WriteLine($"BackLight: {device.LiveState.IsBackLightOn}");
};

这套设计的意图是把:

  • 生命周期变化放到 IFeeder.StatusChanged
  • 高频 UI 联动放到 LiveState

避免所有状态都挤在一条低频事件流里。

参数导出与导入

本包直接支持把设备参数导出成 JSON 快照,也支持按分区导回:

var filePath = await device.ExportAsync(@"D:\FeederExports");
await device.ImportSequencesAsync(filePath);
await device.ImportGlobalSettingsAsync(filePath);

如果你只想导出部分内容,可以用 FFFeederParameterSections 组合分区。

快照格式从 1.1 开始按 UV1~UV26 分别保存 Hopper A~Z 参数。导入时每个 UV 依次写入 SCA~SCZ 和 SBA~SBZ,随后只发送一次 {DV};26 条序列全部写完后只发送一次 {DS};全局寄存器按 WP33、34、36、37、40、44、65、66、105 的顺序写入,最后发送 {DG}。 旧版快照中单层 Hoppers 列表仍可导入,并会作为兼容配置应用到全部 UV。

Hopper 单动作读取使用 {LBA}~{LBZ},严格解析 Output1;A_Output1;Output2;A_Output2;Duration 五个字段;写入使用 {SBA=(...)}~{SBZ=(...)}, 设备响应必须与写入命令完全一致。两路模拟量按 0–100% 处理。

槽位复制

支持在同一台设备内部复制振动集、序列和 Hopper 组:

await device.CopyShakeProgramAsync(1, 2);
await device.CopySequenceAsync(1, 5);
await device.CopyHopperAsync(1, 3);

复制只更新当前设备 RAM 配置,不会自动落盘。需要保留时,请显式调用对应的 Persist* 方法或 PersistAllAsync()。

与其他包的关系

  • 想先扫描局域网设备再连接:搭配 Team.Feeder.Discovery。
  • 想统一管理多台设备:搭配 Team.Feeder.Service。
  • 想把发现、注册表、设备恢复封装成宿主后端:搭配 Team.Feeder.Host。
  • 想直接接入 WPF 控件:搭配 Team.Feeder.Controls.Wpf。

边界说明

  • 这里不做局域网扫描,发现能力在 Team.Feeder.Discovery。
  • 这里不做多设备注册表和宿主持久化。
  • 这里不提供 UI ViewModel 和控件。

如果你只是需要“扫描结果转设备实例”的宿主级封装,优先看 Team.Feeder.Host,不要把注册表和设备恢复逻辑自己重复写一遍。

Showing the top 20 packages that depend on Team.Feeder.FFFeeder.

Packages Downloads
Team.Feeder.Host
Shared host-side infrastructure for Team.Feeder desktop and CLI applications.
9
Team.Feeder.Controls.Wpf
WPF controls and resources for Team.Feeder.
8
Team.Feeder.Controls.Wpf
WPF controls and resources for Team.Feeder.
7
Team.Feeder.Host
Shared host-side infrastructure for Team.Feeder desktop and CLI applications.
6
Team.Feeder.Controls.Wpf
WPF controls and resources for Team.Feeder.
6
Team.Feeder.Host
Shared host-side infrastructure for Team.Feeder desktop and CLI applications.
5

.NET Standard 2.0

Version Downloads Last updated
2.0.2 13 09/19/2026
2.0.1 4 09/14/2026
2.0.0 6 09/02/2026
2.0.0-alpha2 6 09/02/2026