Golang实现Async/Await模式
Gorm使用
Golang使用JWT
Golang日志组件logrus使用
K3s部署Registry镜像仓库
KubeEdge设备孪生设计
KubeEdge中的数据结构设计
Device
字段 | 类型 | 说明 |
---|---|---|
ID | string | 设备唯一编码 |
Name | string | 设备名称 |
Description | string | 设别描述 |
State | string | 设备状态 |
LastOnline | DateTime | 最后在线时间 |
Attributes | Map<string,MsgAttr> | 设备属性(上报属性) |
Twin | Map<string,MsgTwin> | 设备孪生属性(可控制属性) |
MsgAttr
字段 | 类型 | 说明 |
---|---|---|
Value | string | 属性名称 |
Optional | bool | 是否可为空 |
Metadata | TypeMetadata | 属性类型元数据 |
MsgTwin
字段 | 类型 | 说明 |
---|---|---|
Expected | TwinValue | 期望值 |
Actual | TwinValue | 实际值 |
Optional | bool | 是否可为空 |
Metadata | TypeMetadata | 属性类型元数据 |
ExpectedVersion | TwinVersion | 期望值版本 |
ActualVersion | TwinVersion | 实际值版本 |
数据库表设计
Device
字段 | 类型 | 说明 |
---|---|---|
ID | 设备实例唯一ID | |
Name | 设备实例名称 | |
Description | 设备描述 | |
State | 设备状态 | |
LastOnline | 最后在线时间 |
DeviceAttr
字段 | 类型 | 说明 |
---|---|---|
ID | 属性实例唯一ID | |
DeviceId | 设备实例唯一ID | |
Name | 设备名称 | |
Description | 设备描述 | |
Value | 设备属性值 | |
Optional | bool | 是否可空 |
AttrType | 属性类型 | |
Metadata | 属性元数据 |
DeviceTwin
字段 | 类型 | 说明 |
---|---|---|
ID | ||
DeviceID | ||
Name | ||
Description | ||
Expected | ||
Actual | ||
ExpectedMeta | ||
ActualMeta | ||
ExpectedVersion | ||
ActualVersion | ||
Optional | ||
AttrType | ||
Metadata |
设备孪生表结构设计
DEVICE
字段 | 类型 | 说明 |
---|---|---|
ID | int | 自增ID |
SN | varchar(20) | 设备唯一编码 |
NAME | varchar(20) | 设备名称 |
MARKED | BOOL | 设备是否标记 |
IP | varchar(15) | 设备IP地址 |
LOCATION | varchar(200) | 设备安装位置 |
DEVICE_ATTR
字段 | 类型 | 说明 |
---|---|---|
ID | int | 自增ID |
KEY | varchar(20) | 属性名 |
CHANNEL | ||
VALUE | int | 属性值 |
DEVICE_ID | int | 属性所属设备ID |
SCALE | int | 缩放倍率,当数值有小数时可用倍率缩放 |
UNIT | varchar(20) | 数值单位 |
DEVICE_STATE
字段 | 类型 | 说明 |
---|---|---|
ID | int | 自增ID |
DEVICE_ID | int | 属性所属设备ID |
PORT | int | 设备接收端口 |
VALUE | int | 数值 |
UNIT | varchar(20) | 数值单位 |
DEVICE_LINKAGE
字段 | 类型 | 说明 |
---|---|---|
ID | int | 自增ID |
CAT | ||
DEVICE_ID | int | 属性所属设备ID |
PORT | int | 设备接收端口 |
TARGET | 联动目标 | |
TRIGGER | 联动触发器 | |
TRIGGER_ALARM | 联动触发告警 | |
ACTION | 联动动作 | |
PARAM | 参数 |
DEVICE_ALARM
字段 | 类型 | 说明 |
---|---|---|
ID | 自增ID | |
APP_ID | 固件ID | |
CAT | ||
REPORTER | ||
PORT | 端口 | |
CODE | 编码 | |
MSG | 消息 | |
ALARM_TYPE | 告警类型 | |
SEVERITY | ||
STATUS | 状态 |
解决LibVLCSharp弹出Direct3d11窗体问题
LibVLCSharp版本
1 | <PackageReference Include="LibVLCSharp" version="3.6.6" /> |
现象播放RTSP视频流时在VideoView播放正常,但会弹出一个窗体同时播放,窗体名VLC (Direct3D11 output)
代码如下
1 | public partial class MainWindow : Window |
故障原因
打断点调试发现,Loaded时间执行两次,第一次执行在VideoView播放正常,第二次执行弹出VLC (Direct3D11 output)
窗
解决方法: 控制只初始化和播放一次
1 | public partial class MainWindow : Window |