Рекомендация для третьего лица .NET Serial Port Class / Component - PullRequest
0 голосов
/ 11 августа 2010

Я ищу компонент последовательного порта для .NET, который решает проблемы со встроенным компонентом последовательного порта, связанные с внезапным отключением адаптеров USB-RS232 и приостановкой работы компьютера, когда порт открыт.(Необратимые ошибки, возникающие после того, как устройство отключено или компьютер возвращается после приостановки.)

Я использовал Решение Ричарда Гриера , но у меня все еще есть проблемы при возобновлении из режима ожидания.

Есть ли сторонний компонент, который вы бы порекомендовали?Я перепробовал несколько, и у каждого есть свои недостатки.В идеале я хотел бы заменить его на стандартный последовательный порт, но я возьму все, что смогу получить.

(Примечание: я прошу прощения, если вы найдете этот пост немного расплывчатым. Этот вопрос нацелендля тех, кто знаком с моей проблемой ... это очень распространенная проблема.)

Спасибо за ваше время.

Редактировать: Оказывается, что обновление до.NET 4 и использование последовательного класса отлично работает на XP, но не работает на Windows 7.

Ответы [ 2 ]

2 голосов
/ 11 августа 2010

По популярный спрос , это было учтено в .NET 4.0. Есть два критических изменения во внутренних классах SerialStream и EventRunner. Метод SerialStream.Dispose (bool) избегает касания последовательного порта, когда Windows API возвращает ошибку отказа в доступе, указывая, что порт исчез. Это предотвратит сбой метода Dispose () и финализатора.

Метод EventRunner.CallEvents () избегает генерации неуловимого исключения, если попытка очистить ошибку последовательного порта не удалась. Что произойдет, когда эмулятор выдернут из слота во время его использования.


Фундаментальная рекомендация остается прежней, однако, SerialPort предпочтет исключение всякий раз, когда драйвер устройства ведет себя плохо, и не позволяет вашей программе работать без какой-либо диагностики. Драйверы для эмуляторов USB почти не работают при отключении USB-разъема, когда используется последовательный порт. Вы должны использовать значок «Безопасное извлечение устройства» на панели задач. Использование этого значка требуется для любого типа устройства, которое изначально не поддерживает Plug & Play. Как последовательный порт.

1 голос
/ 11 августа 2010

Хотя было бы полезно опубликовать какие решения, которые вы попробовали (нет смысла в том, чтобы кто-то рекомендовал то, что вы уже исключили), я могу порекомендовать компонент CommStudio ,

Несмотря на то, что он немного дорогой, он является отличным компонентом и хорошо работает с несколькими высокопроизводительными (условно говоря, конечно) приложениями с высокой степенью двунаправленности, над которыми я работал, и у них никогда не былопроблема с неожиданным удалением устройства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...