2009-11-20 6 views
0

У меня есть программа, которая использует связь по последовательному порту, чтобы поговорить с каким-то оборудованием. Нет проблем. Затем я добавил два изображения к модулю GSM. В VB я открыл COM-порт модему с одним протоколом (8 данных, ни один, 1), и когда связь между модемами была открыта и запущена, я закрыл порт и снова открыл его новым протоколом (7 данных, даже четность, 2 остановитесь) на моем оборудовании. Аппаратное обеспечение стандартизировано на эту скорость несколько лет назад, поэтому я не могу это изменить, и большинство модемов не поддерживают протокол 7, e, 2.Последовательная связь

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

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

  • Есть ли у кого-нибудь другое представление о том, как это можно сделать без изменения каких-либо настроек оборудования?
  • Сделать виртуальный последовательный порт? (как?)
  • Идеи?
+0

Вопрос не ясно для меня. Вы пытаетесь каким-то образом подключить другое оборудование к тому же порту? – Henrik

+0

Нет! Это одно и то же оборудование. аппаратное соединение - ПК -> Модем -> Модем -> ПЛК. Большинство современных модемов не поддерживают 7 данных, даже четность и 2 стоповых бита. Таким образом, я должен подключиться к модемам с другим протоколом, а затем использовать его для конвертирования в ПЛК. – TAT

ответ

1

Чтобы действительно установить все параметры вашего последовательного соединения, вы должны использовать Win32 API communication functions. Насколько я знаю, вам не нужно закрывать и снова открывать порт, чтобы активировать эти настройки. Работа будет работать сразу после их установки (например, в this example).

Вам просто нужно позаботиться о том, чтобы изменить одну или две настройки, которые вы должны предварительно заполнить своей структурой с помощью соответствующей функции GetX, внести изменения и вызвать функцию SetX.

Возможно, в отличие от предложения раньше, но не полагайтесь на настройки по умолчанию на своем в начале SetX call. Я видел много программ, просто изменяющих популярные настройки (например, скорость передачи, стоп-бит и т. Д.), Но не редкие (например, XoffChar и т. Д.). Если вы просто это сделаете, а другая программа изменит эти настройки, вы начнете задаваться вопросом, почему ваша программа внезапно перестает общаться с вашим последовательным устройством, потому что вы используете настройки, которые другая программа устанавливает в последовательный порт.

И прежде, чем я забуду, если вы хотите использовать функции API Win32 в C# взгляните на PInvoke.net

+0

Спасибо за ваше рвение. Это может помочь! Я посмотрю на него как можно скорее. есть несколько других вещей, чтобы сначала уйти с пути в другом проекте. Но спасибо за вашу помощь !!! :-) – TAT

Смежные вопросы