У меня есть приложение на 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, и я проверил, что данные в порядке. Я также проверил, что данные выглядят нормально в гипертерминале. Так что должно быть что-то странное в том, как я собираю данные в коде. Помогите!