Former-commit-id: dd7a36be5f765c8d3619ec1827b77ff973c84a5d
TangShanKaiPing
wanggang 6 years ago
parent 921ac0defd
commit a58fa3cad0

@ -94,16 +94,16 @@ namespace Application.Domain.Entities
public bool AddorUpdateData(string key, object value, DeviceDataType type, string name, string unit = null, string description = null, bool hidden = false)
{
var result = false;
var dataValue = Convert.ToString(value);
var data = this.Data.FirstOrDefault(o => o.Key == key);
if (data == null)
{
data = new Data { Key = key, Type = type, Name = name, Unit = unit, Description = description, Hidden = hidden };
data = new Data { Key = key, Value = dataValue, Type = type, Name = name, Unit = unit, Description = description, Hidden = hidden };
this.Data.Add(data);
result = true;
}
else
{
var dataValue = Convert.ToString(value);
if (data.Value != dataValue)
{
data.Value = dataValue;

@ -16,12 +16,21 @@ namespace IoT.Shared.Controllers.Onvif
this._deviceService = deviceService;
}
[HttpGet, Route("/[controller]/[action]"), SwaggerOperation("")]
public ApiResponse ScreenShot([SwaggerParameter("网关编号")]string gateway, [SwaggerParameter("设备编号")]string number)
[HttpGet, Route("/[controller]/[action]"), SwaggerOperation("")]
public ApiResponse MainScreenShot([SwaggerParameter("网关编号")]string gateway, [SwaggerParameter("设备编号")]string number)
{
return this.AsyncAction(() =>
{
this._deviceService.ScreenShot(number);
this._deviceService.MainScreenShot(number);
});
}
[HttpGet, Route("/[controller]/[action]"), SwaggerOperation("")]
public ApiResponse SubScreenShot([SwaggerParameter("网关编号")]string gateway, [SwaggerParameter("设备编号")]string number)
{
return this.AsyncAction(() =>
{
this._deviceService.SubScreenShot(number);
});
}

@ -188,6 +188,7 @@ namespace IoT.Shared.DeviceServices.Onvif
device.AddorUpdateData("MainSnapshotUri", ipCamera.MainSnapshotUri, DeviceDataType.String, "主码流截图地址");
device.AddorUpdateData("SubStreamUri", ipCamera.SubStreamUri, DeviceDataType.String, "子码流地址");
device.AddorUpdateData("SubSnapshotUri", ipCamera.SubSnapshotUri, DeviceDataType.String, "子码流截图地址");
device.AddorUpdateData("Snapshot", Convert.ToBase64String(SubScreenShot(device.Number)), DeviceDataType.String, "截图");
deviceRepo.SaveChanges();
this.SendDevice(device);
}
@ -494,10 +495,26 @@ namespace IoT.Shared.DeviceServices.Onvif
}
}
public byte[] ScreenShot(string id)
public byte[] MainScreenShot(string id)
{
var camera = this.GetCamera(id);
var url = camera.GetDataValue("SnapshotUri");
var url = camera.GetDataValue("MainSubSnapshotUri");
if (string.IsNullOrEmpty(url))
{
return new byte[] { };
}
var hc = this._httpClientFactory.CreateClient();
if (camera.GetDataValue("NeedAuth") == "否")
{
return hc.GetByteArrayAsync(url).Result;
}
return hc.GetByteDigest(url, camera.UserName, camera.Password);
}
public byte[] SubScreenShot(string id)
{
var camera = this.GetCamera(id);
var url = camera.GetDataValue("SubSnapshotUri");
if (string.IsNullOrEmpty(url))
{
return new byte[] { };

@ -25,7 +25,7 @@ namespace IoTNode
public override void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<ClientService>();
services.AddSingleton<SerialPortService>();
//services.AddSingleton<SerialPortService>();
services.AddSingleton<OnvifService>();
services.AddSingleton<FBeeService>();
base.ConfigureServices(services);
@ -37,9 +37,9 @@ namespace IoTNode
Task.Run(() =>
{
app.ApplicationServices.GetService<ClientService>().Start();
app.ApplicationServices.GetService<SerialPortService>().Start();
app.ApplicationServices.GetService<OnvifService>().Start();
app.ApplicationServices.GetService<FBeeService>().Start();
app.ApplicationServices.GetService<SerialPortService>()?.Start();
app.ApplicationServices.GetService<OnvifService>()?.Start();
app.ApplicationServices.GetService<FBeeService>()?.Start();
});
}

@ -743,22 +743,7 @@
<div class="block block-strong">
<div class="row">
<div class="col-100 tablet-50 desktop-25" v-for="device in getDevices('摄像头')">
<video class="flv video" muted controls autoplay :src="getData(device,'主码流flv')" :data-ext="getData(device,'缩放支持')"></video>
<template v-if="getData(device,'缩放支持')=='是'">
<div class="row">
<a class="button button-large button-raised button-fill" href="javascript: ;" v-on:click="call('',device.Number,'/Camera/Up')"></a>
</div>
<div class="row">
<a class="button button-large button-raised button-fill" href="javascript: ;" v-on:click="call('',device.Number,'/Camera/Zoomin')"></a>
<a class="button button-large button-raised button-fill" href="javascript: ;" v-on:click="call('',device.Number,'/Camera/Left')"></a>
<a class="button button-large button-raised button-fill" href="javascript: ;" v-on:click="call('',device.Number,'/Camera/Stop')"></a>
<a class="button button-large button-raised button-fill" href="javascript: ;" v-on:click="call('',device.Number,'/Camera/Right')"></a>
<a class="button button-large button-raised button-fill" href="javascript: ;" v-on:click="call('',device.Number,'/Camera/Zoomout')"></a>
</div>
<div class="row">
<a class="button button-large button-raised button-fill" href="javascript: ;" v-on:click="call('',device.Number,'/Camera/Down')"></a>
</div>
</template>
<img :src="'data:image/jpeg;base64,'+getValue(device,'截图')" alt="截图" style="width:100%;" />
</div>
</div>
</div>

Loading…
Cancel
Save