Esempio n. 1
0
        private void MainForm_Load(object sender, EventArgs e)
        {
            try
            {
                Config.Load("config.xml");
                ConsoleMessage("Data loaded successfully.");

                image = new GrayImage(Config.getInstance().ResolutionX, Config.getInstance().ResolutionY);
                image.ImageGenerated += image_ImageGenerated;
                image.StartGenerate(Config.getInstance().FrameRate);

                connection              = new TcpConnection(Config.getInstance().Ip, Config.getInstance().Port.ToString());
                connection.DataSent    += connection_DataSent;
                connection.ShowMessage += ConsoleMessage;
                connection.StartSend(Config.getInstance().NetSpeed);
            }
            catch (ArgumentException ex)
            {
                ConsoleMessage(ex.Message);

                return;
            }
            catch (FormatException ex)
            {
                ConsoleMessage(ex.Message);

                return;
            }
            catch (Exception ex)
            {
                ConsoleMessage(ex.Message);
                ConsoleMessage("Default data loaded.");
            }
        }
Esempio n. 2
0
        private async void SendAsync(int msPeriodSend)
        {
            int msDataSending;

            var sw = new Stopwatch();

            while (true)
            {
                ShowMessage("Waiting for a connection...");
                client = await server.AcceptTcpClientAsync();

                ShowMessage("Connected!");

                stream = client.GetStream();

                int millisecondsDelay;
                while (!cancelTokenSource.Token.IsCancellationRequested)
                {
                    sw.Restart();
                    try
                    {
                        if (imageCollection.TryTake(out Bitmap bmp))
                        {
                            var data = await Task.Run(() => GrayImage.GrayImageToByte(bmp));

                            await stream.WriteAsync(data, 0, data.Length);
                        }
                    }
                    catch
                    {
                        client.Close();
                        ShowMessage("Client disconnected!");

                        break;
                    }
                    sw.Stop();

                    ShowMessage("Data sent!");

                    msDataSending = (int)sw.ElapsedMilliseconds;

                    DataSent?.Invoke(msDataSending);

                    millisecondsDelay = msPeriodSend - msDataSending;
                    if (millisecondsDelay > 0)
                    {
                        await Task.Delay(millisecondsDelay, cancelTokenSource.Token);
                    }
                }
            }
        }