|
|
|
using System.Net.Http.Json;
|
|
|
|
using System.Text;
|
|
|
|
using System.Text.Json;
|
|
|
|
using EGFramework;
|
|
|
|
using Guidaoji;
|
|
|
|
using Guidaoji.Camera;
|
|
|
|
using Guidaoji.Common;
|
|
|
|
using Newtonsoft.Json;
|
|
|
|
|
|
|
|
namespace Emergency_platform{
|
|
|
|
public class ModelPatrol : EGModule,IEGFramework
|
|
|
|
{
|
|
|
|
public override void Init()
|
|
|
|
{
|
|
|
|
this.EGRegisterMessageEvent<ResponsePatrol>((e,sender,protocol)=>{
|
|
|
|
Console.WriteLine("Get Command " + e.action);
|
|
|
|
Console.WriteLine("Command params is" + e.action + "|" + e.taskid + "|" + e.cabinetid);
|
|
|
|
ExecutePatrol(e,sender,protocol);
|
|
|
|
});
|
|
|
|
this.EGOnMessage<ResponsePatrol>();
|
|
|
|
GetStatusDelay();
|
|
|
|
|
|
|
|
}
|
|
|
|
public async void GetStatusDelay(){
|
|
|
|
await Task.Delay(20000);
|
|
|
|
GuiDaoJiRet gui = TcpClientWrapper.SendDataRead();
|
|
|
|
while(gui == null){
|
|
|
|
await Task.Delay(5000);
|
|
|
|
gui = TcpClientWrapper.SendDataRead();
|
|
|
|
}
|
|
|
|
Console.WriteLine("type = " + gui.data.type + "pos = " + gui.data.x + " , " + gui.data.y);
|
|
|
|
}
|
|
|
|
|
|
|
|
public async void ExecutePatrol(ResponsePatrol responsePatrol,string sender,ProtocolType protocolType){
|
|
|
|
//var obj = JsonConvert.DeserializeObject<MyObject>(task);
|
|
|
|
//obj.cabinetid[] 可以得到要识别的柜子id
|
|
|
|
//把要识别的柜子id发送给硬件抓图,算法返回数据
|
|
|
|
//把数据返回给应急平台,将柜子识别完之后返回数据 和算法交流返回的数据
|
|
|
|
//var result = AlgorithmTCP.Connect(picPath, targetName);
|
|
|
|
foreach (int cabinetId in responsePatrol.cabinetid)
|
|
|
|
{
|
|
|
|
string picPath = $"D:/Picture/{DateTime.Now:yyyyMMddHHmmss}.jpeg";
|
|
|
|
string videoPath = $"D:/Video/{DateTime.Now:yyyyMMddHHmmss}.mp4";
|
|
|
|
//调用轨道机方法
|
|
|
|
using (var httpClient = new HttpClient())
|
|
|
|
{
|
|
|
|
//发送post请求
|
|
|
|
//origin url = http://192.168.10.104:8080/api/CabinetInstance/id
|
|
|
|
var response = await httpClient.PostAsJsonAsync(DataServerUrl.LocalAddress + DataServerUrl.UrlCabinetInstanceId, cabinetId.ToString());
|
|
|
|
if (response.IsSuccessStatusCode)
|
|
|
|
{
|
|
|
|
var responseBody = await response.Content.ReadAsStringAsync();
|
|
|
|
Console.WriteLine(responseBody);
|
|
|
|
JsonDocument jsonDocument = JsonDocument.Parse(responseBody);
|
|
|
|
JsonElement dataElement = jsonDocument.RootElement.GetProperty("data");
|
|
|
|
string cabinetPosX = dataElement.GetProperty("cabinetPosX").GetString();
|
|
|
|
string cabinetPosY = dataElement.GetProperty("cabinetPosY").GetString();
|
|
|
|
float poseP = float.Parse(dataElement.GetProperty("poseP").GetString());
|
|
|
|
float poseT = float.Parse(dataElement.GetProperty("poseT").GetString());
|
|
|
|
float poseZ = float.Parse(dataElement.GetProperty("poseZ").GetString());
|
|
|
|
var posX = double.Parse(cabinetPosX);
|
|
|
|
var posY = double.Parse(cabinetPosY);
|
|
|
|
//Console.WriteLine(cabinetPosX);
|
|
|
|
//Console.WriteLine(cabinetPosY);
|
|
|
|
//Console.WriteLine(poseX);
|
|
|
|
//Console.WriteLine(poseY);
|
|
|
|
//Console.WriteLine(poseP);
|
|
|
|
//Console.WriteLine(poseT);
|
|
|
|
//Console.WriteLine(poseZ);
|
|
|
|
//CHNetHelp.SaveViedo(true, 1, videoPath);
|
|
|
|
TcpClientWrapper.GuiDaoJiMove(posX, posY);
|
|
|
|
GuiDaoJiRet gui = TcpClientWrapper.SendDataRead();
|
|
|
|
bool guidaoji = true;
|
|
|
|
while (guidaoji)
|
|
|
|
{
|
|
|
|
|
|
|
|
if (gui != null)
|
|
|
|
{
|
|
|
|
if(gui.data.type == "0"){
|
|
|
|
guidaoji = false;
|
|
|
|
CHNetHelp.SetCameraProcess(OperationType.PTZ, poseP, poseT, poseZ, 1, videoPath);
|
|
|
|
CHNetHelp.JPEG(1, picPath);
|
|
|
|
}else{
|
|
|
|
Console.WriteLine(gui.data.type);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
await Task.Delay(1000);
|
|
|
|
gui = TcpClientWrapper.SendDataRead();
|
|
|
|
}
|
|
|
|
Console.WriteLine("轨道机运动成功");
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
//处理错误响应
|
|
|
|
Console.WriteLine("请求失败");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//发给算法
|
|
|
|
|
|
|
|
//模拟的返回数据
|
|
|
|
RequestPatrol requestPatrol = new RequestPatrol(){
|
|
|
|
taskid = "1",
|
|
|
|
cabinetid = cabinetId,
|
|
|
|
};
|
|
|
|
requestPatrol.target.Add(new PatrolTarget("1号电流表","100.1"));
|
|
|
|
requestPatrol.target.Add(new PatrolTarget("3号指示灯","亮"));
|
|
|
|
requestPatrol.target.Add(new PatrolTarget("停电牌","无"));
|
|
|
|
//发送数据
|
|
|
|
this.EGSendMessage(requestPatrol,sender,protocolType);
|
|
|
|
//socket_commu.Send(dataBytes);
|
|
|
|
Console.WriteLine("发送成功");
|
|
|
|
await Task.Delay(5000);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|