示例#1
0
        private void send_data()
        {
            while (true)
            {
                try
                {
                    _capture.Retrieve(_frame, 0);
                    Bitmap tmpBmp = new Bitmap(_frame.ToImage <Bgr, Byte>().Bitmap);
                    this.Invoke(new Action(() =>
                    {
                        //pictureBox1.Image = tmpBmp;
                    }));

                    //CvInvoke.CvtColor(_frame, _grayFrame, ColorConversion.Bgr2Gray);
                    //var image = _frame.ToImage<Bgr, Byte>().ToJpegData();
                    //pictureBox1.Image = _frame.ToImage<Bgr, Byte>().Bitmap;



                    DataFromSend data = new DataFromSend(id: i, bitmap: tmpBmp);

                    BinaryFormatter binFormat = new BinaryFormatter();
                    var             stream    = new MemoryStream();
                    binFormat.Serialize(stream, data);
                    byte[] m_Bytes = ReadToEnd(stream);


                    int part     = 1;    //текущая часть файла
                    int partsize = 1024; //размер части файла в байтах
                    int position = 0;    //текущая позиция в разделяемом файле для формирования новой части файла

                    // Broadcast.SocketClient socketClient = new Broadcast.SocketClient(port: 4438);

                    //socketClient.SendMessageFromSocket(port: 4438, new byte[] { 255, 255, 0, 1, 0 });

                    for (int i = 0; i < m_Bytes.Length; i += partsize)
                    {
                        byte[] partbytes = new byte[Math.Min(partsize, m_Bytes.Length - i)];
                        for (int j = 0; j < partbytes.Length; j++)
                        {
                            partbytes[j] = m_Bytes[position++];
                        }

                        //socketClient = new Broadcast.SocketClient(port: 4438);
                        //socketClient.SendMessageFromSocket(port: 4438, DataFromSend: m_Bytes);
                    }



                    //socketClient.SendMessageFromSocket(port: 4438, Kadr: "Вызов номер "+i+ " <EOF>");
                    if (i >= 65535)
                    {
                        i = 0;
                    }
                    i++;
                }
                catch (Exception ex)
                {
                }
            }
        }
示例#2
0
        private void button1_Click(object sender, EventArgs e)
        {
            _capture.Retrieve(_frame, 0);
            while (true)
            {
            }



            _capture.Retrieve(_frame, 0);
            Bitmap tmpBmp = new Bitmap(_frame.ToImage <Bgr, Byte>().Bitmap);


            DataFromSend data = new DataFromSend(id: i, bitmap: tmpBmp);

            BinaryFormatter binFormat = new BinaryFormatter();
            var             stream    = new MemoryStream();

            binFormat.Serialize(stream, data);
            byte[] m_Bytes = ReadToEnd(stream);


            int part     = 1;     //текущая часть файла
            int partsize = 16875; //размер части файла в байтах
            int position = 0;     //текущая позиция в разделяемом файле для формирования новой части файла
            //(partbytes, "part" + (part++) + ".part");
            byte idUser = 0;

            byte[] serviceInfo = new byte[] { idUser, 0, 0 }; //3 сервистных байта. 1й - ид пользователя. 2й и 3й - номер пакета. нумерация с нуля.
            byte[] sendData    = null;


            int intValue = m_Bytes.Length;

            byte[] intBytes = BitConverter.GetBytes(intValue);
            if (BitConverter.IsLittleEndian)
            {
                Array.Reverse(intBytes);
            }
            byte[] result = intBytes;

            int leng = convertByteToInt(result);

            int convertByteToInt(byte[] b)
            {
                int value = 0;

                for (int i = 0; i < b.Length; i++)
                {
                    value = (value << 8) | b[i];
                }
                return(value);
            }

            //Broadcast.UPDProvider001.SendData(result);

            //Broadcast.UPDProvider001.SendData(m_Bytes);



            for (int i = 0; i < m_Bytes.Length; i += partsize)
            {
                byte[] partbytes = new byte[Math.Min(partsize, m_Bytes.Length - i)];
                for (int j = 0; j < partbytes.Length; j++)
                {
                    partbytes[j] = m_Bytes[position++];
                }

                if (serviceInfo[2] >= 255)
                {
                    serviceInfo[1]++;
                    serviceInfo[2] = 0;
                }
                serviceInfo[2]++;

                part++;
                sendData = serviceInfo.Concat(partbytes).ToArray();
                Broadcast.UPDProvider001.SendData(sendData);
            }
        }