Ejemplo n.º 1
0
        public void ReceiveDataReadStream(DataPackage pkgData)
        {
            //收到实时码流数据【采集器→主机】
            ushort packID = 0;
            Struct_FileHead fileHead = new Struct_FileHead();

            byte[] readBytes = null;
            byte[] dataBuffer = pkgData.PureData;
            using (MemoryStream ms = new MemoryStream(dataBuffer))
            {
                using (BinaryReader br = new BinaryReader(ms))
                {
                    fileHead.Buffer = br.ReadBytes(4);      //要读取文件的参数
                    packID = br.ReadUInt16();               //包序号

                    int packDataLen = br.ReadUInt16();      //该包数据中图像数据长度,最大 506 字节。

                    readBytes = br.ReadBytes(packDataLen);

                }
            }

            if (readBytes != null && readBytes.Length > 0)
            {
                if (OnDataChanged != null)
                {
                    //通知主程序处理实时码流数据
                    StreamHandlerEventArgs eventArgs = new StreamHandlerEventArgs(RunMode.Stream);
                    eventArgs.OperState = OperationState.StreamReceiving;
                    eventArgs.Buffer = readBytes;
                    eventArgs.Value = null;

                    //if (readBytes.Length == 12)
                    //{
                    //    //媒体流数据包包头,包含了时间戳以及数据流信息
                    //    Struct_PacketHeader packetHeader = new Struct_PacketHeader(readBytes);
                    //    eventArgs.Value = packetHeader;
                    //}
                    //else
                    //{
                    //    File.WriteAllBytes("H:\\aa", readBytes);
                    //}

                    OnDataChanged(this, eventArgs);
                }
            }
        }
Ejemplo n.º 2
0
        void ProStream(StreamHandlerEventArgs e)
        {
            //实时码流
            if (e.OperState == OperationState.StreamOpen)
            {
                //打开码流,初始化实时码流

            }
            else if (e.OperState == OperationState.StreamClose)
            {
                //关闭码流

            }
            else if (e.OperState == OperationState.StreamReceiving)
            {
                //显示实时码流图像
                byte[] buffer = ((StreamHandlerEventArgs)e).Buffer;
                if (e.Value != null)
                {

                }

                //显示实时图像流
                //bw.Write(buffer);
                string text = string.Format("[Len: {0}] {1} \r\n", buffer.Length, Utils.ConvertTools.ToHexString(buffer));
                WriteLogText(text);
            }
        }
Ejemplo n.º 3
0
        public void ReceiveStreamAction(DataPackage pkgData)
        {
            //收到 "开关实时码流" 的应答【采集器→主机】
            byte retCode = 0;

            byte[] dataBuffer = pkgData.PureData;
            using (MemoryStream ms = new MemoryStream(dataBuffer))
            {
                using (BinaryReader br = new BinaryReader(ms))
                {
                    retCode = br.ReadByte();                //结果码:  0-码流关闭,1-码流打开
                    curStatus_ctl = br.ReadByte();          //输出开关量状态
                    br.ReadInt16();                         //R保留

                    macState = 1;
                }
            }

            if (retCode == 0)
            {
                //收到实时码流已关闭命令
                OpenState = false;

                if (OnDataChanged != null)
                {
                    StreamHandlerEventArgs eventArgs = new StreamHandlerEventArgs(RunMode.Stream);
                    eventArgs.OperState = OperationState.StreamClose;
                    OnDataChanged(this, eventArgs);
                }
            }
            else
            {
                //收到实时码流已打开命令
                OpenState = true;

                if (OnDataChanged != null)
                {
                    StreamHandlerEventArgs eventArgs = new StreamHandlerEventArgs(RunMode.Stream);
                    eventArgs.OperState = OperationState.StreamOpen;
                    OnDataChanged(this, eventArgs);
                }
            }
        }