实例介绍
IoTGateway是一个基于.NET6的跨平台物联网网关,采用B/S架构和可视化配置,可连接各种设备和系统,包括PLC、扫码枪、CNC、数据库、串口设备、上位机、非标设备、OPC Server、OPC UA Server、Mqtt Server等。通过北向连接,可与IoTSharp、ThingsCloud、ThingsBoard、华为云或自己的物联网平台(MES、SCADA)进行双向数据通讯。此外,还支持边缘计算。
IoTGateway支持西门子PLC、三菱PLC、Modbus、欧姆龙PLC、OPCUA、OPCDA、ABPLC、MT机床、Fanuc CNC等设备,驱动支持扩展,支持设备数据写入、计算表达式、变化上传和定时归档。
北向连接支持第三方平台,如iotsharp、thingscloud、thingsboard、华为云等,可进行遥测、属性上传和RPC反向控制。
IoTGateway内置了Mqtt服务(1888、1888/mqtt),支持websocker-mqtt,可直连MES、SCADA等系统。同时还内置了OpcUA(opc.tcp://localhost:62541/Quickstarts/ReferenceServer),使设备可以通过OPCUA与其他设备通讯。此外,还有内置的ModbusSlave(模拟设备),端口503。
【实例截图】
【核心代码】
文件清单
└── iotgateway-dfb56687d7a7541a242fdc4ddae74f7300297657
├── 3d
│ ├── 3d.html
│ ├── css
│ │ └── main.css
│ ├── image
│ │ ├── 10.png
│ │ ├── info.png
│ │ ├── line.png
│ │ └── traffic_01.png
│ ├── lib
│ │ ├── CSS3DRenderer.js
│ │ ├── dat.gui.min.js
│ │ ├── DRACOLoader.js
│ │ ├── gltf
│ │ │ ├── draco_decoder.js
│ │ │ ├── draco_decoder.wasm
│ │ │ ├── draco_encoder.js
│ │ │ └── draco_wasm_wrapper.js
│ │ ├── GLTFLoader.js
│ │ ├── OrbitControls.js
│ │ ├── RoomEnvironment.js
│ │ ├── ShaderPass.js
│ │ ├── stats.module.js
│ │ └── three.module.js
│ └── model
│ └── LittlestTokyo.glb
├── Dockerfile
├── drivers
│ └── net6.0
│ ├── CNC.Fanuc.deps.json
│ ├── CNC.Fanuc.dll
│ ├── CNC.Fanuc.H.deps.json
│ ├── CNC.Fanuc.H.dll
│ ├── CNC.Fanuc.H.pdb
│ ├── CNC.Fanuc.pdb
│ ├── CNC.MTConnect.deps.json
│ ├── CNC.MTConnect.dll
│ ├── CNC.MTConnect.pdb
│ ├── HslCommunication.dll
│ ├── Interop.OPCAutomation.dll
│ ├── IoTClient.dll
│ ├── Microsoft.Extensions.Logging.Abstractions.dll
│ ├── Mock.TcpClient.deps.json
│ ├── Mock.TcpClient.dll
│ ├── Mock.TcpClient.pdb
│ ├── Newtonsoft.Json.dll
│ ├── OPC.DaClient.deps.json
│ ├── OPC.DaClient.dll
│ ├── OPC.DaClient.pdb
│ ├── OPC.UaClient.deps.json
│ ├── Opc.Ua.Client.dll
│ ├── OPC.UaClient.dll
│ ├── OPC.UaClient.pdb
│ ├── Opc.Ua.Configuration.dll
│ ├── Opc.Ua.Core.dll
│ ├── Opc.Ua.Security.Certificates.dll
│ ├── OpenNETCF.Extensions.dll
│ ├── OpenNETCF.MTConnect.Client.dll
│ ├── OpenNETCF.MTConnect.Common.dll
│ ├── OpenNETCF.RestConnector.dll
│ ├── Other.Toledo.deps.json
│ ├── Other.Toledo.dll
│ ├── Other.Toledo.pdb
│ ├── PLC.AllenBradley.deps.json
│ ├── PLC.AllenBradley.dll
│ ├── PLC.AllenBradley.pdb
│ ├── PLC.MelsecMc.deps.json
│ ├── PLC.MelsecMc.dll
│ ├── PLC.MelsecMc.pdb
│ ├── PLC.ModBusMaster.deps.json
│ ├── PLC.ModBusMaster.dll
│ ├── PLC.ModBusMaster.pdb
│ ├── PLC.OmronFins.deps.json
│ ├── PLC.OmronFins.dll
│ ├── PLC.OmronFins.pdb
│ ├── PLC.SiemensS7.deps.json
│ ├── PLC.SiemensS7.dll
│ ├── PLC.SiemensS7.pdb
│ ├── PluginInterface.dll
│ ├── PluginInterface.pdb
│ ├── SimpleTCP.Core.dll
│ └── System.IO.Ports.dll
├── Export_DeviceSettings_本地.xlsx
├── Export_DeviceSettings_线上.xlsx
├── images
│ ├── 3d.gif
│ ├── ali-pay.png
│ ├── change-upload.png
│ ├── express.png
│ ├── gitee.png
│ ├── github.png
│ ├── gvp.png
│ ├── mqtt.png
│ ├── official.png
│ ├── online.png
│ ├── opcua.png
│ ├── qq.png
│ ├── rpc.gif
│ ├── scada-config.png
│ ├── scada.gif
│ ├── set-variable.png
│ ├── variables.gif
│ ├── wxgroup.png
│ ├── wx.jpg
│ └── wx-pay.jpg
├── IoTGateway
│ ├── appsettings.json
│ ├── Areas
│ │ ├── _Admin
│ │ │ ├── ApiControllers
│ │ │ │ ├── AccountController.cs
│ │ │ │ ├── ActionLogController.cs
│ │ │ │ ├── DataPrivilegeController.cs
│ │ │ │ ├── FileApiController.cs
│ │ │ │ ├── FrameworkGroupController.cs
│ │ │ │ ├── FrameworkMenuController.cs
│ │ │ │ ├── FrameworkRoleController.cs
│ │ │ │ └── FrameworkUserController.cs
│ │ │ ├── Controllers
│ │ │ │ ├── ActionLogController.cs
│ │ │ │ ├── DataPrivilegeController.cs
│ │ │ │ ├── FrameworkGroupController.cs
│ │ │ │ ├── FrameworkMenuController.cs
│ │ │ │ ├── FrameworkRoleController.cs
│ │ │ │ └── FrameworkUserController.cs
│ │ │ └── Views
│ │ │ ├── ActionLog
│ │ │ │ ├── BatchDelete.cshtml
│ │ │ │ ├── Details.cshtml
│ │ │ │ └── Index.cshtml
│ │ │ ├── DataPrivilege
│ │ │ │ ├── Create.cshtml
│ │ │ │ ├── Edit.cshtml
│ │ │ │ └── Index.cshtml
│ │ │ ├── FrameworkGroup
│ │ │ │ ├── BatchDelete.cshtml
│ │ │ │ ├── Create.cshtml
│ │ │ │ ├── DataFunction.cshtml
│ │ │ │ ├── Delete.cshtml
│ │ │ │ ├── Edit.cshtml
│ │ │ │ ├── Import.cshtml
│ │ │ │ └── Index.cshtml
│ │ │ ├── FrameworkMenu
│ │ │ │ ├── Create.cshtml
│ │ │ │ ├── Delete.cshtml
│ │ │ │ ├── Details.cshtml
│ │ │ │ ├── Edit.cshtml
│ │ │ │ ├── Index.cshtml
│ │ │ │ └── UnsetPages.cshtml
│ │ │ ├── FrameworkRole
│ │ │ │ ├── BatchDelete.cshtml
│ │ │ │ ├── Create.cshtml
│ │ │ │ ├── Delete.cshtml
│ │ │ │ ├── Details.cshtml
│ │ │ │ ├── Edit.cshtml
│ │ │ │ ├── Import.cshtml
│ │ │ │ ├── Index.cshtml
│ │ │ │ └── PageFunction.cshtml
│ │ │ ├── FrameworkUser
│ │ │ │ ├── BatchDelete.cshtml
│ │ │ │ ├── BatchEdit.cshtml
│ │ │ │ ├── Create.cshtml
│ │ │ │ ├── Delete.cshtml
│ │ │ │ ├── Details.cshtml
│ │ │ │ ├── Edit.cshtml
│ │ │ │ ├── Import.cshtml
│ │ │ │ ├── Index.cshtml
│ │ │ │ └── Password.cshtml
│ │ │ └── _ViewImports.cshtml
│ │ ├── API
│ │ │ └── DeviceController.cs
│ │ ├── BasicData
│ │ │ ├── Controllers
│ │ │ │ ├── DeviceConfigController.cs
│ │ │ │ ├── DeviceController.cs
│ │ │ │ ├── DeviceVariableController.cs
│ │ │ │ └── DriverController.cs
│ │ │ └── Views
│ │ │ ├── Device
│ │ │ │ ├── Attribute.cshtml
│ │ │ │ ├── BatchDelete.cshtml
│ │ │ │ ├── BatchEdit.cshtml
│ │ │ │ ├── Copy.cshtml
│ │ │ │ ├── Create.cshtml
│ │ │ │ ├── CreateGroup.cshtml
│ │ │ │ ├── Delete.cshtml
│ │ │ │ ├── Details.cshtml
│ │ │ │ ├── Edit.cshtml
│ │ │ │ ├── Import.cshtml
│ │ │ │ ├── ImportExcel.cshtml
│ │ │ │ └── Index.cshtml
│ │ │ ├── DeviceConfig
│ │ │ │ ├── BatchDelete.cshtml
│ │ │ │ ├── BatchEdit.cshtml
│ │ │ │ ├── Create.cshtml
│ │ │ │ ├── Delete.cshtml
│ │ │ │ ├── Details.cshtml
│ │ │ │ ├── Edit.cshtml
│ │ │ │ ├── Import.cshtml
│ │ │ │ └── Index.cshtml
│ │ │ ├── DeviceVariable
│ │ │ │ ├── BatchDelete.cshtml
│ │ │ │ ├── BatchEdit.cshtml
│ │ │ │ ├── Create.cshtml
│ │ │ │ ├── Delete.cshtml
│ │ │ │ ├── Details.cshtml
│ │ │ │ ├── Edit.cshtml
│ │ │ │ ├── Import.cshtml
│ │ │ │ ├── Index.cshtml
│ │ │ │ └── SetValue.cshtml
│ │ │ └── Driver
│ │ │ ├── BatchDelete.cshtml
│ │ │ ├── BatchEdit.cshtml
│ │ │ ├── Create.cshtml
│ │ │ ├── Delete.cshtml
│ │ │ ├── Details.cshtml
│ │ │ ├── Edit.cshtml
│ │ │ ├── Import.cshtml
│ │ │ └── Index.cshtml
│ │ ├── Config
│ │ │ ├── Controllers
│ │ │ │ └── SystemConfigController.cs
│ │ │ └── Views
│ │ │ └── SystemConfig
│ │ │ ├── BatchDelete.cshtml
│ │ │ ├── BatchEdit.cshtml
│ │ │ ├── Create.cshtml
│ │ │ ├── Delete.cshtml
│ │ │ ├── Details.cshtml
│ │ │ ├── Edit.cshtml
│ │ │ ├── Import.cshtml
│ │ │ └── Index.cshtml
│ │ ├── MqttServer
│ │ │ ├── Controllers
│ │ │ │ └── MqttClientController.cs
│ │ │ └── Views
│ │ │ └── MqttClient
│ │ │ └── Index.cshtml
│ │ ├── Rpc
│ │ │ ├── Controllers
│ │ │ │ └── RpcLogController.cs
│ │ │ └── Views
│ │ │ └── RpcLog
│ │ │ ├── BatchDelete.cshtml
│ │ │ ├── BatchEdit.cshtml
│ │ │ ├── Create.cshtml
│ │ │ ├── Delete.cshtml
│ │ │ ├── Details.cshtml
│ │ │ ├── Edit.cshtml
│ │ │ ├── Import.cshtml
│ │ │ └── Index.cshtml
│ │ └── _ViewImports.cshtml
│ ├── Controllers
│ │ ├── HomeController.cs
│ │ └── LoginController.cs
│ ├── Dll
│ │ ├── fwlib30i64.dll
│ │ ├── fwlib30i.dll
│ │ ├── Fwlib32.dll
│ │ ├── Fwlib64.dll
│ │ ├── fwlibe1.dll
│ │ └── fwlibe64.dll
│ ├── IoTGateway.csproj
│ ├── IoTGateway.csproj.user
│ ├── iotgateway.db
│ ├── nlog.config
│ ├── Program.cs
│ ├── Properties
│ │ ├── launchSettings.json
│ │ └── PublishProfiles
│ │ ├── FolderProfile.pubxml
│ │ └── FolderProfile.pubxml.user
│ ├── Quickstarts.ReferenceServer.Config.xml
│ ├── Resources
│ │ ├── Program.en.resx
│ │ └── Program.zh.resx
│ ├── Startup.cs
│ ├── Views
│ │ ├── Home
│ │ │ ├── FrontPage.cshtml
│ │ │ ├── Index.cshtml
│ │ │ ├── Layout.cshtml
│ │ │ └── PIndex.cshtml
│ │ ├── Login
│ │ │ ├── ChangePassword.cshtml
│ │ │ ├── Login.cshtml
│ │ │ └── Reg.cshtml
│ │ ├── Shared
│ │ │ └── _Layout.cshtml
│ │ ├── _ViewImports.cshtml
│ │ └── _ViewStart.cshtml
│ └── wwwroot
│ ├── 3d.zip
│ ├── echarts
│ │ ├── chalk.js
│ │ ├── echarts.min.js
│ │ ├── essos.js
│ │ ├── json-fns.js
│ │ ├── macarons.js
│ │ ├── roma.js
│ │ ├── vintage.js
│ │ ├── walden.js
│ │ ├── westeros.js
│ │ └── wonderland.js
│ ├── favicon.ico
│ ├── font
│ │ ├── iconfont.css
│ │ ├── iconfont.eot
│ │ ├── iconfont.svg
│ │ ├── iconfont.ttf
│ │ ├── iconfont.woff
│ │ └── iconfont.woff2
│ ├── font-awesome
│ │ └── font-awesome.css
│ ├── images
│ │ ├── 10.png
│ │ ├── code.png
│ │ ├── connectdevice.png
│ │ ├── disconnectdevice.png
│ │ ├── icon-login01.png
│ │ ├── icon-login02.png
│ │ ├── icon-login03.png
│ │ ├── icon-login04.png
│ │ ├── login-bj.png
│ │ ├── logo.png
│ │ ├── wangguan_1.png
│ │ ├── wangguan.png
│ │ ├── wxgroup.png
│ │ ├── wx.png
│ │ ├── 公众号.jpg
│ │ └── 小程序.jpg
│ ├── jquery.cookie.js
│ ├── jquery.min.js
│ ├── layui
│ │ ├── china.json
│ │ ├── css
│ │ │ ├── layui.css
│ │ │ ├── layui.mobile.css
│ │ │ └── modules
│ │ │ ├── code.css
│ │ │ ├── laydate
│ │ │ │ └── default
│ │ │ │ └── laydate.css
│ │ │ ├── layer
│ │ │ │ └── default
│ │ │ │ ├── icon-ext.png
│ │ │ │ ├── icon.png
│ │ │ │ ├── layer.css
│ │ │ │ ├── loading-0.gif
│ │ │ │ ├── loading-1.gif
│ │ │ │ └── loading-2.gif
│ │ │ └── layim
│ │ │ ├── html
│ │ │ │ ├── chatlog.html
│ │ │ │ ├── find.html
│ │ │ │ ├── getmsg.json
│ │ │ │ └── msgbox.html
│ │ │ ├── layim.css
│ │ │ ├── mobile
│ │ │ │ └── layim.css
│ │ │ ├── skin
│ │ │ │ ├── 1.jpg
│ │ │ │ ├── 2.jpg
│ │ │ │ ├── 3.jpg
│ │ │ │ ├── 4.jpg
│ │ │ │ ├── 5.jpg
│ │ │ │ └── logo.jpg
│ │ │ └── voice
│ │ │ └── default.mp3
│ │ ├── font
│ │ │ ├── iconfont.eot
│ │ │ ├── iconfont.svg
│ │ │ ├── iconfont.ttf
│ │ │ ├── iconfont.woff
│ │ │ └── iconfont.woff2
│ │ ├── images
│ │ │ └── face
│ │ │ ├── 0.gif
│ │ │ ├── 10.gif
│ │ │ ├── 11.gif
│ │ │ ├── 12.gif
│ │ │ ├── 13.gif
│ │ │ ├── 14.gif
│ │ │ ├── 15.gif
│ │ │ ├── 16.gif
│ │ │ ├── 17.gif
│ │ │ ├── 18.gif
│ │ │ ├── 19.gif
│ │ │ ├── 1.gif
│ │ │ ├── 20.gif
│ │ │ ├── 21.gif
│ │ │ ├── 22.gif
│ │ │ ├── 23.gif
│ │ │ ├── 24.gif
│ │ │ ├── 25.gif
│ │ │ ├── 26.gif
│ │ │ ├── 27.gif
│ │ │ ├── 28.gif
│ │ │ ├── 29.gif
│ │ │ ├── 2.gif
│ │ │ ├── 30.gif
│ │ │ ├── 31.gif
│ │ │ ├── 32.gif
│ │ │ ├── 33.gif
│ │ │ ├── 34.gif
│ │ │ ├── 35.gif
│ │ │ ├── 36.gif
│ │ │ ├── 37.gif
│ │ │ ├── 38.gif
│ │ │ ├── 39.gif
│ │ │ ├── 3.gif
│ │ │ ├── 40.gif
│ │ │ ├── 41.gif
│ │ │ ├── 42.gif
│ │ │ ├── 43.gif
│ │ │ ├── 44.gif
│ │ │ ├── 45.gif
│ │ │ ├── 46.gif
│ │ │ ├── 47.gif
│ │ │ ├── 48.gif
│ │ │ ├── 49.gif
│ │ │ ├── 4.gif
│ │ │ ├── 50.gif
│ │ │ ├── 51.gif
│ │ │ ├── 52.gif
│ │ │ ├── 53.gif
│ │ │ ├── 54.gif
│ │ │ ├── 55.gif
│ │ │ ├── 56.gif
│ │ │ ├── 57.gif
│ │ │ ├── 58.gif
│ │ │ ├── 59.gif
│ │ │ ├── 5.gif
│ │ │ ├── 60.gif
│ │ │ ├── 61.gif
│ │ │ ├── 62.gif
│ │ │ ├── 63.gif
│ │ │ ├── 64.gif
│ │ │ ├── 65.gif
│ │ │ ├── 66.gif
│ │ │ ├── 67.gif
│ │ │ ├── 68.gif
│ │ │ ├── 69.gif
│ │ │ ├── 6.gif
│ │ │ ├── 70.gif
│ │ │ ├── 71.gif
│ │ │ ├── 7.gif
│ │ │ ├── 8.gif
│ │ │ └── 9.gif
│ │ ├── lay
│ │ │ └── modules
│ │ │ ├── all.js
│ │ │ ├── carousel.js
│ │ │ ├── code.js
│ │ │ ├── colorpicker.js
│ │ │ ├── demo.js
│ │ │ ├── dropdown.js
│ │ │ ├── element.js
│ │ │ ├── flow.js
│ │ │ ├── form.js
│ │ │ ├── jquery.js
│ │ │ ├── laydate.js
│ │ │ ├── layedit.js
│ │ │ ├── layer.js
│ │ │ ├── layim.js
│ │ │ ├── lay.js
│ │ │ ├── laypage.js
│ │ │ ├── laytpl.js
│ │ │ ├── layui.all.js
│ │ │ ├── mobile.js
│ │ │ ├── rate.js
│ │ │ ├── slider.js
│ │ │ ├── table.js
│ │ │ ├── transfer.js
│ │ │ ├── tree.js
│ │ │ ├── upload.js
│ │ │ └── util.js
│ │ ├── layui.js
│ │ └── xm-select.js
│ ├── layuiadmin
│ │ ├── component
│ │ │ ├── autocomplete.js
│ │ │ ├── common.js
│ │ │ ├── formSelects.js
│ │ │ ├── ueditorconfig.js
│ │ │ └── ueditor.js
│ │ ├── config.js
│ │ ├── css
│ │ │ └── autocomplete.css
│ │ ├── index.js
│ │ ├── lib
│ │ │ ├── admin.js
│ │ │ ├── extend
│ │ │ │ ├── echarts.js
│ │ │ │ └── echartsTheme.js
│ │ │ └── view.js
│ │ ├── pindex.js
│ │ ├── style
│ │ │ ├── admin.css
│ │ │ └── res
│ │ │ ├── bg-none.jpg
│ │ │ ├── logo.png
│ │ │ ├── wangguan_1.png
│ │ │ └── wangguan.png
│ │ ├── ueditor
│ │ │ ├── config.json
│ │ │ ├── dialogs
│ │ │ │ ├── anchor
│ │ │ │ │ └── anchor.html
│ │ │ │ ├── attachment
│ │ │ │ │ ├── attachment.css
│ │ │ │ │ ├── attachment.html
│ │ │ │ │ ├── attachment.js
│ │ │ │ │ ├── fileTypeImages
│ │ │ │ │ │ ├── icon_chm.gif
│ │ │ │ │ │ ├── icon_default.png
│ │ │ │ │ │ ├── icon_doc.gif
│ │ │ │ │ │ ├── icon_exe.gif
│ │ │ │ │ │ ├── icon_jpg.gif
│ │ │ │ │ │ ├── icon_mp3.gif
│ │ │ │ │ │ ├── icon_mv.gif
│ │ │ │ │ │ ├── icon_pdf.gif
│ │ │ │ │ │ ├── icon_ppt.gif
│ │ │ │ │ │ ├── icon_psd.gif
│ │ │ │ │ │ ├── icon_rar.gif
│ │ │ │ │ │ ├── icon_txt.gif
│ │ │ │ │ │ └── icon_xls.gif
│ │ │ │ │ └── images
│ │ │ │ │ ├── alignicon.gif
│ │ │ │ │ ├── alignicon.png
│ │ │ │ │ ├── bg.png
│ │ │ │ │ ├── file-icons.gif
│ │ │ │ │ ├── file-icons.png
│ │ │ │ │ ├── icons.gif
│ │ │ │ │ ├── icons.png
│ │ │ │ │ ├── image.png
│ │ │ │ │ ├── progress.png
│ │ │ │ │ ├── success.gif
│ │ │ │ │ └── success.png
│ │ │ │ ├── background
│ │ │ │ │ ├── background.css
│ │ │ │ │ ├── background.html
│ │ │ │ │ ├── background.js
│ │ │ │ │ └── images
│ │ │ │ │ ├── bg.png
│ │ │ │ │ └── success.png
│ │ │ │ ├── charts
│ │ │ │ │ ├── chart.config.js
│ │ │ │ │ ├── charts.css
│ │ │ │ │ ├── charts.html
│ │ │ │ │ ├── charts.js
│ │ │ │ │ └── images
│ │ │ │ │ ├── charts0.png
│ │ │ │ │ ├── charts1.png
│ │ │ │ │ ├── charts2.png
│ │ │ │ │ ├── charts3.png
│ │ │ │ │ ├── charts4.png
│ │ │ │ │ └── charts5.png
│ │ │ │ ├── emotion
│ │ │ │ │ ├── emotion.css
│ │ │ │ │ ├── emotion.html
│ │ │ │ │ ├── emotion.js
│ │ │ │ │ └── images
│ │ │ │ │ ├── 0.gif
│ │ │ │ │ ├── bface.gif
│ │ │ │ │ ├── cface.gif
│ │ │ │ │ ├── fface.gif
│ │ │ │ │ ├── jxface2.gif
│ │ │ │ │ ├── neweditor-tab-bg.png
│ │ │ │ │ ├── tface.gif
│ │ │ │ │ ├── wface.gif
│ │ │ │ │ └── yface.gif
│ │ │ │ ├── help
│ │ │ │ │ ├── help.css
│ │ │ │ │ ├── help.html
│ │ │ │ │ └── help.js
│ │ │ │ ├── image
│ │ │ │ │ ├── image.css
│ │ │ │ │ ├── image.html
│ │ │ │ │ ├── image.js
│ │ │ │ │ └── images
│ │ │ │ │ ├── alignicon.jpg
│ │ │ │ │ ├── bg.png
│ │ │ │ │ ├── icons.gif
│ │ │ │ │ ├── icons.png
│ │ │ │ │ ├── image.png
│ │ │ │ │ ├── progress.png
│ │ │ │ │ ├── success.gif
│ │ │ │ │ └── success.png
│ │ │ │ ├── internal.js
│ │ │ │ ├── link
│ │ │ │ │ └── link.html
│ │ │ │ ├── map
│ │ │ │ │ ├── map.html
│ │ │ │ │ └── show.html
│ │ │ │ ├── preview
│ │ │ │ │ └── preview.html
│ │ │ │ ├── scrawl
│ │ │ │ │ ├── images
│ │ │ │ │ │ ├── addimg.png
│ │ │ │ │ │ ├── brush.png
│ │ │ │ │ │ ├── delimgH.png
│ │ │ │ │ │ ├── delimg.png
│ │ │ │ │ │ ├── emptyH.png
│ │ │ │ │ │ ├── empty.png
│ │ │ │ │ │ ├── eraser.png
│ │ │ │ │ │ ├── redoH.png
│ │ │ │ │ │ ├── redo.png
│ │ │ │ │ │ ├── scaleH.png
│ │ │ │ │ │ ├── scale.png
│ │ │ │ │ │ ├── size.png
│ │ │ │ │ │ ├── undoH.png
│ │ │ │ │ │ └── undo.png
│ │ │ │ │ ├── scrawl.css
│ │ │ │ │ ├── scrawl.html
│ │ │ │ │ └── scrawl.js
│ │ │ │ ├── searchreplace
│ │ │ │ │ ├── searchreplace.html
│ │ │ │ │ └── searchreplace.js
│ │ │ │ ├── spechars
│ │ │ │ │ ├── spechars.html
│ │ │ │ │ └── spechars.js
│ │ │ │ ├── table
│ │ │ │ │ ├── dragicon.png
│ │ │ │ │ ├── edittable.css
│ │ │ │ │ ├── edittable.html
│ │ │ │ │ ├── edittable.js
│ │ │ │ │ ├── edittd.html
│ │ │ │ │ └── edittip.html
│ │ │ │ └── template
│ │ │ │ ├── config.js
│ │ │ │ ├── images
│ │ │ │ │ ├── bg.gif
│ │ │ │ │ ├── pre0.png
│ │ │ │ │ ├── pre1.png
│ │ │ │ │ ├── pre2.png
│ │ │ │ │ ├── pre3.png
│ │ │ │ │ └── pre4.png
│ │ │ │ ├── template.css
│ │ │ │ ├── template.html
│ │ │ │ └── template.js
│ │ │ ├── lang
│ │ │ │ ├── en
│ │ │ │ │ ├── en.js
│ │ │ │ │ └── images
│ │ │ │ │ ├── addimage.png
│ │ │ │ │ ├── alldeletebtnhoverskin.png
│ │ │ │ │ ├── alldeletebtnupskin.png
│ │ │ │ │ ├── background.png
│ │ │ │ │ ├── button.png
│ │ │ │ │ ├── copy.png
│ │ │ │ │ ├── deletedisable.png
│ │ │ │ │ ├── deleteenable.png
│ │ │ │ │ ├── listbackground.png
│ │ │ │ │ ├── localimage.png
│ │ │ │ │ ├── music.png
│ │ │ │ │ ├── rotateleftdisable.png
│ │ │ │ │ ├── rotateleftenable.png
│ │ │ │ │ ├── rotaterightdisable.png
│ │ │ │ │ ├── rotaterightenable.png
│ │ │ │ │ └── upload.png
│ │ │ │ └── zh-cn
│ │ │ │ ├── images
│ │ │ │ │ ├── copy.png
│ │ │ │ │ ├── localimage.png
│ │ │ │ │ ├── music.png
│ │ │ │ │ └── upload.png
│ │ │ │ └── zh-cn.js
│ │ │ ├── themes
│ │ │ │ ├── default
│ │ │ │ │ ├── css
│ │ │ │ │ │ ├── ueditor.css
│ │ │ │ │ │ └── ueditor.min.css
│ │ │ │ │ ├── dialogbase.css
│ │ │ │ │ └── images
│ │ │ │ │ ├── anchor.gif
│ │ │ │ │ ├── arrow_down.png
│ │ │ │ │ ├── arrow.png
│ │ │ │ │ ├── arrow_up.png
│ │ │ │ │ ├── button-bg.gif
│ │ │ │ │ ├── cancelbutton.gif
│ │ │ │ │ ├── charts.png
│ │ │ │ │ ├── cursor_h.gif
│ │ │ │ │ ├── cursor_h.png
│ │ │ │ │ ├── cursor_v.gif
│ │ │ │ │ ├── cursor_v.png
│ │ │ │ │ ├── dialog-title-bg.png
│ │ │ │ │ ├── filescan.png
│ │ │ │ │ ├── highlighted.gif
│ │ │ │ │ ├── icons-all.gif
│ │ │ │ │ ├── icons.gif
│ │ │ │ │ ├── icons.png
│ │ │ │ │ ├── loaderror.png
│ │ │ │ │ ├── loading.gif
│ │ │ │ │ ├── lock.gif
│ │ │ │ │ ├── neweditor-tab-bg.png
│ │ │ │ │ ├── pagebreak.gif
│ │ │ │ │ ├── scale.png
│ │ │ │ │ ├── sortable.png
│ │ │ │ │ ├── spacer.gif
│ │ │ │ │ ├── sparator_v.png
│ │ │ │ │ ├── table-cell-align.png
│ │ │ │ │ ├── tangram-colorpicker.png
│ │ │ │ │ ├── toolbar_bg.png
│ │ │ │ │ ├── unhighlighted.gif
│ │ │ │ │ ├── upload.png
│ │ │ │ │ ├── videologo.gif
│ │ │ │ │ ├── word.gif
│ │ │ │ │ └── wordpaste.png
│ │ │ │ └── iframe.css
│ │ │ ├── third-party
│ │ │ │ ├── codemirror
│ │ │ │ │ ├── codemirror.css
│ │ │ │ │ └── codemirror.js
│ │ │ │ ├── highcharts
│ │ │ │ │ ├── adapters
│ │ │ │ │ │ ├── mootools-adapter.js
│ │ │ │ │ │ ├── mootools-adapter.src.js
│ │ │ │ │ │ ├── prototype-adapter.js
│ │ │ │ │ │ ├── prototype-adapter.src.js
│ │ │ │ │ │ ├── standalone-framework.js
│ │ │ │ │ │ └── standalone-framework.src.js
│ │ │ │ │ ├── highcharts.js
│ │ │ │ │ ├── highcharts-more.js
│ │ │ │ │ ├── highcharts-more.src.js
│ │ │ │ │ ├── highcharts.src.js
│ │ │ │ │ ├── modules
│ │ │ │ │ │ ├── annotations.js
│ │ │ │ │ │ ├── annotations.src.js
│ │ │ │ │ │ ├── canvas-tools.js
│ │ │ │ │ │ ├── canvas-tools.src.js
│ │ │ │ │ │ ├── data.js
│ │ │ │ │ │ ├── data.src.js
│ │ │ │ │ │ ├── drilldown.js
│ │ │ │ │ │ ├── drilldown.src.js
│ │ │ │ │ │ ├── exporting.js
│ │ │ │ │ │ ├── exporting.src.js
│ │ │ │ │ │ ├── funnel.js
│ │ │ │ │ │ ├── funnel.src.js
│ │ │ │ │ │ ├── heatmap.js
│ │ │ │ │ │ ├── heatmap.src.js
│ │ │ │ │ │ ├── map.js
│ │ │ │ │ │ ├── map.src.js
│ │ │ │ │ │ ├── no-data-to-display.js
│ │ │ │ │ │ └── no-data-to-display.src.js
│ │ │ │ │ └── themes
│ │ │ │ │ ├── dark-blue.js
│ │ │ │ │ ├── dark-green.js
│ │ │ │ │ ├── gray.js
│ │ │ │ │ ├── grid.js
│ │ │ │ │ └── skies.js
│ │ │ │ ├── jquery-1.10.2.js
│ │ │ │ ├── jquery-1.10.2.min.js
│ │ │ │ ├── jquery-1.10.2.min.map
│ │ │ │ ├── snapscreen
│ │ │ │ │ └── UEditorSnapscreen.exe
│ │ │ │ ├── SyntaxHighlighter
│ │ │ │ │ ├── shCoreDefault.css
│ │ │ │ │ └── shCore.js
│ │ │ │ ├── video-js
│ │ │ │ │ ├── font
│ │ │ │ │ │ ├── vjs.eot
│ │ │ │ │ │ ├── vjs.svg
│ │ │ │ │ │ ├── vjs.ttf
│ │ │ │ │ │ └── vjs.woff
│ │ │ │ │ ├── video.dev.js
│ │ │ │ │ ├── video.js
│ │ │ │ │ ├── video-js.css
│ │ │ │ │ └── video-js.min.css
│ │ │ │ ├── webuploader
│ │ │ │ │ ├── webuploader.css
│ │ │ │ │ ├── webuploader.custom.js
│ │ │ │ │ ├── webuploader.custom.min.js
│ │ │ │ │ ├── webuploader.flashonly.js
│ │ │ │ │ ├── webuploader.flashonly.min.js
│ │ │ │ │ ├── webuploader.html5only.js
│ │ │ │ │ ├── webuploader.html5only.min.js
│ │ │ │ │ ├── webuploader.js
│ │ │ │ │ ├── webuploader.min.js
│ │ │ │ │ ├── webuploader.withoutimage.js
│ │ │ │ │ └── webuploader.withoutimage.min.js
│ │ │ │ ├── xss.min.js
│ │ │ │ └── zeroclipboard
│ │ │ │ ├── ZeroClipboard.js
│ │ │ │ └── ZeroClipboard.min.js
│ │ │ ├── ueditor.parse.js
│ │ │ └── ueditor.parse.min.js
│ │ └── views
│ │ ├── system
│ │ │ └── theme.html
│ │ └── template
│ │ └── tips
│ │ ├── 404.html
│ │ └── error.html
│ ├── logo.png
│ ├── mqtt.min.js
│ └── sitecss
│ ├── animate.min.css
│ ├── logincss.css
│ └── wtm.css
├── IoTGateway.DataAccess
│ ├── DataContext.cs
│ ├── IoTGateway.DataAccess.csproj
│ └── Migrations
│ ├── 20211209085327_ini.cs
│ ├── 20211209085327_ini.Designer.cs
│ ├── 20211217052811_expression.cs
│ ├── 20211217052811_expression.Designer.cs
│ ├── 20211220151947_disperse.cs
│ ├── 20211220151947_disperse.Designer.cs
│ ├── 20220124063657_platforms.cs
│ ├── 20220124063657_platforms.Designer.cs
│ ├── 20220323063908_attribut.cs
│ ├── 20220323063908_attribut.Designer.cs
│ ├── 20220413084526_rpclog.cs
│ ├── 20220413084526_rpclog.Designer.cs
│ ├── 20220517053158_changepublish.cs
│ ├── 20220517053158_changepublish.Designer.cs
│ ├── 20220810063014_mqttClientId.cs
│ ├── 20220810063014_mqttClientId.Designer.cs
│ ├── 20220825004835_variableindex.cs
│ ├── 20220825004835_variableindex.Designer.cs
│ ├── 20221012063127_CmdPeriod.cs
│ ├── 20221012063127_CmdPeriod.Designer.cs
│ ├── 20221206143332_EndianType.cs
│ ├── 20221206143332_EndianType.Designer.cs
│ ├── 20230412061736_IsUpload.cs
│ ├── 20230412061736_IsUpload.Designer.cs
│ └── DataContextModelSnapshot.cs
├── IoTGateway.Model
│ ├── Common.cs
│ ├── DeviceConfig.cs
│ ├── Device.cs
│ ├── DeviceVariable.cs
│ ├── Driver.cs
│ ├── FrameworkUser.cs
│ ├── IoTGateway.Model.csproj
│ ├── IVariable.cs
│ ├── RpcLog.cs
│ └── SystemConfig.cs
├── IoTGateway.sln
├── IoTGateway.ViewModel
│ ├── _Admin
│ │ ├── ActionLogVMs
│ │ │ ├── ActionLogBatchVM.cs
│ │ │ ├── ActionLogListVM.cs
│ │ │ ├── ActionLogSearcher.cs
│ │ │ └── ActionLogVM.cs
│ │ ├── DataPrivilegeVMs
│ │ │ ├── DataPrivilegeBatchVM.cs
│ │ │ ├── DataPrivilegeListVM.cs
│ │ │ ├── DataPrivilegeSearcher.cs
│ │ │ ├── DataPrivilegeVM.cs
│ │ │ └── DpListVM.cs
│ │ ├── FrameworkGroupVMs
│ │ │ ├── FrameworkGroupBatchVM.cs
│ │ │ ├── FrameworkGroupImportVM.cs
│ │ │ ├── FrameworkGroupListVM.cs
│ │ │ ├── FrameworkGroupMDVM.cs
│ │ │ ├── FrameworkGroupSearcher.cs
│ │ │ └── FrameworkGroupVM.cs
│ │ ├── FrameworkMenuVMs
│ │ │ ├── FrameworkActionListVM.cs
│ │ │ ├── FrameworkMenuBatchVM.cs
│ │ │ ├── FrameworkMenuListVM2.cs
│ │ │ ├── FrameworkMenuListVM.cs
│ │ │ ├── FrameworkMenuSearcher.cs
│ │ │ ├── FrameworkMenuVM2.cs
│ │ │ └── FrameworkMenuVM.cs
│ │ ├── FrameworkRoleVMs
│ │ │ ├── FrameworkRoleBatchVM.cs
│ │ │ ├── FrameworkRoleImportVM.cs
│ │ │ ├── FrameworkRoleListVM.cs
│ │ │ ├── FrameworkRoleMDVM2.cs
│ │ │ ├── FrameworkRoleMDVM.cs
│ │ │ ├── FrameworkRoleSearcher.cs
│ │ │ └── FrameworkRoleVM.cs
│ │ └── FrameworkUserVms
│ │ ├── ChangePasswordVM.cs
│ │ ├── FrameworkUserBatchVM.cs
│ │ ├── FrameworkUserImportVM.cs
│ │ ├── FrameworkUserListVM.cs
│ │ ├── FrameworkUserSearcher.cs
│ │ └── FrameworkUserVM.cs
│ ├── BasicData
│ │ ├── DeviceConfigVMs
│ │ │ ├── DeviceConfigBatchVM.cs
│ │ │ ├── DeviceConfigImportVM.cs
│ │ │ ├── DeviceConfigListVM.cs
│ │ │ ├── DeviceConfigSearcher.cs
│ │ │ └── DeviceConfigVM.cs
│ │ ├── DeviceVariableVMs
│ │ │ ├── DeviceVariableBatchVM.cs
│ │ │ ├── DeviceVariableImportVM.cs
│ │ │ ├── DeviceVariableListVM.cs
│ │ │ ├── DeviceVariableSearcher.cs
│ │ │ ├── DeviceVariableVM.cs
│ │ │ └── SetValueVM.cs
│ │ ├── DeviceVMs
│ │ │ ├── AttributeVM.cs
│ │ │ ├── CopyVM.cs
│ │ │ ├── DeleteDevices.cs
│ │ │ ├── DeviceBatchVM.cs
│ │ │ ├── DeviceImportVM.cs
│ │ │ ├── DeviceListVM.cs
│ │ │ ├── DeviceSearcher.cs
│ │ │ └── DeviceVM.cs
│ │ ├── DriverVMs
│ │ │ ├── DriverBatchVM.cs
│ │ │ ├── DriverImportVM.cs
│ │ │ ├── DriverListVM.cs
│ │ │ ├── DriverSearcher.cs
│ │ │ └── DriverVM.cs
│ │ ├── ExportDevicesSetting.cs
│ │ ├── ImportExcelVM.cs
│ │ └── UpdateDevices.cs
│ ├── Config
│ │ └── SystemConfigVMs
│ │ ├── SystemConfigBatchVM.cs
│ │ ├── SystemConfigImportVM.cs
│ │ ├── SystemConfigListVM.cs
│ │ ├── SystemConfigSearcher.cs
│ │ └── SystemConfigVM.cs
│ ├── HomeVMs
│ │ ├── LoginVM.cs
│ │ └── RegVM.cs
│ ├── IoTGateway.ViewModel.csproj
│ ├── MqttServer
│ │ └── MqttClientVMs
│ │ ├── MqttClientListVM.cs
│ │ └── MqttClientSearcher.cs
│ └── Rpc
│ └── RpcLogVMs
│ ├── RpcLogBatchVM.cs
│ ├── RpcLogImportVM.cs
│ ├── RpcLogListVM.cs
│ ├── RpcLogSearcher.cs
│ └── RpcLogVM.cs
├── LICENSE
├── Plugins
│ ├── Drivers
│ │ ├── CNC.Fanuc
│ │ │ ├── CNC.Fanuc.csproj
│ │ │ ├── DeviceFanuc.cs
│ │ │ ├── FanucFocas.cs
│ │ │ └── fwlib32.cs
│ │ ├── CNC.Fanuc.H
│ │ │ ├── CNC.Fanuc.H.csproj
│ │ │ └── DeviceFanuc.cs
│ │ ├── CNC.MTConnect
│ │ │ ├── CNC.MTConnect.csproj
│ │ │ └── DeviceMTClient.cs
│ │ ├── Mock.TcpClient
│ │ │ ├── DeviceTcpClient.cs
│ │ │ └── Mock.TcpClient.csproj
│ │ ├── OPC.DaClient
│ │ │ ├── DeviceDaClient.cs
│ │ │ ├── OPCClient
│ │ │ │ ├── Interop.OPCAutomation.dll
│ │ │ │ ├── OPCChangeModel.cs
│ │ │ │ ├── OPCClientWrapper.cs
│ │ │ │ ├── OPCDataChangedHandler.cs
│ │ │ │ ├── TagItem.cs
│ │ │ │ ├── TagQuality.cs
│ │ │ │ └── TagTreeNode.cs
│ │ │ └── OPC.DaClient.csproj
│ │ ├── OPC.UaClient
│ │ │ ├── DeviceUaClient.cs
│ │ │ ├── OPC.UaClient.csproj
│ │ │ └── OpcUaHelper
│ │ │ ├── FormUtils.cs
│ │ │ ├── OpcUaClientHelper.cs
│ │ │ └── OpcUaStatusEventArgs.cs
│ │ ├── Other.Toledo
│ │ │ ├── DeviceToledo.cs
│ │ │ └── Other.Toledo.csproj
│ │ ├── PLC.AllenBradley
│ │ │ ├── DeviceAllenBradley.cs
│ │ │ └── PLC.AllenBradley.csproj
│ │ ├── PLC.LS
│ │ │ ├── DeviceXGB.cs
│ │ │ ├── DeviceXGK.cs
│ │ │ └── PLC.LSIS.csproj
│ │ ├── PLC.MelsecMc
│ │ │ ├── DeviceMelsecMc.cs
│ │ │ └── PLC.MelsecMc.csproj
│ │ ├── PLC.ModBusMaster
│ │ │ ├── DeviceModBusMaster.cs
│ │ │ ├── MasterType.cs
│ │ │ ├── ModbusDataConver.cs
│ │ │ ├── NModbus4
│ │ │ │ ├── Data
│ │ │ │ │ ├── DataStore.cs
│ │ │ │ │ ├── DataStoreEventArgs.cs
│ │ │ │ │ ├── DataStoreFactory.cs
│ │ │ │ │ ├── DiscreteCollection.cs
│ │ │ │ │ ├── IModbusMessageDataCollection.cs
│ │ │ │ │ ├── ModbusDataCollection.cs
│ │ │ │ │ ├── ModbusDataType.cs
│ │ │ │ │ └── RegisterCollection.cs
│ │ │ │ ├── Device
│ │ │ │ │ ├── IModbusMaster.cs
│ │ │ │ │ ├── IModbusSerialMaster.cs
│ │ │ │ │ ├── ModbusDevice.cs
│ │ │ │ │ ├── ModbusIpMaster.cs
│ │ │ │ │ ├── ModbusMaster.cs
│ │ │ │ │ ├── ModbusMasterTcpConnection.cs
│ │ │ │ │ ├── ModbusSerialMaster.cs
│ │ │ │ │ ├── ModbusSerialSlave.cs
│ │ │ │ │ ├── ModbusSlave.cs
│ │ │ │ │ ├── ModbusSlaveRequestEventArgs.cs
│ │ │ │ │ ├── ModbusTcpSlave.cs
│ │ │ │ │ ├── ModbusUdpSlave.cs
│ │ │ │ │ └── TcpConnectionEventArgs.cs
│ │ │ │ ├── Extensions
│ │ │ │ │ └── Enron
│ │ │ │ │ └── EnronModbus.cs
│ │ │ │ ├── GlobalSuppressions.cs
│ │ │ │ ├── InvalidModbusRequestException.cs
│ │ │ │ ├── IO
│ │ │ │ │ ├── EmptyTransport.cs
│ │ │ │ │ ├── IStreamResource.cs
│ │ │ │ │ ├── ModbusAsciiTransport.cs
│ │ │ │ │ ├── ModbusIpTransport.cs
│ │ │ │ │ ├── ModbusRtuTransport.cs
│ │ │ │ │ ├── ModbusSerialTransport.cs
│ │ │ │ │ ├── ModbusTransport.cs
│ │ │ │ │ ├── StreamResourceUtility.cs
│ │ │ │ │ ├── TcpClientAdapter.cs
│ │ │ │ │ └── UdpClientAdapter.cs
│ │ │ │ ├── Message
│ │ │ │ │ ├── AbstractModbusMessage.cs
│ │ │ │ │ ├── AbstractModbusMessageWithData.cs
│ │ │ │ │ ├── DiagnosticsRequestResponse.cs
│ │ │ │ │ ├── IModbusMessage.cs
│ │ │ │ │ ├── IModbusRequest.cs
│ │ │ │ │ ├── ModbusMessageFactory.cs
│ │ │ │ │ ├── ModbusMessageImpl.cs
│ │ │ │ │ ├── ReadCoilsInputsRequest.cs
│ │ │ │ │ ├── ReadCoilsInputsResponse.cs
│ │ │ │ │ ├── ReadHoldingInputRegistersRequest.cs
│ │ │ │ │ ├── ReadHoldingInputRegistersResponse.cs
│ │ │ │ │ ├── ReadWriteMultipleRegistersRequest.cs
│ │ │ │ │ ├── SlaveExceptionResponse.cs
│ │ │ │ │ ├── WriteMultipleCoilsRequest.cs
│ │ │ │ │ ├── WriteMultipleCoilsResponse.cs
│ │ │ │ │ ├── WriteMultipleRegistersRequest.cs
│ │ │ │ │ ├── WriteMultipleRegistersResponse.cs
│ │ │ │ │ ├── WriteSingleCoilRequestResponse.cs
│ │ │ │ │ └── WriteSingleRegisterRequestResponse.cs
│ │ │ │ ├── Modbus.cs
│ │ │ │ ├── Resources.cs
│ │ │ │ ├── SerialPortAdapter.cs
│ │ │ │ ├── SlaveException.cs
│ │ │ │ ├── Unme.Common
│ │ │ │ │ ├── DisposableUtility.cs
│ │ │ │ │ └── SequenceUtility.cs
│ │ │ │ └── Utility
│ │ │ │ ├── DiscriminatedUnion.cs
│ │ │ │ └── ModbusUtility.cs
│ │ │ └── PLC.ModBusMaster.csproj
│ │ ├── PLC.OmronFins
│ │ │ ├── DeviceOmronFins.cs
│ │ │ └── PLC.OmronFins.csproj
│ │ └── PLC.SiemensS7
│ │ ├── DeviceSiemensS7.cs
│ │ ├── PLC.SiemensS7.csproj
│ │ └── S7.Net
│ │ ├── Compat
│ │ │ └── TcpClientMixins.cs
│ │ ├── Conversion.cs
│ │ ├── COTP.cs
│ │ ├── Enums.cs
│ │ ├── Helper
│ │ │ └── MemoryStreamExtension.cs
│ │ ├── Internal
│ │ │ └── TaskQueue.cs
│ │ ├── InvalidDataException.cs
│ │ ├── PLCAddress.cs
│ │ ├── PlcAsynchronous.cs
│ │ ├── PLC.cs
│ │ ├── PlcException.cs
│ │ ├── PLCExceptions.cs
│ │ ├── PLCHelpers.cs
│ │ ├── PlcSynchronous.cs
│ │ ├── Properties
│ │ │ ├── AssemblyInfo.cs
│ │ │ └── S7.Net.snk
│ │ ├── Protocol
│ │ │ ├── ConnectionRequest.cs
│ │ │ ├── ReadWriteErrorCode.cs
│ │ │ ├── S7
│ │ │ │ └── DataItemAddress.cs
│ │ │ ├── S7WriteMultiple.cs
│ │ │ ├── Serialization.cs
│ │ │ ├── Tsap.cs
│ │ │ └── TsapPair.cs
│ │ ├── StreamExtensions.cs
│ │ ├── TPKT.cs
│ │ └── Types
│ │ ├── Bit.cs
│ │ ├── Boolean.cs
│ │ ├── ByteArray.cs
│ │ ├── Byte.cs
│ │ ├── Class.cs
│ │ ├── Counter.cs
│ │ ├── DataItem.cs
│ │ ├── DateTime.cs
│ │ ├── DateTimeLong.cs
│ │ ├── DInt.cs
│ │ ├── Double.cs
│ │ ├── DWord.cs
│ │ ├── Int.cs
│ │ ├── LReal.cs
│ │ ├── Real.cs
│ │ ├── S7StringAttribute.cs
│ │ ├── S7String.cs
│ │ ├── S7WString.cs
│ │ ├── Single.cs
│ │ ├── String.cs
│ │ ├── StringEx.cs
│ │ ├── Struct.cs
│ │ ├── Timer.cs
│ │ ├── TypeHelper.cs
│ │ └── Word.cs
│ ├── Plugin
│ │ ├── ConnnectSettingsMode.cs
│ │ ├── DeviceService.cs
│ │ ├── DeviceThread.cs
│ │ ├── DriverInfo.cs
│ │ ├── DrvierService.cs
│ │ ├── IoTBackgroundService.cs
│ │ ├── JsonUtility.cs
│ │ ├── ModbusSlaveService.cs
│ │ ├── MyMqttClient.cs
│ │ ├── Plugin.csproj
│ │ ├── UA.Server
│ │ │ ├── ConsoleUtils.cs
│ │ │ ├── Namespaces.cs
│ │ │ ├── ReferenceNodeManager.cs
│ │ │ ├── ReferenceServerConfiguration.cs
│ │ │ ├── ReferenceServer.cs
│ │ │ └── UAServer.cs
│ │ └── UAService.cs
│ └── PluginInterface
│ ├── ConfigParameterAttribute.cs
│ ├── DataTypeEnum.cs
│ ├── DriverAddressIoArgModel.cs
│ ├── DriverInfoAttribute.cs
│ ├── DriverReturnValueModel.cs
│ ├── DriverSupportedAttribute.cs
│ ├── EndianEnum.cs
│ ├── HuaWeiRoma
│ │ ├── HwAddDeviceDto.cs
│ │ ├── HwDeleteDeviceDto.cs
│ │ ├── HwDeviceOnOffLine.cs
│ │ └── HwTelemetry.cs
│ ├── IDependency.cs
│ ├── IDriver.cs
│ ├── IotDB
│ │ └── IotTsData.cs
│ ├── IoTSharp
│ │ ├── ISAttributeResponse.cs
│ │ └── ISRpcResponse.cs
│ ├── MethodAttribute.cs
│ ├── PluginInterface.csproj
│ ├── ProtectTypeEnum.cs
│ ├── RpcRequest.cs
│ ├── RpcResponse.cs
│ ├── SendModel.cs
│ ├── ThingsBoard
│ │ ├── TBRpcRequest.cs
│ │ └── TBRpcResponse.cs
│ ├── ThingsCloud
│ │ └── TCRpcRequest.cs
│ └── VaribaleStatusTypeEnum.cs
├── README.md
├── WalkingTec.Mvvm
│ ├── WalkingTec.Mvvm.Core
│ │ ├── Attributes
│ │ │ ├── ActionDescriptionAttribute.cs
│ │ │ ├── AllRightsAttribute.cs
│ │ │ ├── DebugOnlyAttribute.cs
│ │ │ ├── FixConnectionAttribute.cs
│ │ │ ├── MiddleTableAttribute.cs
│ │ │ ├── NoLogAttribute.cs
│ │ │ ├── PublicAttribute.cs
│ │ │ ├── ReInitAttribute.cs
│ │ │ └── ValidateFormItemOnlyAttribute.cs
│ │ ├── BaseBatchVM.cs
│ │ ├── BaseCRUDVM.cs
│ │ ├── BaseImportVM.cs
│ │ ├── BasePagedListVM.cs
│ │ ├── BaseSearcher.cs
│ │ ├── BaseTemplateVM.cs
│ │ ├── BaseVM.cs
│ │ ├── ConfigOptions
│ │ │ ├── Configs.cs
│ │ │ ├── CookieOptions.cs
│ │ │ ├── Cors.cs
│ │ │ ├── CS.cs
│ │ │ ├── DefaultConfigConsts.cs
│ │ │ ├── DFS.cs
│ │ │ ├── DFSTracker.cs
│ │ │ ├── Domain.cs
│ │ │ ├── FileUploadOptions.cs
│ │ │ ├── JwtOptions.cs
│ │ │ ├── KV.cs
│ │ │ ├── UEditorOptions.cs
│ │ │ └── UIOptions.cs
│ │ ├── CoreProgram.cs
│ │ ├── DataContext.cs
│ │ ├── Enums.cs
│ │ ├── Exceptions
│ │ │ └── NullOrEmptyStringException.cs
│ │ ├── Extensions
│ │ │ ├── ConfigExtension.cs
│ │ │ ├── DCExtension.cs
│ │ │ ├── DistinctExtension.cs
│ │ │ ├── ITreeDataExtension.cs
│ │ │ ├── ListExtension.cs
│ │ │ ├── ListVMExtension.cs
│ │ │ ├── LoginUserInfoExtension.cs
│ │ │ ├── PagedListExtension.cs
│ │ │ ├── RequestExtension.cs
│ │ │ └── SystemExtensions
│ │ │ ├── DateTimeHelper.cs
│ │ │ ├── DistributedCacheExtensions.cs
│ │ │ ├── EnumExtension.cs
│ │ │ ├── StringExtension.cs
│ │ │ ├── SystemExtension.cs
│ │ │ └── TypeExtension.cs
│ │ ├── GlobalConstants.cs
│ │ ├── GlobalData.cs
│ │ ├── GlobalServices.cs
│ │ ├── Grid
│ │ │ ├── GridAction.cs
│ │ │ ├── GridActionExtension.cs
│ │ │ ├── GridActionExtension`Old.cs
│ │ │ ├── GridColumn.cs
│ │ │ ├── GridColumnExtension`Old.cs
│ │ │ ├── GridHeaderExtension.cs
│ │ │ └── IGridColumn.cs
│ │ ├── Helper
│ │ │ ├── EntityHelper.cs
│ │ │ ├── IServiceExtension.cs
│ │ │ ├── LogDebug.cs
│ │ │ ├── LogTrace.cs
│ │ │ └── PropertyHelper.cs
│ │ ├── IBasePagedListVM.cs
│ │ ├── IBaseVM.cs
│ │ ├── IDataContext.cs
│ │ ├── Implement
│ │ │ └── DefaultUIService.cs
│ │ ├── ISessionService.cs
│ │ ├── IUIService.cs
│ │ ├── Json
│ │ │ ├── BodyConverter.cs
│ │ │ ├── BoolStringConverter.cs
│ │ │ ├── DateRangeConverter.cs
│ │ │ ├── DateTimeConverter.cs
│ │ │ ├── DynamicDataConverter.cs
│ │ │ ├── PocoConverter.cs
│ │ │ ├── RawStringConverter.cs
│ │ │ ├── StringConverter.cs
│ │ │ ├── StringIgnoreLTGTConverter.cs
│ │ │ └── TypeConverter.cs
│ │ ├── JsonResultModel.cs
│ │ ├── Lib
│ │ │ ├── DmProvider.dll
│ │ │ └── Microsoft.EntityFrameworkCore.Dm.dll
│ │ ├── LoginUserInfo.cs
│ │ ├── Models
│ │ │ ├── ActionLog.cs
│ │ │ ├── BasePoco.cs
│ │ │ ├── DataPrivilege.cs
│ │ │ ├── FileAttachment.cs
│ │ │ ├── FrameworkGroup.cs
│ │ │ ├── FrameworkMenu.cs
│ │ │ ├── FrameworkRole.cs
│ │ │ ├── FrameworkUser.cs
│ │ │ ├── FrameworkUserGroup.cs
│ │ │ ├── FrameworkUserRole.cs
│ │ │ ├── FunctionPrivilege.cs
│ │ │ ├── ISearcher.cs
│ │ │ ├── ISubFile.cs
│ │ │ ├── IWtmFile.cs
│ │ │ ├── PersistedGrant.cs
│ │ │ ├── PersistPoco.cs
│ │ │ ├── TopBasePoco.cs
│ │ │ ├── TrackingObj.cs
│ │ │ └── TreePoco.cs
│ │ ├── MSD.cs
│ │ ├── Support
│ │ │ ├── AuthConstants.cs
│ │ │ ├── ChartData.cs
│ │ │ ├── ClaimComparer.cs
│ │ │ ├── ColumnFormatInfo.cs
│ │ │ ├── CommonEqualityComparer.cs
│ │ │ ├── DataPrivilegeInfo.cs
│ │ │ ├── DateRange.cs
│ │ │ ├── DuplicateInfo.cs
│ │ │ ├── DynamicData.cs
│ │ │ ├── ExcelPropety.cs
│ │ │ ├── ExpressionVisitors.cs
│ │ │ ├── ExtraClass.cs
│ │ │ ├── FileHandlers
│ │ │ │ ├── IWtmFileHandler.cs
│ │ │ │ ├── WtmDataBaseFileHandler.cs
│ │ │ │ ├── WtmFileHandlerBase.cs
│ │ │ │ ├── WtmFileProvider.cs
│ │ │ │ ├── WtmLocalFileHandler.cs
│ │ │ │ └── WtmOssFileHandler.cs
│ │ │ ├── Json
│ │ │ │ ├── SimpleAction.cs
│ │ │ │ ├── SimpleArea.cs
│ │ │ │ ├── SimpleDataPri.cs
│ │ │ │ ├── SimpleFunctionPri.cs
│ │ │ │ ├── SimpleGroup.cs
│ │ │ │ ├── SimpleLog.cs
│ │ │ │ ├── SimpleMenu.cs
│ │ │ │ ├── SimpleModule.cs
│ │ │ │ ├── SimpleRole.cs
│ │ │ │ └── SimpleUserInfo.cs
│ │ │ ├── ListItem.cs
│ │ │ ├── NugetInfo.cs
│ │ │ ├── Quartz
│ │ │ │ ├── QuartzAttributes.cs
│ │ │ │ ├── QuartzHostService.cs
│ │ │ │ ├── WtmJob.cs
│ │ │ │ └── WtmJobFactory.cs
│ │ │ ├── SupportedGroupMapping.cs
│ │ │ ├── TypeComparer.cs
│ │ │ ├── WebProxy.cs
│ │ │ ├── WtmLocalizationOption.cs
│ │ │ └── WTMLogger.cs
│ │ ├── Utils.cs
│ │ ├── WalkingTec.Mvvm.Core.csproj
│ │ └── WTMContext.cs
│ ├── WalkingTec.Mvvm.Mvc
│ │ ├── Auth
│ │ │ ├── Attribute
│ │ │ │ ├── AuthorizeCookieAttribute.cs
│ │ │ │ ├── AuthorizeJwtAttribute.cs
│ │ │ │ └── AuthorizeJwtWithCookieAttribute.cs
│ │ │ └── JwtAuth
│ │ │ ├── ITokenService.cs
│ │ │ ├── Token.cs
│ │ │ └── TokenService.cs
│ │ ├── BaseApiController.cs
│ │ ├── BaseController.cs
│ │ ├── Binders
│ │ │ ├── DateRangeBinder.cs
│ │ │ ├── EnumBinder.cs
│ │ │ ├── StringBinderProvider.cs
│ │ │ ├── StringIgnoreLTGTBinder.cs
│ │ │ └── StringNeedLTGTAttribute.cs
│ │ ├── _CodeGenController.cs
│ │ ├── CodeGenListVM.cs
│ │ ├── CodeGenVM.cs
│ │ ├── echarts.common.min.js
│ │ ├── Filters
│ │ │ ├── DataContextFilter.cs
│ │ │ ├── FrameworkFilter.cs
│ │ │ ├── PrivilegeFilter.cs
│ │ │ └── SwaggerFilter.cs
│ │ ├── _FrameworkController.cs
│ │ ├── framework_layui.js
│ │ ├── GeneratorFiles
│ │ │ ├── ApiTestTopPoco.txt
│ │ │ ├── ApiTest.txt
│ │ │ ├── BatchVM.txt
│ │ │ ├── ControllerTestTopPoco.txt
│ │ │ ├── ControllerTest.txt
│ │ │ ├── CrudVM.txt
│ │ │ ├── HeaderFormat.txt
│ │ │ ├── ImportVM.txt
│ │ │ ├── ListVM.txt
│ │ │ ├── Mvc
│ │ │ │ ├── BatchDeleteView.txt
│ │ │ │ ├── BatchEditView.txt
│ │ │ │ ├── Controller.txt
│ │ │ │ ├── CreateView.txt
│ │ │ │ ├── DeleteView.txt
│ │ │ │ ├── DetailsView.txt
│ │ │ │ ├── EditView.txt
│ │ │ │ ├── ImportView.txt
│ │ │ │ └── ListView.txt
│ │ │ ├── Searcher.txt
│ │ │ └── Spa
│ │ │ ├── Blazor
│ │ │ │ ├── Controller.txt
│ │ │ │ ├── Create.txt
│ │ │ │ ├── Details.txt
│ │ │ │ ├── Edit.txt
│ │ │ │ ├── Import.txt
│ │ │ │ └── Index.txt
│ │ │ ├── Controller.txt
│ │ │ ├── React
│ │ │ │ ├── index.txt
│ │ │ │ ├── store
│ │ │ │ │ └── index.txt
│ │ │ │ ├── style.txt
│ │ │ │ └── views
│ │ │ │ ├── action.txt
│ │ │ │ ├── forms.txt
│ │ │ │ ├── models.txt
│ │ │ │ ├── other.txt
│ │ │ │ ├── search.txt
│ │ │ │ └── table.txt
│ │ │ └── Vue
│ │ │ ├── config.txt
│ │ │ ├── index.txt
│ │ │ ├── store
│ │ │ │ ├── api.txt
│ │ │ │ └── index.txt
│ │ │ └── views
│ │ │ └── dialog-form.txt
│ │ ├── Helper
│ │ │ ├── ActionDescriptionExtension.cs
│ │ │ ├── ActionExecutingContextExtension.cs
│ │ │ ├── FileExtension.cs
│ │ │ ├── FrameworkServiceExtension.cs
│ │ │ ├── FResult.cs
│ │ │ ├── FResultExtension.cs
│ │ │ ├── HttpContextExtention.cs
│ │ │ ├── IconFontsHelper.cs
│ │ │ ├── JwtRefreshJob.cs
│ │ │ ├── ModelStateExtension.cs
│ │ │ ├── ModelStateServiceProvider.cs
│ │ │ ├── MvcOptionExtension.cs
│ │ │ ├── SessionExtension.cs
│ │ │ ├── SessionServiceProvider.cs
│ │ │ ├── WtmContextOption.cs
│ │ │ └── WtmMiddleware.cs
│ │ ├── IBaseController.cs
│ │ ├── Model
│ │ │ └── Menu.cs
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── _SetupController.cs
│ │ ├── UEditor
│ │ │ └── UEditorConfigJson.cs
│ │ ├── Views
│ │ │ ├── _CodeGen
│ │ │ │ ├── Gen.cshtml
│ │ │ │ ├── Index.cshtml
│ │ │ │ ├── Preview.cshtml
│ │ │ │ └── SetField.cshtml
│ │ │ ├── _Framework
│ │ │ │ └── Selector.cshtml
│ │ │ └── _ViewImports.cshtml
│ │ └── WalkingTec.Mvvm.Mvc.csproj
│ └── WalkingTec.Mvvm.TagHelpers.LayUI
│ ├── Abstraction
│ │ ├── BaseButton.cs
│ │ ├── BaseElementTag.cs
│ │ └── BaseFieldTag.cs
│ ├── ButtonTagHelper.cs
│ ├── CardTagHelper.cs
│ ├── Chart
│ │ └── ChartTagHelper.cs
│ ├── CodeTagHelper.cs
│ ├── Common
│ │ └── LayuiUIService.cs
│ ├── ContainerTagHelper.cs
│ ├── DataTableTagHelper.cs
│ ├── Enums
│ │ ├── DataTableSizeEnum.cs
│ │ ├── DataTableSkinEnum.cs
│ │ └── HttpMethodEnum.cs
│ ├── Form
│ │ ├── CheckBoxTagHelper.cs
│ │ ├── CloseButtonTagHelper.cs
│ │ ├── ColorPicker.cs
│ │ ├── ComboBoxTagHelper.cs
│ │ ├── DateTimeTagHelper.cs
│ │ ├── DisplayTagHelper.cs
│ │ ├── DownloadTemplateButtonTagHelper.cs
│ │ ├── FieldSetTagHelper.cs
│ │ ├── FormTagHelper.cs
│ │ ├── HiddenTagHelper.cs
│ │ ├── MultiUploadTagHelper.cs
│ │ ├── RadioTagHelper.cs
│ │ ├── ResetButtonTagHelper.cs
│ │ ├── RichTextBox.cs
│ │ ├── SearchPanelTagHelper.cs
│ │ ├── SelectorTagHelper.cs
│ │ ├── SliderTagHelper.cs
│ │ ├── SubmitButtonTagHelper.cs
│ │ ├── SwitchTagHelper.cs
│ │ ├── TextAreaTagHelper.cs
│ │ ├── TextBoxTagHelper.cs
│ │ ├── TransferTagHelper.cs
│ │ ├── UEditorTagHelper.cs
│ │ └── UploadTagHelper.cs
│ ├── ImageTagHelper.cs
│ ├── LayuiServiceCollectionExtensions.cs
│ ├── LinkButtonTagHelper.cs
│ ├── Models
│ │ ├── LayuiColumn.cs
│ │ └── LayuiTreeItem.cs
│ ├── PanelTagHelper.cs
│ ├── Program.cs
│ ├── QuoteTagHelper.cs
│ ├── RowTagHelper.cs
│ ├── TabTagHelper.cs
│ ├── TreeContainerTagHelper.cs
│ ├── TreeTagHelper.cs
│ └── WalkingTec.Mvvm.TagHelpers.LayUI.csproj
└── webscada-project.json
243 directories, 1270 files
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论