NewLife/SmartA2

完成FullTest完全测试的编码
智能大石头 authored at 2025-05-23 00:35:58
70e688c
Tree
1 Parent(s) b789549
Summary: 17 changed files with 130 additions and 22 deletions.
Modified +2 -2
Modified +1 -1
Modified +2 -2
Modified +8 -0
Added +101 -0
Modified +1 -1
Modified +1 -1
Modified +1 -1
Modified +1 -1
Modified +1 -1
Modified +1 -1
Modified +2 -2
Modified +1 -1
Modified +2 -3
Modified +2 -2
Modified +2 -2
Modified +1 -1
Modified +2 -2
diff --git a/A2Flower/A2Flower.csproj b/A2Flower/A2Flower.csproj
index e25dac2..7558d0e 100644
--- a/A2Flower/A2Flower.csproj
+++ b/A2Flower/A2Flower.csproj
@@ -20,8 +20,8 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="NewLife.Core" Version="11.5.2025.501" />
-    <PackageReference Include="NewLife.Stardust" Version="3.3.2025.506" />
+    <PackageReference Include="NewLife.Core" Version="11.5.2025.519-beta1544" />
+    <PackageReference Include="NewLife.Stardust" Version="3.3.2025.516-beta1457" />
   </ItemGroup>
 
   <ItemGroup>
Modified +1 -1
diff --git a/Samples/BuzzerTest/BuzzerTest.csproj b/Samples/BuzzerTest/BuzzerTest.csproj
index 42bb8a6..9cc5bc1 100644
--- a/Samples/BuzzerTest/BuzzerTest.csproj
+++ b/Samples/BuzzerTest/BuzzerTest.csproj
@@ -21,7 +21,7 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="NewLife.IoT" Version="2.4.2025.520-beta1708" />
+    <PackageReference Include="NewLife.IoT" Version="2.5.2025.522-beta1610" />
   </ItemGroup>
 
 </Project>
Modified +2 -2
diff --git a/Samples/FullTest/FullTest.csproj b/Samples/FullTest/FullTest.csproj
index 591c5d5..8e7b39e 100644
--- a/Samples/FullTest/FullTest.csproj
+++ b/Samples/FullTest/FullTest.csproj
@@ -17,8 +17,8 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="NewLife.MQTT" Version="2.0.2025.415" />
-    <PackageReference Include="NewLife.Stardust" Version="3.3.2025.506" />
+    <PackageReference Include="NewLife.MQTT" Version="2.1.2025.519-beta1637" />
+    <PackageReference Include="NewLife.Stardust" Version="3.3.2025.516-beta1457" />
   </ItemGroup>
 
   <ItemGroup>
Modified +8 -0
diff --git a/Samples/FullTest/Program.cs b/Samples/FullTest/Program.cs
index 266ac60..a74fe04 100644
--- a/Samples/FullTest/Program.cs
+++ b/Samples/FullTest/Program.cs
@@ -1,7 +1,9 @@
 using FullTest;
+using NewLife.IoT.Controllers;
 using NewLife.Log;
 using NewLife.Model;
 using NewLife.MQTT;
+using SmartA2;
 using Stardust;
 
 // 启用控制台日志,拦截所有异常
@@ -14,11 +16,17 @@ services.AddSingleton(XTrace.Log);
 // 配置星尘。自动读取配置文件 config/star.config 中的服务器地址
 var star = services.AddStardust();
 
+// 注入业务所需服务
+var board = new A2();
+services.AddSingleton(board);
+services.AddSingleton<IBoard>(board);
+
 // 初始化Redis、MQTT、RocketMQ,注册服务到容器
 InitMqtt(services, star?.Tracer);
 
 // 注册后台任务 IHostedService
 services.AddHostedService<Worker>();
+services.AddHostedService<TestWorker>();
 
 // 异步阻塞,友好退出
 var host = services.BuildHost();
