예제 #1
0
        private void Disconnect_DoWork(object sender, DoWorkEventArgs e)                        // Manages the disconnection routine of the camera DSC-QX10
        {
            CamConStatus = false;
            ConnectEventArgs args = new ConnectEventArgs();

            CamResponse = SendRequest("actZoom", "\"out\",\"start\"");
            int zoom = -1;

            while (zoom != 0)
            {
                string json = SendRequest("getEvent", "false", "1.1");
                zoom = Convert.ToInt32(ReadRequestJson(json, 2, "zoomPosition"));
            }
            UdpSocket.Close();
            StatSender("DISCONNECT");
        }
예제 #2
0
 protected virtual void OnConnectEvent(ConnectEventArgs e)
 {
     ConnectEvent?.Invoke(this, e);
 }
예제 #3
0
        private void LiveView_DoWork(object sender, DoWorkEventArgs e)                          // Request liveview image, reads and stores image
        {
            BackgroundWorker bw   = sender as BackgroundWorker;
            ConnectEventArgs args = new ConnectEventArgs();

            try
            {
                while (!bw.CancellationPending)
                {
                    using (var memstream = new MemoryStream())
                    {
                        imgData     = new List <byte>();
                        imgSize     = 0;
                        buffer      = new byte[520];
                        bufferAux   = new byte[4];
                        payloadType = 0;
                        frameNo     = -1;
                        paddingSize = 0;

GetHeader:              // Retrieves a byte(s) from the stream to check if it corresponds to Sony header construction

                        // Common Header (8 Bytes)
                        imgReader.BaseStream.Read(buffer, 0, 1);                            // Seeks for start byte
                        var start = buffer[0];
                        if (start != 0xff)
                        {
                            goto GetHeader;
                        }

                        imgReader.BaseStream.Read(buffer, 0, 1);                            // Stores payload Type
                        payloadType = (buffer[0]);
                        if (!((payloadType == 1) || (payloadType == 2)))
                        {
                            goto GetHeader;
                        }

                        imgReader.BaseStream.Read(buffer, 0, 2);                            // Stores Frame Number depending Payload type
                        if (payloadType == 1)
                        {
                            frameNo = BitConverter.ToUInt16(buffer, 0);
                        }

                        imgReader.BaseStream.Read(buffer, 0, 4);                            // Discards expected Time stamp

                        // Payload header (128 bytes)
                        imgReader.BaseStream.Read(buffer, 0, 4);
                        if (!((buffer[0] == 0x24) & (buffer[1] == 0x35) & (buffer[2] == 0x68) & (buffer[3] == 0x79)))
                        {
                            goto GetHeader;                                                 // If the start code does not correspond to fixed code (0x24, 0x35, 0x68, 0x79), starts over
                        }
                        imgReader.BaseStream.Read(bufferAux, 0, 4);
                        paddingSize  = bufferAux[3];
                        bufferAux[3] = bufferAux[2];
                        bufferAux[2] = bufferAux[1];
                        bufferAux[1] = bufferAux[0];
                        bufferAux[0] = 0;
                        Array.Reverse(bufferAux);
                        imgSize = BitConverter.ToInt32(bufferAux, 0);                       // Reads and translates Data stream size

                        if (payloadType == 1)                                               // Case JPEG data
                        {
                            imgReader.BaseStream.Read(buffer, 0, 120);
                            while (imgData.Count < imgSize)
                            {
                                imgReader.BaseStream.Read(buffer, 0, 1);
                                imgData.Add(buffer[0]);
                            }
                        }

                        MemoryStream stream = new MemoryStream(imgData.ToArray());
                        //BinaryReader reader = new BinaryReader(stream);
                        bmpImage = (Bitmap)Image.FromStream(stream);

                        memstream.Close();
                        stream.Close();

                        //Thread.Sleep(1);
                        if (CanSend)
                        {
                            StatSender("LIVEVIEW");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
                //MessageBox.Show(ex.Message);
            }
            //e.Cancel = true;
        }