Ejemplo n.º 1
0
            internal async void ReceiveVSDebug(MeadowSerialDevice meadow)
            {
                // Console.WriteLine("ActiveClient:Start receiving from VS");
                try
                {
                    // Receive from Visual Studio and send to Meadow
                    await Task.Run(async() =>
                    {
                        while (tcpClient.Connected && okayToRun)
                        {
                            var recvdBuffer = new byte[490];
                            var bytesRead   = await networkStream.ReadAsync(recvdBuffer, 0, recvdBuffer.Length);
                            if (!okayToRun)
                            {
                                break;
                            }

                            if (bytesRead > 0)
                            {
                                // Console.WriteLine($"{DateTime.Now:HH:mm:ss.fff}-Received {bytesRead} bytes from VS will forward to HCOM");

                                // Need a buffer the exact size of received data to work with CLI
                                var meadowBuffer = new byte[bytesRead];
                                Array.Copy(recvdBuffer, 0, meadowBuffer, 0, bytesRead);

                                // Forward to Meadow
                                MeadowDeviceManager.ForwardVisualStudioDataToMono(meadowBuffer, meadow, 0);
                                //Console.WriteLine($"{DateTime.Now:HH:mm:ss.fff}-Forwarded {bytesRead} from VS to Meadow");
                            }
                        }
                    });
                }
                catch (System.IO.IOException ioe)
                {
                    // VS client probably died
                    Console.WriteLine(ioe.ToString());
                    debuggingServer.CloseActiveClient();
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.ToString());
                    debuggingServer.CloseActiveClient();
                    if (okayToRun)
                    {
                        throw;
                    }
                }
            }