У меня есть приложение, которое читает с COM-порта, а затем что-то делает с данными, которые он получает. В настоящее время я использую эмулятор COM-порта (поскольку у меня нет доступного для меня устройства), но я передаю ему образец данных. Программа, кажется, работает отлично, если я открываю COMPort, прежде чем начать передачу данных. Однако, если я начинаю передачу перед открытием COMPort, а затем открываю порт, событие dataReceived никогда не запускается, и я никогда не могу получить какие-либо данные. Я даже попытался очистить INBuffer, как только я открою порт, но не могу прочитать с него.
Мой код для открытия порта:
public void setupComPort(string baudRate, string dataBits, string stopBits, string parity, string portName)
{
if (comPort.IsOpen)
comPort.Close();
comPort.BaudRate = int.Parse(baudRate);
comPort.DataBits = int.Parse(dataBits);
comPort.StopBits = (StopBits)Enum.Parse(typeof(StopBits), stopBits);
comPort.Parity = (Parity)Enum.Parse(typeof(Parity), parity);
comPort.PortName = portName;
// When data is recieved through the port, call this method
comPort.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
try
{
// Open the port
comPort.Open();
//If there's data in buffer, discard so we can start receiving
//comPort.DiscardInBuffer();
}
catch (Exception e)
{
MessageBox.Show(e.Message, "Error Opening Port", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
Любая помощь будет оценена.