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"); }
protected virtual void OnConnectEvent(ConnectEventArgs e) { ConnectEvent?.Invoke(this, e); }
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; }