Проблема с ком-портом в приложении C # на ноутбуке - PullRequest
3 голосов
/ 13 августа 2010

Я использую Visual Studio 2008 и разрабатываю приложение Windows Forms на C # с использованием .net 3.5

.

Я выполняю последовательную связь и нажимаю на кнопку приложения, получая список всех доступных коммуникационных портов. Затем я сканирую нужное устройство, открывая каждый порт по очереди, отправляя свою команду запроса на рукопожатие и ожидая ответа в течение некоторого количества секунд.

Все это прекрасно работает на моем ПК (и на других 8 ПК, на которых я его тестировал), но когда я запускаю программу на ноутбуке, моя программа, кажется, видит все коммуникационные порты и отправляет запрос, но мое устройство никогда не получает Это. Я попытался использовать аппаратный коммуникационный порт и конвертеры usb-to-serial. Я также протестировал его на нескольких ноутбуках разных производителей. Все они ведут себя одинаково.

Кто-нибудь сталкивался с подобными проблемами?

ОБНОВЛЕНИЕ 1

Кажется, что ноутбуки могут получать данные с устройства, но по-прежнему не могут передавать данные. И, конечно, никаких проблем с рабочими столами.

ОБНОВЛЕНИЕ 2

Ноутбук может принимать и передавать данные. Поэтому это сводит проблему к моему программному обеспечению C #, которое может осуществлять последовательную связь на рабочем столе, но не может делать то же самое на ноутбуке.

ОБНОВЛЕНИЕ 3

Решил. Проблема была вызвана встроенными модемами моих тестовых ноутбуков. COM-порт, зарезервированный модемом (обычно COM3), не отображается в диспетчере устройств, но его можно увидеть в регестре Windows. Поэтому всякий раз, когда мой объект последовательного порта запрашивал список com-портов, он получал порт модема, и эти модемы подавляли мои запросы на квитирование во время сканирования порта. Как обычно все глупо и просто.

1 Ответ

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

Похоже, ваше устройство требовательно к уровням напряжения.RS-232 плохо справляется с этим, позволяя где-то между +/- 5 В и +/- 28 В.Большинство устройств наиболее счастливы с +/- 12 В, стандартным напряжением, доступным в настольных компьютерах.Ноутбуки, однако, всегда на низком уровне, +/- 5 В тип.Вы ничего не можете с этим поделать.

Чтобы проверить эту теорию, исключите вероятность того, что это вызвано вашим кодом, и убедитесь, что она работает с нуль-модемом.Подключите TxD к RxD, чтобы получить то, что отправляете.Тогда используйте Гипертерминал или Замазку.Если последний также не видит устройство, то это аппаратная проблема.

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