using com.hnshituo.core.webapp.vo; using Common; using iCore.Rtdb.RtdbTable; using MeterModuleLibrary.uc; using MeterPlugInLibrary; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Net; using System.Net.NetworkInformation; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace CarMonitor { public partial class frmProductVoice : Form { #region 语音对讲 /// /// 硬盘录像机登录 /// DhCameraShot cameraShotMain = new DhCameraShot(); /// /// 必须先打开连接 /// private bool GetIPVideo(MeterBaseVideoinfo video) { try { cameraShotMain.ip = video.videoip; cameraShotMain.port = video.vdoPort; cameraShotMain.uid = video.vdoUser; cameraShotMain.pwd = video.vdoPwd; cameraShotMain.Connection(); } catch (Exception ex) { MessageBox.Show("打开视频连接失败:" + ex.Message); return false; } return true; } /// /// 关闭视频 /// private void IPVideoClose() { try { for (int i = 1; i <= plImg.Controls.Count; i++) { cameraShotMain.StopRealPlay(i); plImg.Controls.RemoveByKey("pb" + i); } } catch { } try { //退出视频及语音登录 cameraShotMain.Close(); } catch (Exception exp) { MessageBox.Show("关闭视频失败" + exp.Message); } } #endregion /// /// 用于防止跳闪选中 /// bool chkFlag = false; public frmProductVoice() { InitializeComponent(); } private void frmProductVoice_Load(object sender, EventArgs e) { timer1.Start(); bd.getSpot(); GetIPVideo(PbCacheMonitor.videoInfo); setPicBoxSet(); } public ucCarMonitoring _uc = null; public MeterWorkMonitor drOldData = null; BaseDbCls bd = new BaseDbCls(); MemoryTableDataSocket MemoClass = new MemoryTableDataSocket(PbCacheMonitor.collect_no);//内存表 PbModelDbService PbModelDbService = new PbModelDbService(); MeterMonitorNoteService noteService = new MeterMonitorNoteService(); MeterWorkMonitorService monitorService = new MeterWorkMonitorService(); public DbHelper db = null; /// /// 主界面调用的按钮事件 /// public event EventHandler ucMonitoringEvent; #region 对讲代码 private void setPicBoxSet() { if (PbCacheMonitor.videoChild != null && PbCacheMonitor.videoChild.Count > 0) { int i = 0; foreach (MeterBaseVideoChild child in PbCacheMonitor.videoChild) { i++; //if (i < 4 || i == 6) //只开启4个视频 1-3通道 左右上 6通道室内 if (i < 5) //只开启4个视频 1-3通道 左右上 6通道室内 { PictureBox pb = new PictureBox(); pb.Name = "pb" + i; pb.Dock = DockStyle.Top; pb.Height = 235; pb.DoubleClick += new EventHandler(PictureBoxDoubleClick); pb.BorderStyle = BorderStyle.FixedSingle; plImg.Controls.Add(pb); cameraShotMain.RealPlay(pb, i); } } } } int iPic = 0; /// /// 视频放大操作 /// /// /// private void PictureBoxDoubleClick(object sender, EventArgs e) { if (iPic != 0) { cameraShotMain.StopRealPlay(iPic); } PictureBox picture = (PictureBox)sender; iPic = Convert.ToInt32(picture.Name.Substring(picture.Name.Length - 1, 1)); plImgShow.Visible = true; cameraShotMain.RealPlay(pictureShow, iPic); } #endregion #region time事件 /// /// 记录终端是否掉线 /// int iTimeCnt = 0; /// /// 初始载入一次数据 /// bool flagLoad = true; private void timer1_Tick(object sender, EventArgs e) { if (flagLoad) { lbPntName.Text = _uc.sPointName; flagLoad = false; } if (_uc.btnVoiceText != btnIpVoice.Text.Trim()) { btnIpVoice.Text = _uc.btnVoiceText; btnIpVoice.BackColor = _uc.btnVoiceText == "挂断" ? Color.Red : Color.DodgerBlue; } if (_uc.rowPointInfo != null) { if (drOldData != null && _uc.rowPointInfo.lastTime == drOldData.lastTime) { iTimeCnt++; if (iTimeCnt > 30) { setButtonColor(bcZD, "2");//终端掉线 setLoadBtnColor(); return; } else { iTimeCnt = 0; setButtonColor(bcZD, "1"); } } drOldData = _uc.rowPointInfo; txtWeight.Text = drOldData.wgt == null ? "0kg" : drOldData.wgt.Value + "kg"; List ll = MemoClass.getWarnInfo(_uc.rowPointInfo.collectionCode); if (ll != null) { foreach (LiveData lv in ll) { switch (lv.Tagname.Replace(drOldData.collectionCode, "")) { case "StaticStatus"://车辆检测 "0、东西方向激光均无报警;否则报警 setButtonColor(bcAreaWarm, ((lv.Value ?? "0") + "") == "0" ? "1" : "2"); break; case "SwitchLight"://PLC红绿灯控制模式状态 "PLC有三种控制模式:1、自动、2、远控;3、检修 setButtonColor(btnTakrOver, ((lv.Value ?? "1") + "") == "1" ? "0" : "2"); break; case "LightWest"://红绿灯:1、为绿灯;2、为红灯;" setButtonColor(btnRedLight, ((lv.Value ?? "1") + "") == "1" ? "2" : "0"); setButtonColor(btnGreenLight, ((lv.Value ?? "1") + "") == "1" ? "0" : "2"); break; case "ZeroWeightStatus": //0、其它,1、零点报警,红绿灯变红, setButtonColor(bcZeroWarn, ((lv.Value ?? "0") + "") != "1" ? "1" : "2"); break; } } } if (!chkFlag) { chkVALID_WGT.Checked = drOldData.validWgt == "1" ? false : true; chkVALID_TIME_INTERVAL.Checked = drOldData.validTimeInterval == "1" ? false : true; chkVALID_PREDICTION_DIFF.Checked = drOldData.validPredictionDiff == "1" ? false : true; chkVALID_PARK_STATUS.Checked = drOldData.validParkStatus == "1" ? false : true; chkVALID_CARNO.Checked = drOldData.validCarno == "1" ? false : true; chkVALID_TARE_TIME.Checked = drOldData.validTareTime == "1" ? false : true; chkVALID_EXCEED_WGT.Checked = drOldData.validExceedWgt == "1" ? false : true; chkLED_KEEP.Checked = drOldData.ledKeep == "1" ? true : false; chkVALID_LIANDA.Checked = drOldData.validLianda == "1" ? false : true; chkVALID_MAT_CLICK.Checked = drOldData.validMatClick == "1" ? false : true; chkVALID_METER_AREA.Checked = drOldData.validMeterArea == "1" ? false : true; //txtReplacePaper chkFlag = false; } if (!string.IsNullOrEmpty(drOldData.setCar) && txtCarNo.Text.Trim() == "") { cbCarNo.Text = drOldData.setCar.Substring(0, 1); if (drOldData.setCar.Length > 1) txtCarNo.Text = drOldData.setCar.Substring(1, drOldData.setCar.Length - 1); } txtMsgInfo.Text = drOldData.msgInfo; txtReplacePaper.Value = drOldData.printNum == null ? 0 : (drOldData.printNum.Value < 0 ? 0 : drOldData.printNum.Value); txtRfidCarNo.Text = drOldData.rfidCar; txtPhotoCarNo.Text = drOldData.photoCar; txtScanCarNo.Text = drOldData.scanCar; txtEditCarNo.Text = drOldData.editCar; setButtonColor(bcCarWarm, drOldData.carErr == "1" ? "2" : "1");//车号异常 setButtonColor(bcWgtWarm, drOldData.wgtErr == "1" ? "2" : "1");//重量异常 setButtonColor(bcTimed, drOldData.stopOverTime == "1" ? "2" : "1");//停留超时 if (drOldData.isHelp == "1") //0未呼叫,1呼叫待接听,2呼叫已接听 { setButtonColor(bcHelpWarm, "2");//现场求助 setButtonColor(bcIpVoice, "2");//IP语音 } else if (drOldData.isHelp == "2") { //setButtonColor(bcHelpWarm, "3");//现场求助 setButtonColor(bcIpVoice, "3");//IP语音 } else { setButtonColor(bcHelpWarm, "1");//现场求助 setButtonColor(bcIpVoice, "1");//IP语音 } if (drOldData.isTakeOver == "0") { setButtonColor(bcAutoState, "3");//终端计量 setButtonColor(bcYcStatWarm, "1");//远程计量 setButtonColor(btnYc, "0"); //setButtonColor(btnPW, "0"); btnYc.Text = "远程计量"; } else if (drOldData.isTakeOver == "1") { //setButtonColor(btnPW, "2"); if (string.IsNullOrEmpty(drOldData.userNo)) { setButtonColor(bcAutoState, "3");//终端计量 setButtonColor(bcYcStatWarm, "1");//远程计量 } else { setButtonColor(bcAutoState, "1");//终端计量 setButtonColor(bcYcStatWarm, "3");//远程计量 } } /* else if (drOldData.isTakeOver == "2") { setButtonColor(bcAutoState, "1");//终端计量 setButtonColor(bcYcStatWarm, "3");//远程计量 //setButtonColor(btnPW, "0"); setButtonColor(btnYc, "2"); } //*/ else { setButtonColor(bcAutoState, "1");//终端计量 setButtonColor(bcYcStatWarm, "1");//远程计量 setButtonColor(btnYc, "0"); //setButtonColor(btnPW, "0"); btnYc.Text = "远程计量"; } } } private void UpdateCarijeg(MeterWorkMonitor monitor, string content) { if (DialogResult.Yes == MessageBox.Show("确实要进行该操作吗?", "提示", MessageBoxButtons.YesNo)) { RESTfulResult rm = monitorService.doUpdateWf(monitor); if (rm.Succeed) { WriteMonitorNote(content); MessageBox.Show("操作成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } else { MessageBox.Show("操作失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } } } #region 按钮事件 private void btnSend_Click(object sender, EventArgs e) { UpdateCarijeg(new MeterWorkMonitor { pointNo = _uc.sPoint, ledWriter = txtLed.Text.Trim() }, "写入LED信息:" + txtLed.Text.Trim()); } #endregion private void btnSee_Click(object sender, EventArgs e) { this.Close(); } private void btnZero_Click(object sender, EventArgs e) { if (DialogResult.Yes == MessageBox.Show("确实要执行清零操作吗?", "提示", MessageBoxButtons.YesNo)) { if (!string.IsNullOrEmpty(txtWeight.Text.Replace("kg", ""))) { int iValue = Convert.ToInt32(txtWeight.Text.Replace("kg", "")); MeterBaseScaleRange mbsr = PbCacheMonitor.ltRange.Where(s => s.baseSpotNo == _uc.sPoint).FirstOrDefault(); if (mbsr != null) { if (mbsr.upperLimitClearZero < iValue || mbsr.lowerLimitClearZero > iValue) { MessageBox.Show("当前清零值不在允许范围"); return; } } } string msgInfo = ""; MemoClass.writeWarnInfo(_uc.rowPointInfo.collectionCode, "ClearZero", "1", _uc.sUserId, out msgInfo); MessageBox.Show(msgInfo != "" ? msgInfo : "清零成功"); WriteMonitorNote(_uc.sPointName + "执行清零操作,执行" + (msgInfo != "" ? "失败" + msgInfo : "清零成功")); } } private void btnIpVoice_Click(object sender, EventArgs e) { EventArgs arg = new EventArgs(); if (ucMonitoringEvent != null) { ucMonitoringEvent(sender, arg); } } private void btnYc_Click(object sender, EventArgs e) { if (btnYc.Text == "远程计量") { UpdateCarijeg(new MeterWorkMonitor { pointNo = _uc.sPoint, isTakeOver = "1", userNo = "" }, "写入远程计量信息:" + btnYc.Text.Trim()); btnYc.Text = "智能计量"; btnYc.BackColor = Color.Red; } else { UpdateCarijeg(new MeterWorkMonitor { pointNo = _uc.sPoint, isTakeOver = "0", userNo = "" }, "远程计量切回智能计量:" + btnYc.Text.Trim()); btnYc.Text = "远程计量"; btnYc.BackColor = Color.DodgerBlue; } } private void btnTakrOver_Click(object sender, EventArgs e) { string strError = ""; chkFlag = true; string sValue = "2"; if (btnTakrOver.BackColor == Color.Red) { sValue = "1"; } //切换为远程控制 if (MemoClass.writeWarnInfo(_uc.rowPointInfo.collectionCode, "SwitchLight", sValue, _uc.sUserId, out strError)) { WriteMonitorNote(_uc.sPointName + "设置远程接管"); } } private void btnRedLight_Click(object sender, EventArgs e) { string strError = ""; chkFlag = true; //红灯 if (MemoClass.writeWarnInfo(_uc.rowPointInfo.collectionCode, "LightWest", "1", _uc.sUserId, out strError) && MemoClass.writeWarnInfo(_uc.rowPointInfo.collectionCode, "LightEast", "1", _uc.sUserId, out strError)) { WriteMonitorNote(_uc.sPointName + "设置红绿灯为红灯"); } } private void btnGreenLight_Click(object sender, EventArgs e) { string strError = ""; chkFlag = true; //绿灯 if (MemoClass.writeWarnInfo(_uc.rowPointInfo.collectionCode, "LightWest", "2", _uc.sUserId, out strError) && MemoClass.writeWarnInfo(_uc.rowPointInfo.collectionCode, "LightEast", "2", _uc.sUserId, out strError)) { WriteMonitorNote(_uc.sPointName + "设置红绿灯为绿灯"); } } private void btnReplacePaper_Click(object sender, EventArgs e) { UpdateCarijeg(new MeterWorkMonitor { pointNo = _uc.sPoint, printNum = Convert.ToInt32(txtReplacePaper.Value) }, "换纸:" + txtReplacePaper.Value); } private void btnCarSet_Click(object sender, EventArgs e) { UpdateCarijeg(new MeterWorkMonitor { pointNo = _uc.sPoint, setCar = cbCarNo.Text + txtCarNo.Text.Trim() }, "重置车号为:" + cbCarNo.Text.Trim() + txtCarNo.Text.Trim()); } private void frmProductVoice_FormClosing(object sender, FormClosingEventArgs e) { IPVideoClose(); timer1.Stop(); } /// /// 双击关闭大图 /// /// /// private void pictureShow_DoubleClick(object sender, EventArgs e) { plImgShow.Visible = false; cameraShotMain.StopRealPlay(iPic); iPic = 0; } private void WriteMonitorNote(string content) { RESTfulResult rm = noteService.doAddWf(new MeterMonitorNote { baseSpotNo = _uc.sPoint, baseSpotName = _uc.sPointName, operationContent = content,//str + chk.Text, carNo = cbCarNo.Text.Trim() + txtRfidCarNo.Text.Trim(), meterManNo = _uc.sUserId, meterManName = _uc.sName, meterNoteSource = "2" }); if (!rm.Succeed) { WriteLog("写入操作日志异常:" + content); } } #region private void chkVALID_PARK_STATUS_CheckedChanged(object sender, EventArgs e) { chkFlag = true; chkEvent((CheckBox)sender); } private void chkVALID_WGT_CheckedChanged(object sender, EventArgs e) { chkFlag = true; chkEvent((CheckBox)sender); } private void chkVALID_TIME_INTERVAL_CheckedChanged(object sender, EventArgs e) { chkFlag = true; chkEvent((CheckBox)sender); } private void chkVALID_TARE_TIME_CheckedChanged(object sender, EventArgs e) { chkFlag = true; chkEvent((CheckBox)sender); } private void chkVALID_EXCEED_WGT_CheckedChanged(object sender, EventArgs e) { chkFlag = true; chkEvent((CheckBox)sender); } private void chkVALID_PREDICTION_DIFF_CheckedChanged(object sender, EventArgs e) { chkFlag = true; chkEvent((CheckBox)sender); } private void chkLED_KEEP_CheckedChanged(object sender, EventArgs e) { chkFlag = true; chkEvent((CheckBox)sender); } private void chkVALID_CARNO_CheckedChanged(object sender, EventArgs e) { chkFlag = true; chkEvent((CheckBox)sender); } /// /// 点击事件公共方法:更新METER_WORK_MONITOR表中字段为“控件名”的值为 1 /// /// private void chkEvent(CheckBox chk) { string str = "取消勾选"; if (chk.Checked) { str = "勾选"; } string sql = string.Format("update METER_WORK_MONITOR set {0} = '{1}' where POINT_NO='{2}'", chk.Name.Replace("chk", ""), chk.Checked ? "0" : "1", _uc.sPoint); RESTfulResult rm = PbModelDbService.executeSqlDataWf(sql); if (rm.Succeed) { WriteMonitorNote(str + chk.Text); } } #endregion private void setLoadBtnColor() { bcZeroWarn.BackColor = Color.Green; bcWgtWarn.BackColor = Color.Green; foreach (Control cn in groupBox3.Controls) { if (cn.Name.Contains("bc")) { if (cn.Name != "bcZD") { cn.BackColor = Color.Green; } } } btnIpVoice.BackColor = Color.DodgerBlue; btnRedLight.BackColor = Color.DodgerBlue; btnGreenLight.BackColor = Color.DodgerBlue; } /// /// 按钮颜色设置 /// /// 按钮 /// 0:DodgerBlue 1:Green 2:Red private void setButtonColor(Button button, string sColor) { switch (sColor) { case "0": button.BackColor = Color.DodgerBlue; break; case "1": button.BackColor = Color.Green; break; case "2": button.BackColor = Color.Red; break; case "3": button.BackColor = Color.Orange; break; } } #endregion #region 日志 public void WriteLog(string str) { try { string strLogName = "计量监控_"; string m_szRunPath; m_szRunPath = System.Environment.CurrentDirectory; if (System.IO.Directory.Exists(m_szRunPath + "\\log") == false) { System.IO.Directory.CreateDirectory(m_szRunPath + "\\log"); } string strDate = System.DateTime.Now.ToString("yyyyMMdd"); string strPathFile = m_szRunPath + "\\log\\" + strDate; if (!Directory.Exists(strPathFile))//如果不存在就创建file文件夹 { Directory.CreateDirectory(strPathFile); } System.IO.TextWriter tw = new System.IO.StreamWriter(strPathFile + "\\" + strLogName + strDate + ".log", true); tw.WriteLine(System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); tw.WriteLine(str); tw.WriteLine("\r\n"); tw.Close(); } catch (Exception ex) { } } #endregion private void btnPW_Click(object sender, EventArgs e) { /* if (btnYc.BackColor != Color.Red) { if (btnPW.BackColor == Color.DodgerBlue) { UpdateCarijeg(new MeterWorkMonitor { pointNo = _uc.sPoint, isTakeOver = "1" }, "进行派位处理"); btnPW.BackColor = Color.Red; } else { UpdateCarijeg(new MeterWorkMonitor { pointNo = _uc.sPoint, isTakeOver = "0" }, "取消派位处理"); btnPW.BackColor = Color.DodgerBlue; } } else { MessageBox.Show("请先释放请先释放远程终端接管"); } //*/ } private void chkVALID_MAT_TIME_Click(object sender, EventArgs e) { chkFlag = true; chkEvent((CheckBox)sender); } private void chkVALID_LIANDA_Click(object sender, EventArgs e) { chkFlag = true; chkEvent((CheckBox)sender); } private void chkVALID_MAT_CLICK_Click(object sender, EventArgs e) { chkFlag = true; chkEvent((CheckBox)sender); } /// /// 不验证计量区域 /// /// /// private void chkVALID_METER_AREA_Click(object sender, EventArgs e) { chkFlag = true; chkEvent((CheckBox)sender); } } }