C # и класс SerialPort, усекающий данные

У меня есть приложение C #, которое использует класс .NET SerialPort. В коде, который я использую для получения данных из последовательного порта, нет ничего особенного. Ключевые части:

//Open the port
            comport.BaudRate = myPort.BaudRate;
            comport.StopBits = StopBits.One;
            comport.DataBits = 8;
            comport.Parity = Parity.None;
            comport.ReadTimeout = 20000;


            comport.PortName = myPort.PortSystemName;
            comport.Handshake = Handshake.None;
            comport.RtsEnable = true;


            comport.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
comport.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);

    private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {

            string msg = "";
            try
            {
                msg = comport.ReadExisting();

                if (comport.IsOpen)
                    comport.Close();
         }

Этот код отлично работает в Windows XP . Однако в Windows 7 возникают проблемы, когда независимо от того, какие данные отправляются, он выбирает ТОЛЬКО первые четыре символа. Таким образом, в строке типа «123456» сообщение будет «1234». Устройство, которое собирает данные, - это RFIdeas pcProx, и я убедился, что данные в порядке. Я также убедился, что данные в гипертерминале выглядят нормально. Так что должно быть что-то странное в том, как я собираю данные в коде. Помощь!

5
задан Unknown Coder 19 January 2012 в 16:24
поделиться