using Common;
using MeterPlugInLibrary;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace StorageMeterSystem
{
///
/// 截图调用类
///
public class CameraShotCls
{
public CameraShotCls()
{
_dvr = new HkDvr();
}
private HkDvr _dvr;
bool ret = false;
public string ip { get; set; }
public string port { get; set; }
public string uid { get; set; }
public string pwd { get; set; }
///
/// 连接设备
///
/// IP地址
/// 端口
/// 用户名
/// 密码
public void Connection()
{
if (_dvr.UserId < 0)
{
//IP,PORT,UID,PWD
ret = _dvr.Init(ip + "," + port + "," + uid + "," + pwd);
ret = _dvr.Open();
}
}
private bool startTalk = false;
///
/// 打开对讲
///
///
public bool StartTalk()
{
if (_dvr.UserId > -1 && !startTalk)
{
_dvr.StartTalk();
startTalk = true;
}
return true;
}
///
/// 关闭对讲
///
///
public bool StopTalk()
{
if (_dvr.UserId > -1 && startTalk)
{
_dvr.StopTalk();
startTalk = false;
return true;
}
return true;
}
///
/// 关闭视频
///
public void Close()
{
if (_dvr.UserId > -1)
{
_dvr.Close();
}
}
public void RealPlay(PictureBox picture, int i)
{
if (_dvr.UserId > -1)
{
_dvr.RealPlay(i, picture.Handle);
}
}
public void StopRealPlay(int i)
{
if (_dvr.UserId > -1)
{
_dvr.StopRealPlay(i);
}
}
public bool SoundVoice(string fileName)
{
_dvr.SetVolume(0xffff);
if (_dvr.VoiceHandle > -1) //播放语音前,需要关闭对讲
{
_dvr.StopTalk();
}
return _dvr.SendVoiceData(fileName);
}
///
/// 从硬盘录像机 进行截图
///
///
public void CapPicFromVideo(uint chanel,string fileUrl)
{
_dvr.CapturePicture(chanel, fileUrl + ".jpg");
}
#region 直接通过摄像头进行截图的方式
///
/// 连接视频截图并关闭
///
/// 作业编号
public void CapMethod(string actualFirstNo)
{
Connection();
CapPic(actualFirstNo);
Close();
}
///
/// 截图
///
/// 作业编号
public void CapPic(string actualFirstNo)
{
int iCnt = 1; //抓拍摄像头配置顺序必须是前面2个
foreach (CameraShotCls shot in CarCache.cameraShots)
{
//放在tempImg文件夹下面就进行图片的压缩操作,否则不进行图片压缩
shot.CapPic(iCnt < 3 ? 0 : 1, PbCache.path + string.Format("\\imgShort\\formalImg\\{0}_{1}_{2}.jpg", PbCache.sportInfo.baseSpotNo, "C" + actualFirstNo, iCnt));
iCnt++;
}
}
///
/// 截图
///
/// 0抓拍机 1一般的摄像头
/// 文件存储位置及文件名称,文件名称应该是 计量作业编号_计量点_第几张 or 计量作业编号_第几张
/// 是否截图成功,true成功,false失败,异常的话会在logs中写入信息
public bool CapPic(int voiType, string filePath)
{
return _dvr.CapturePicture(voiType, 1, filePath);
}
#endregion
}
public class CarCache
{
///
/// 摄像头的开关类集合
///
public static List cameraShots { get; set; }
}
}