mirror of
https://gitee.com/iioter/iotgateway.git
synced 2024-12-02 03:38:01 +08:00
硬件介绍、解决表达式偶尔失效的bug
This commit is contained in:
parent
a3d635f192
commit
c55fb59442
@ -22,7 +22,6 @@ namespace Plugin
|
|||||||
private IMqttServer _MqttServer;
|
private IMqttServer _MqttServer;
|
||||||
private string connnectSetting = IoTBackgroundService.connnectSetting;
|
private string connnectSetting = IoTBackgroundService.connnectSetting;
|
||||||
private DBTypeEnum DBType = IoTBackgroundService.DBType;
|
private DBTypeEnum DBType = IoTBackgroundService.DBType;
|
||||||
private Interpreter interpreter = new();
|
|
||||||
public DeviceService(IConfiguration ConfigRoot, DriverService drvierManager, MyMqttClient myMqttClient, UAService uAService, IMqttServer mqttServer, ILogger<DeviceService> logger)
|
public DeviceService(IConfiguration ConfigRoot, DriverService drvierManager, MyMqttClient myMqttClient, UAService uAService, IMqttServer mqttServer, ILogger<DeviceService> logger)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
@ -137,7 +136,7 @@ namespace Plugin
|
|||||||
p.SetValue(DeviceObj, value);
|
p.SetValue(DeviceObj, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
var deviceThread = new DeviceThread(Device, DeviceObj, systemManage.GatewayName, _MyMqttClient, interpreter, _MqttServer, _logger);
|
var deviceThread = new DeviceThread(Device, DeviceObj, systemManage.GatewayName, _MyMqttClient, _MqttServer, _logger);
|
||||||
DeviceThreads.Add(deviceThread);
|
DeviceThreads.Add(deviceThread);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,21 +15,21 @@ namespace Plugin
|
|||||||
public readonly Device _device;
|
public readonly Device _device;
|
||||||
public readonly IDriver _driver;
|
public readonly IDriver _driver;
|
||||||
private readonly MyMqttClient _myMqttClient;
|
private readonly MyMqttClient _myMqttClient;
|
||||||
|
private Interpreter _interpreter ;
|
||||||
public Dictionary<Guid, DriverReturnValueModel> DeviceValues { get; set; } = new();
|
public Dictionary<Guid, DriverReturnValueModel> DeviceValues { get; set; } = new();
|
||||||
internal List<MethodInfo> Methods { get; set; }
|
internal List<MethodInfo> Methods { get; set; }
|
||||||
private Task task { get; set; } = null;
|
private Task task { get; set; } = null;
|
||||||
private DateTime TsStartDt = new DateTime(1970, 1, 1);
|
private DateTime TsStartDt = new DateTime(1970, 1, 1);
|
||||||
private CancellationTokenSource tokenSource = new CancellationTokenSource();
|
private CancellationTokenSource tokenSource = new CancellationTokenSource();
|
||||||
private Interpreter Interpreter = null;
|
|
||||||
private object _lock = new object();
|
private object _lock = new object();
|
||||||
private bool lastConnected = false;
|
private bool lastConnected = false;
|
||||||
public DeviceThread(Device device, IDriver driver, string ProjectId, MyMqttClient myMqttClient, Interpreter interpreter, IMqttServer mqttServer, ILogger logger)
|
public DeviceThread(Device device, IDriver driver, string ProjectId, MyMqttClient myMqttClient, IMqttServer mqttServer, ILogger logger)
|
||||||
{
|
{
|
||||||
_myMqttClient = myMqttClient;
|
_myMqttClient = myMqttClient;
|
||||||
_myMqttClient.OnExcRpc += MyMqttClient_OnExcRpc;
|
_myMqttClient.OnExcRpc += MyMqttClient_OnExcRpc;
|
||||||
_device = device;
|
_device = device;
|
||||||
_driver = driver;
|
_driver = driver;
|
||||||
Interpreter = interpreter;
|
_interpreter = new Interpreter();
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
Methods = _driver.GetType().GetMethods().Where(x => x.GetCustomAttribute(typeof(MethodAttribute)) != null).ToList();
|
Methods = _driver.GetType().GetMethods().Where(x => x.GetCustomAttribute(typeof(MethodAttribute)) != null).ToList();
|
||||||
if (_device.AutoStart)
|
if (_device.AutoStart)
|
||||||
@ -91,7 +91,7 @@ namespace Plugin
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ret.CookedValue = interpreter.Eval(DealMysqlStr(item.Expressions).Replace("raw", ret.Value?.ToString()));
|
ret.CookedValue = _interpreter.Eval(DealMysqlStr(item.Expressions).Replace("raw", ret.Value?.ToString()));
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
@ -268,6 +268,9 @@ namespace Plugin
|
|||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
_driver.Dispose();
|
_driver.Dispose();
|
||||||
|
_interpreter = null;
|
||||||
|
DeviceValues = null;
|
||||||
|
Methods = null;
|
||||||
_logger.LogInformation($"线程释放,{_device.DeviceName}");
|
_logger.LogInformation($"线程释放,{_device.DeviceName}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
37
README.md
37
README.md
@ -3,6 +3,8 @@
|
|||||||
## [教程文档:http://iotgateway.net](http://iotgateway.net/)
|
## [教程文档:http://iotgateway.net](http://iotgateway.net/)
|
||||||
## [在线体验:http://online.iotgateway.net](http://online.iotgateway.net/)
|
## [在线体验:http://online.iotgateway.net](http://online.iotgateway.net/)
|
||||||
|
|
||||||
|
## [配套硬件产品:http://iotgateway.net/docs/hardware/selection/](http://iotgateway.net/docs/hardware/selection/)
|
||||||
|
|
||||||
|
|
||||||
> 基于.NET6的跨平台物联网网关
|
> 基于.NET6的跨平台物联网网关
|
||||||
>
|
>
|
||||||
@ -20,7 +22,40 @@
|
|||||||
| ------ | ---- |
|
| ------ | ---- |
|
||||||
| ![wx](./images/wx.jpg) | ![qq](./images/qq.png) |
|
| ![wx](./images/wx.jpg) | ![qq](./images/qq.png) |
|
||||||
|
|
||||||
|
## 重磅推出硬件网关
|
||||||
|
|
||||||
|
受益于.netcore**跨平台**能力,此项目并**不限于**下面推荐的硬件设备,你可以在任何主机上运行,但是会针对特定硬件设备做**优化适配**,如
|
||||||
|
|
||||||
|
\- **性能监控**:cpu、内存、磁盘等主机指标监控
|
||||||
|
|
||||||
|
\- **硬件交互**:模拟量采集、继电器控制等
|
||||||
|
|
||||||
|
### 为何推荐
|
||||||
|
|
||||||
|
如果你购买了硬件网关:
|
||||||
|
|
||||||
|
- **间接为开源项目做贡献**,收益的一部分会投入到开源项目建设中去,包括但不限于云服务器资源租赁、先上线向下活动等
|
||||||
|
- 可以**免费使用**后续"企业版网关项目(筹)"
|
||||||
|
- 可以**免费使用**网络透传等服务
|
||||||
|
- 提供详细的**教程文档**,包括**Linux系统**、**dotnet跨平台等**
|
||||||
|
- 可用于**学习、评估、和生产环境**使用
|
||||||
|
|
||||||
|
### 产品列表
|
||||||
|
|
||||||
|
- 下列型号均有"**蓝牙BLE 5.0**、**Wi-Fi**"
|
||||||
|
- 搭载**Linux**操作系统```debian.11```
|
||||||
|
- 时间关系,目前只整理了 [A080](http://iotgateway.net/docs/hardware/A080/introduction) 型号的资料,其他用法差不多,后续会更新
|
||||||
|
- 9月后会推出**24v**版本
|
||||||
|
|
||||||
|
| 型号 | 触摸屏 | USB | 网口 |通讯口| SD扩展 | 4G | 电源|RTC|
|
||||||
|
| ------ | ---- |---- |---- |---- |------ | ---- |---- |---- |
|
||||||
|
| D070 | 无 | 4 | 千兆×1 | 无 |无|无| 5V|无|
|
||||||
|
| [A080](/docs/hardware/A080/introduction) | 无 | 2 | 千兆×1 | 232×1;485×4;can×1 |有|可选|12V|有|
|
||||||
|
| B100 | 无 | 2 | 百兆×1;千兆×1 | 232×1;485×1 |有|可选|12V|有|
|
||||||
|
| C210 | 10寸电容 | 2 | 千兆×1 | 232×4;485×2 |有|可选| 6~36V|有|
|
||||||
|
|
||||||
## 运行
|
## 运行
|
||||||
|
|
||||||
- [直接运行:http://iotgateway.net/docs/iotgateway/run/release-run](http://iotgateway.net/docs/iotgateway/run/release-run)
|
- [直接运行:http://iotgateway.net/docs/iotgateway/run/release-run](http://iotgateway.net/docs/iotgateway/run/release-run)
|
||||||
- [Docker运行:http://iotgateway.net/docs/iotgateway/run/docker-run](http://iotgateway.net/docs/iotgateway/run/docker-run)
|
- [Docker运行:http://iotgateway.net/docs/iotgateway/run/docker-run](http://iotgateway.net/docs/iotgateway/run/docker-run)
|
||||||
- [源码运行:http://iotgateway.net/docs/iotgateway/run/build-run](http://iotgateway.net/docs/iotgateway/run/build-run)
|
- [源码运行:http://iotgateway.net/docs/iotgateway/run/build-run](http://iotgateway.net/docs/iotgateway/run/build-run)
|
||||||
@ -56,7 +91,7 @@
|
|||||||
![variables](./images/variables.gif)
|
![variables](./images/variables.gif)
|
||||||
|
|
||||||
- 3D数字孪生Demo
|
- 3D数字孪生Demo
|
||||||
![3d](./images/3d.gif)
|
![3d](./images/3d.gif)
|
||||||
|
|
||||||
- 支持接入web组态项目
|
- 支持接入web组态项目
|
||||||
![scada](./images/scada.gif)
|
![scada](./images/scada.gif)
|
||||||
|
Loading…
Reference in New Issue
Block a user