Added +101 -0
diff --git a/Samples/FullTest/TestWorker.cs b/Samples/FullTest/TestWorker.cs
new file mode 100644
index 0000000..47a39c1
--- /dev/null
+++ b/Samples/FullTest/TestWorker.cs
@@ -0,0 +1,101 @@
+using System.IO.Ports;
+using NewLife;
+using NewLife.IoT.Controllers;
+using NewLife.Log;
+using NewLife.Model;
+using SmartA2;
+
+namespace FullTest;
+
+internal class TestWorker(IBoard board) : IHostedService
+{
+    public Task StartAsync(CancellationToken cancellationToken)
+    {
+        _ = Task.Run(DoWork);
+
+        return Task.CompletedTask;
+    }
+
+    public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask;
+
+    private async Task DoWork()
+    {
+        var a2 = board as A2;
+
+        XTrace.WriteLine("输入输出测试");
+        {
+            var key = a2.Key;
+            key.KeyDown += (s, e) => XTrace.WriteLine("按键按下");
+            key.KeyUp += (s, e) => XTrace.WriteLine("按键弹起");
+
+            // 闪烁灯光、蜂鸣器若干次
+            var led = a2.Led;
+            //var buzzer = a2.Buzzer;
+            for (var i = 0; i < 5; i++)
+            {
+                led.Write(true);
+                //buzzer.Write(true);
+                await Task.Delay(500);
+
+                led.Write(false);
+                //buzzer.Write(false);
+                await Task.Delay(500);
+            }
+        }
+
+        XTrace.WriteLine("串口测试");
+        {
+            // 列出所有串口
+            var ports = SerialPort.GetPortNames();
+            XTrace.WriteLine("串口列表[{0}]:", ports.Length);
+            foreach (var item in ports)
+            {
+                XTrace.WriteLine(item);
+            }
+
+            // 打开串口并发送数据,然后关闭串口
+            using var port = a2.CreateSerial(Coms.COM1, 115200);
+            port.Open();
+
+            var buf = "Hello NewLife".GetBytes();
+            port.Write(buf, 0, buf.Length);
+        }
+
+        XTrace.WriteLine("温湿度传感器测试");
+        {
+            // 打开Modbus读取数据
+            using var modbus = a2.CreateModbus(Coms.COM2, 9600);
+            var sensor = new TemperatureSensor { Modbus = modbus };
+
+            XTrace.WriteLine("地址:{0:X2}", sensor.ReadAddress());
+            XTrace.WriteLine("标识:{0}", sensor.ReadID().ToHex());
+
+            var (hard, soft) = sensor.ReadVersion();
+            XTrace.WriteLine("硬件:{0}", hard);
+            XTrace.WriteLine("软件:{0}", soft);
+
+            var (temp, humi) = sensor.ReadValues();
+            XTrace.WriteLine("温度:{0:n1}", temp);
+            XTrace.WriteLine("湿度:{0:p1}", humi);
+        }
+
+        XTrace.WriteLine("继电器测试");
+        {
+            // 打开Modbus读取数据
+            using var modbus = a2.CreateModbus(Coms.COM3, 115200);
+            var relay = new RelayControl { Modbus = modbus };
+
+            XTrace.WriteLine("点位1:{0}", relay.Read(1));
+
+            for (var i = 0; i < 4; i++)
+            {
+                for (var j = 0; j < 4; j++)
+                {
+                    relay.Invert(j);
+                }
+
+                await Task.Delay(500);
+            }
+        }
+    }
+}
Modified +1 -1
diff --git a/Samples/KeyTest/KeyTest.csproj b/Samples/KeyTest/KeyTest.csproj
index 634cadd..21fa6e2 100644
--- a/Samples/KeyTest/KeyTest.csproj
+++ b/Samples/KeyTest/KeyTest.csproj
@@ -21,7 +21,7 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="NewLife.IoT" Version="2.4.2025.520-beta1708" />
+    <PackageReference Include="NewLife.IoT" Version="2.5.2025.522-beta1610" />
   </ItemGroup>
 
 </Project>
Modified +1 -1
diff --git a/Samples/LedTest/LedTest.csproj b/Samples/LedTest/LedTest.csproj
index 81e46f0..53ff76b 100644
--- a/Samples/LedTest/LedTest.csproj
+++ b/Samples/LedTest/LedTest.csproj
@@ -21,7 +21,7 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="NewLife.IoT" Version="2.4.2025.520-beta1708" />
+    <PackageReference Include="NewLife.IoT" Version="2.5.2025.522-beta1610" />
   </ItemGroup>
 
 </Project>
Modified +1 -1
diff --git a/Samples/NetClientTest/NetClientTest.csproj b/Samples/NetClientTest/NetClientTest.csproj
index fa5820d..a5f2987 100644
--- a/Samples/NetClientTest/NetClientTest.csproj
+++ b/Samples/NetClientTest/NetClientTest.csproj
@@ -17,7 +17,7 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="NewLife.Core" Version="11.5.2025.501" />
+    <PackageReference Include="NewLife.Core" Version="11.5.2025.519-beta1544" />
   </ItemGroup>
 
 </Project>
Modified +1 -1
diff --git a/Samples/NetServerTest/NetServerTest.csproj b/Samples/NetServerTest/NetServerTest.csproj
index dd752b6..279991e 100644
--- a/Samples/NetServerTest/NetServerTest.csproj
+++ b/Samples/NetServerTest/NetServerTest.csproj
@@ -17,7 +17,7 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="NewLife.Core" Version="11.5.2025.501" />
+    <PackageReference Include="NewLife.Core" Version="11.5.2025.519-beta1544" />
   </ItemGroup>
 
 </Project>
Modified +1 -1
diff --git a/Samples/Serial2NetClientTest/Serial2NetClientTest.csproj b/Samples/Serial2NetClientTest/Serial2NetClientTest.csproj
index 77fe7d3..9c8f8dc 100644
--- a/Samples/Serial2NetClientTest/Serial2NetClientTest.csproj
+++ b/Samples/Serial2NetClientTest/Serial2NetClientTest.csproj
@@ -17,7 +17,7 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="NewLife.Core" Version="11.5.2025.501" />
+    <PackageReference Include="NewLife.Core" Version="11.5.2025.519-beta1544" />
   </ItemGroup>
 
   <ItemGroup>
