Я разрабатываю приложение WPF, которое будет считывать данные на последовательном порту, анализировать его и отображать в пользовательском интерфейсе.UI зависает при чтении данных на последовательном порту
я должен использовать последовательный порт Buad скорость - 115200, биты данных - 8, Стоп бит - 1.
Я посылаю 10000 байт в секунду на последовательный порт, который будет читать мой WPF приложения.
Но, здесь я сталкиваюсь с проблемой с пользовательским интерфейсом. Когда я начинаю читать COM-порт, мой пользовательский интерфейс замерзает. Это не позволяет никому ничего делать. Согласно моему исследованию, это связано с высокой скоростью данных.
- Я читаю COM-порт в разных потоках, и пользовательский интерфейс работает на разных потоках.
- Передача данных между потоками осуществляется с использованием общего кругового буфера.
- Я использовал методы BeginInvoke для обновления полей пользовательского интерфейса, поэтому функция немедленно возвращает результат.
- Я использовал механизм блокировки при доступе к круговому буфере в обоих потоках.
Есть ли способ справиться с этой ситуацией? Я читал, что многие люди сталкиваются с такой же проблемой. Каково решение, с помощью которого такая проблема может быть решена.
Спасибо, Вишал N
Просьба указать код. – Diryboy
Ты уверен, что вы в разные темы? Ваш порт прочитал конец? Отправьте код, пожалуйста. – Sonhja
Шаг 3 - проблема, вы делаете это слишком часто. Пользовательский интерфейс не может идти в ногу. Просто делайте это * много * реже, вам нужно только держать человеческие глаза занятыми. Они не могут видеть ничего, что обновляется быстрее, чем 20 раз в секунду. Буферизуйте полученные данные, пока не получите полный ответ. И свести к минимуму количество информации, которую вы сбрасываете в пользовательском интерфейсе. –