using LB_SmartVisionCameraDevice.Data;
|
using LB_SmartVisionCameraDevice.PHM6000;
|
using LB_SmartVisionCameraSDK.PHM6000;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace LB_SmartVisionCameraDevice
|
{
|
/// <summary>
|
/// PHM6000SensorManager
|
/// </summary>
|
public class PHM6000SensorManager
|
{
|
/// <summary>
|
/// GetCameraList
|
/// </summary>
|
/// <returns>Dictionary<string, PHM6000SensorModel></returns>
|
/// <exception cref="Exception">Exception</exception>
|
#region 得到摄像头列表
|
public static Dictionary<string, PHM6000SensorModel> GetCameraDictionary()
|
{
|
//创建照相机接口,返回其句柄
|
IntPtr entry = PHM6000Profiler.CreateCameraEntry();
|
|
//返回相机个数,-1则为查失败
|
var count = PHM6000Profiler.DiscoverCameras(entry);
|
if (count == -1)
|
{
|
throw new Exception("查找摄像头失败!");
|
}
|
byte[] bytes = new byte[16];
|
byte[] modelBytes = new byte[64];
|
byte[] serialNOBytes = new byte[64];
|
int port = 0;
|
Dictionary<string, PHM6000SensorModel> ipList = new Dictionary<string, PHM6000SensorModel>();
|
//对每个相机进行查找IP
|
for (int i = 0; i < count; i++)
|
{
|
var ipResult = PHM6000Profiler.GetCameraAddress(entry, i, bytes, ref port);
|
if (ipResult == -1)
|
{
|
throw new Exception("获取摄像头IP错误");
|
}
|
var infoResult = PHM6000Profiler.GetCameraInformation(entry, i, modelBytes, serialNOBytes);
|
if (infoResult == -1)
|
{
|
throw new Exception("获取摄像头信息错误");
|
}
|
var ip = Encoding.ASCII.GetString(bytes);
|
var serialNo = Encoding.ASCII.GetString(serialNOBytes);
|
var model = Encoding.ASCII.GetString(modelBytes);
|
ip = ip.Replace("\0", "");
|
serialNo = serialNo.Replace("\0", "").Replace("X", "B");
|
model = model.Replace("\0", "");
|
if (model.Contains("8080"))
|
{
|
model = "PHM6080";
|
}
|
if (model.Contains("8300"))
|
{
|
model = "PHM6300";
|
}
|
if (model.Contains("8030"))
|
{
|
model = "PHM6030";
|
}
|
ipList.Add(serialNo, new PHM6000SensorModel
|
{
|
IP = ip,
|
Port = port,
|
Model = model,
|
SerialNo = serialNo,
|
State = StateIcon.DisConnect,
|
});
|
}
|
PHM6000Profiler.DestroyCameraEntry(entry);//销毁
|
return ipList;
|
}
|
#endregion
|
|
#region 得到摄像头列表
|
public static List<PHM6000SensorModel> GetCameraList()
|
{
|
//创建照相机接口,返回其句柄
|
IntPtr entry = PHM6000Profiler.CreateCameraEntry();
|
//返回相机个数,-1则为查失败
|
var count = PHM6000Profiler.DiscoverCameras(entry);
|
if (count == -1)
|
{
|
throw new Exception("查找摄像头失败!");
|
}
|
byte[] bytes = new byte[16];
|
byte[] modelBytes = new byte[64];
|
byte[] serialNOBytes = new byte[64];
|
int port = 0;
|
List<PHM6000SensorModel> ipList = new List<PHM6000SensorModel>();
|
//对每个相机进行查找IP
|
for (int i = 0; i < count; i++)
|
{
|
var ipResult = PHM6000Profiler.GetCameraAddress(entry, i, bytes, ref port);
|
if (ipResult == -1)
|
{
|
throw new Exception("获取摄像头IP错误");
|
}
|
var infoResult = PHM6000Profiler.GetCameraInformation(entry, i, modelBytes, serialNOBytes);
|
if (infoResult == -1)
|
{
|
throw new Exception("获取摄像头信息错误");
|
}
|
var ip = Encoding.ASCII.GetString(bytes);
|
var serialNo = Encoding.ASCII.GetString(serialNOBytes);
|
var model = Encoding.ASCII.GetString(modelBytes);
|
ip = ip.Replace("\0", "");
|
serialNo = serialNo.Replace("\0", "").Replace("X", "B");
|
model = model.Replace("\0", "");
|
if (model.Contains("8080"))
|
{
|
model = "PHM6080";
|
}
|
if (model.Contains("8300"))
|
{
|
model = "PHM6300";
|
}
|
if (model.Contains("8030"))
|
{
|
model = "PHM6030";
|
}
|
ipList.Add(new PHM6000SensorModel
|
{
|
IP = ip,
|
Port = port,
|
Model = model,
|
SerialNo = serialNo,
|
State = StateIcon.DisConnect,
|
});
|
}
|
PHM6000Profiler.DestroyCameraEntry(entry);//销毁
|
return ipList;
|
}
|
#endregion
|
}
|
}
|