Modified +1 -1
diff --git a/Samples/Serial2NetServerTest/Serial2NetServerTest.csproj b/Samples/Serial2NetServerTest/Serial2NetServerTest.csproj
index b6ae440..681b028 100644
--- a/Samples/Serial2NetServerTest/Serial2NetServerTest.csproj
+++ b/Samples/Serial2NetServerTest/Serial2NetServerTest.csproj
@@ -17,7 +17,7 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="NewLife.Core" Version="11.5.2025.501" />
+    <PackageReference Include="NewLife.Core" Version="11.5.2025.519-beta1544" />
   </ItemGroup>
 
 </Project>
Modified +2 -2
diff --git a/Samples/SerialTest/SerialTest.csproj b/Samples/SerialTest/SerialTest.csproj
index 3d1ce64..23eaa23 100644
--- a/Samples/SerialTest/SerialTest.csproj
+++ b/Samples/SerialTest/SerialTest.csproj
@@ -17,8 +17,8 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="NewLife.Core" Version="11.5.2025.501" />
-    <PackageReference Include="NewLife.IoT" Version="2.4.2025.520-beta1708" />
+    <PackageReference Include="NewLife.Core" Version="11.5.2025.519-beta1544" />
+    <PackageReference Include="NewLife.IoT" Version="2.5.2025.522-beta1610" />
   </ItemGroup>
 
   <ItemGroup>
Modified +1 -1
diff --git a/Samples/UsbPowerTest/UsbPowerTest.csproj b/Samples/UsbPowerTest/UsbPowerTest.csproj
index ee74106..3c531eb 100644
--- a/Samples/UsbPowerTest/UsbPowerTest.csproj
+++ b/Samples/UsbPowerTest/UsbPowerTest.csproj
@@ -21,7 +21,7 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="NewLife.IoT" Version="2.4.2025.520-beta1708" />
+    <PackageReference Include="NewLife.IoT" Version="2.5.2025.522-beta1610" />
   </ItemGroup>
 
 </Project>
Modified +2 -3
diff --git a/SmartA2/RelayControl.cs b/SmartA2/RelayControl.cs
index 378003e..cebe5ae 100644
--- a/SmartA2/RelayControl.cs
+++ b/SmartA2/RelayControl.cs
@@ -1,5 +1,4 @@
-using NewLife;
-using NewLife.IoT.Protocols;
+using NewLife.IoT.Controllers;
 
 namespace SmartA2;
 
@@ -7,7 +6,7 @@ namespace SmartA2;
 public class RelayControl
 {
     /// <summary>Modbus对象</summary>
-    public Modbus Modbus { get; set; }
+    public IModbus Modbus { get; set; }
 
     /// <summary>主机地址</summary>
     public Byte Host { get; set; } = 1;
Modified +2 -2
diff --git a/SmartA2/SmartA2.csproj b/SmartA2/SmartA2.csproj
index 8ae059c..ba78a0b 100644
--- a/SmartA2/SmartA2.csproj
+++ b/SmartA2/SmartA2.csproj
@@ -49,8 +49,8 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="NewLife.IoT" Version="2.4.2025.520-beta1708" />
-    <PackageReference Include="NewLife.ModbusRTU" Version="2.0.2025.516-beta1501" />
+    <PackageReference Include="NewLife.IoT" Version="2.5.2025.522-beta1610" />
+    <PackageReference Include="NewLife.ModbusRTU" Version="2.0.2025.522-beta1626" />
   </ItemGroup>
 
   <ItemGroup>
Modified +2 -2
diff --git a/SmartA2/TemperatureSensor.cs b/SmartA2/TemperatureSensor.cs
index ebc8364..6f1b42b 100644
--- a/SmartA2/TemperatureSensor.cs
+++ b/SmartA2/TemperatureSensor.cs
@@ -1,5 +1,5 @@
 using NewLife;
-using NewLife.IoT.Protocols;
+using NewLife.IoT.Controllers;
 
 namespace SmartA2;
 
@@ -7,7 +7,7 @@ namespace SmartA2;
 public class TemperatureSensor
 {
     /// <summary>Modbus对象</summary>
-    public Modbus Modbus { get; set; }
+    public IModbus Modbus { get; set; }
 
     /// <summary>主机地址</summary>
     public Byte Host { get; set; } = 1;
Modified +1 -1
diff --git a/XUnitTest/XUnitTest.csproj b/XUnitTest/XUnitTest.csproj
index 92bca2f..05fe9c4 100644
--- a/XUnitTest/XUnitTest.csproj
+++ b/XUnitTest/XUnitTest.csproj
@@ -10,7 +10,7 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.13.0" />
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.0" />
     <PackageReference Include="NewLife.UnitTest" Version="1.0.2025.101" />
     <PackageReference Include="System.Speech" Version="9.0.5" />
     <PackageReference Include="xunit" Version="2.9.3" />