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; } } }