[ SOLVED ] C# win10 serial terminal MISSING FIRST BYTE !

have a read thru how-to-get-the-best-out-of-this-forum
in particular avoid posting images of code - they waste space, are difficult ro read and imposible to copy a segment of code to test
you C# serialport code looks similar to mine so no idea why it does not work
e.g. my Form1.cs may give you some ideas

using System;
using System.Windows.Forms;
using System.IO.Ports;

namespace CsharpTerminal
{
    public partial class Form1 : Form
    {
        // delegate to transfer received data to TextBox
        public delegate void AddDataDelegate(String myString);
        public AddDataDelegate myDelegate;
        
        public Form1()
        {
            InitializeComponent();
            this.myDelegate = new AddDataDelegate(AddDataMethod);
            // Get a list of serial port names.
            string[] ports = SerialPort.GetPortNames();

            textBox1.AppendText("The following serial ports were found:");

            // Display each port name to the console.
            foreach (string port in ports)
            {
                textBox1.AppendText("  " + port);
                ToolStripMenuItem item = new ToolStripMenuItem(port);   // create a new menu item
                item.Click += comPortsStripMenuItem_Click;  // add event handler
                comPortsStripMenuItem.DropDownItems.Add(item);  // add to the menu of COM ports
            }


            // scan for COM ports and add to menu item if found
          /*  for (int port = 0; port <= 20; port++)
				{
				serialPort1.PortName = "COM" + port.ToString();
				try
					{
					serialPort1.Open();			// attempt to open serial port
					serialPort1.BaudRate=115200;			
					textBox1.AppendText("Found " + serialPort1.PortName + "\n");
					Console.WriteLine("serial port open OK {0}", serialPort1.PortName);
					serialPort1.Close() ;														//open OK, close it
					ToolStripMenuItem item = new ToolStripMenuItem(serialPort1.PortName);	// create a new menu item
                    item.Click += comPortsStripMenuItem_Click;	// add event handler
                    comPortsStripMenuItem.DropDownItems.Add(item);	// add to the menu of COM ports
 					}
				catch ( Exception ex)
					{ Console.WriteLine("serial port open fail {0} ", serialPort1.PortName, ex); }
			}

        Console.WriteLine("COM ports found {0} ", comPortsStripMenuItem.DropDownItems.Count);
		textBox1.AppendText(String.Format("{0} COM ports found - select from COM ports menu\r\n\r\n", comPortsStripMenuItem.DropDownItems.Count));
        */
        // if no COM ports were found display message
        if(comPortsStripMenuItem.DropDownItems.Count == 0 )
           textBox1.AppendText("\r\n  No COM ports found\r\n");
        else textBox1.AppendText("\r\n  Found " + comPortsStripMenuItem.DropDownItems.Count + " COM ports \n");
        }

        // key on textbox pressed, read key and transmit down serial line
        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {        
        if(echoOFFToolStripMenuItem.Text == "Echo ON") e.Handled = true; // if echo is off don't display on textbox
        if( serialPort1.IsOpen)
            serialPort1.Write(e.KeyChar.ToString());
        else
            textBox1.AppendText("No COM port open" + Environment.NewLine);
        }

     // data received from serial port - display on textbox
     private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            //textBox1.AppendText(serialPort1.ReadExisting());  // not thread safe
            string s = serialPort1.ReadExisting();
            textBox1.Invoke(this.myDelegate, new Object[] { s });
        }

     // display seral data on textbox
     public void AddDataMethod(String myString)
     {
         textBox1.AppendText(myString);
     }

     // COM port selected
     private void comPortsStripMenuItem_Click(object sender, EventArgs e)
     {
         try
         {
             Console.WriteLine("item selected {0} {1}", e.ToString(), sender.ToString());
             serialPort1.Close();
             serialPort1.PortName = sender.ToString();
             serialPort1.Open();
             textBox1.AppendText("Opened Port " + sender.ToString() + " baud rate " + serialPort1.BaudRate.ToString() + "\r\n");
             Text = "Port " + sender.ToString() + " baud rate " + serialPort1.BaudRate.ToString();
         }
         catch (Exception e1)
            //{ textBox1.AppendText("Failed to open Port " + sender.ToString() + "\r\n" + e1 + "\r\n"); }
            { textBox1.AppendText("Failed to open Port " + sender.ToString() + 
                    "\r\n   Is it already open in another program?? \r\n"); }
            // serialPort1.RtsEnable = true;
            // serialPort1.Handshake =  Handshake.RequestToSend;
        }

        // baud rate selected
        private void baudRateToolStripMenuItem_Click(object sender, EventArgs e)
     {
        Console.WriteLine("item selected {0} {1}", e.ToString(), sender.ToString());
        serialPort1.BaudRate = Convert.ToInt32(sender.ToString());
        textBox1.AppendText('\n' + " baud rate " + serialPort1.BaudRate.ToString() + '\n');
        Text = "Port " + serialPort1.PortName.ToString() + " baud rate " + serialPort1.BaudRate.ToString();

     }

     // echo selected
     private void echoONToolStripMenuItem_Click(object sender, EventArgs e)
     {
        // invert echo ON/OFF  display
        if(echoOFFToolStripMenuItem.Text == "Echo ON")
            echoOFFToolStripMenuItem.Text = "Echo OFF";
        else
            echoOFFToolStripMenuItem.Text = "Echo ON";
     }

     private void Form1_FormClosed(object sender, FormClosedEventArgs e)
     {
         serialPort1.Close();
     }

        // handshake mode selected
        private void handShakeNone(object sender, EventArgs e)
        {
            serialPort1.Handshake = Handshake.None;
        }

        private void handShakeRequestToSend(object sender, EventArgs e)
        {
            serialPort1.Handshake = Handshake.RequestToSend;
        }

        private void handShakeXonXoff(object sender, EventArgs e)
        {
            serialPort1.Handshake = Handshake.XOnXOff;
        }

        private void handShakeRequestXonXoff(object sender, EventArgs e)
        {
            serialPort1.Handshake = Handshake.RequestToSendXOnXOff;
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }
    }
}

the code running
image

I scan the COM ports , list them under Com Ports menu item and then selected COM11
you can see the output of an Arduini Mega