Example #1
0
        private void do仅录像_Click(object sender, EventArgs e)
        {
            var _网卡    = (ICaptureDevice)this.in网卡.SelectedItem;
            var __录像目录 = H路径.获取绝对路径("录像\\");

            if (!Directory.Exists(__录像目录))
            {
                Directory.CreateDirectory(__录像目录);
            }
            var __录像机 = new CaptureFileWriterDevice(Path.Combine(__录像目录, _当前项目.称 + " " + DateTime.Now.ToString("yyyy-MM-dd hh-mm-ss")));
            PacketArrivalEventHandler __处理抓包 = (object sender1, CaptureEventArgs e1) => __录像机.Write(e1.Packet);

            _网卡.OnPacketArrival += __处理抓包;
            _网卡.Open();
            _网卡.Filter = H公共.获取过滤表达式(_当前项目.当前通信设备);
            _网卡.StartCapture();
            XtraMessageBox.Show(string.Format("开始时间: {0}, 按OK键终止录像!", DateTime.Now), "录像中", MessageBoxButtons.OK, MessageBoxIcon.Information);
            _网卡.OnPacketArrival -= __处理抓包;
            _网卡.Close();
            __录像机.Close();
        }
        private void 开始()
        {
            _停止后台处理 = false;
            _后台线程   = new Thread(处理原始报文);
            _后台线程.Start();

            _网卡.OnPacketArrival  += 处理抓到报文;
            _网卡.OnCaptureStopped += 处理停止抓包;

            try
            {
                _网卡.Open();
                _网卡.Filter = H公共.获取过滤表达式(_配置.项目.当前通信设备);
                Debug.WriteLine("过滤条件: " + _网卡.Filter);
                _网卡.StartCapture();
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show("抓包出现错误, 请关闭后重试: " + ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }