Форум программистов, компьютерный форум, киберфорум
КИП, датчики
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
458 / 307 / 29
Регистрация: 15.08.2011
Сообщений: 960
1

Как менять скорость передачи через COM порт не меняя сигнал RTS

01.06.2016, 19:51. Просмотров 745. Ответов 5
Метки нет (Все метки)

У меня некоторый девайс связан с компьютером по COM порту. Задействованы не только линии данных RX/TX но и RTS. В процессе работы нужно менять скорость обмена. Я использую стандартный API Windows, SetCommState, который настраивает все параметры порта. Проблема в том что SetCommState еще и меняет выход RTS в ненужное мне состояние.
Вопрос. Есть ли способ поменять скорость не меняя RTS?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.06.2016, 19:51
Ответы с готовыми решениями:

Как изменить скорость передачи данных в порт?
Приветствую, форумчане! Столкнулся с проблемой: gps-модули, заказанные на али приходят с разными...

STM32F103XXXX UART с контролем передачи через RTS и CTS
Добрый день! У меня никак не получается задействовать UART с контролем передачи c помощью ножек...

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

Менять скорость передачи данных TCP/IP из скрипта? (VBS,WSH,BAT, PowerShall)
Hi guys and ladies ) Есть необходимость в написании следующего скрипта, ПО, батника, вообще чего...

5
1279 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,886
01.06.2016, 22:15 2
Интересный вопрос(ответа не знаю). А закрыть/открыть порт не прокатит?
0
458 / 307 / 29
Регистрация: 15.08.2011
Сообщений: 960
01.06.2016, 22:46  [ТС] 3
Ну тогда тем более RTS поменяется как захочет. Ведь при закрытии порта он никак не управляется.
0
152 / 90 / 10
Регистрация: 02.04.2016
Сообщений: 306
04.06.2016, 22:29 4
Лучший ответ Сообщение было отмечено paskal как решение

Решение

...вообще-то порядок следующий:
Код
...
DCB.BaudRate := ...
DCB.Flags := 1 or ($30 and (DTR_CONTROL_ENABLE shl 4))
                   or ($3000 and (RTS_CONTROL_ENABLE shl 12));
...
SetCommState(FHandle, DCB)
Ответ очевиден - задайте нужную вам маску состояния RTS. И потом, схемотехнику выхода-входа следует строить таким образом, чтобы исходное состояние линии по-умолчанию было отсутствием события для вашего устройства.
0
458 / 307 / 29
Регистрация: 15.08.2011
Сообщений: 960
06.06.2016, 22:41  [ТС] 5
Цитата Сообщение от stend Посмотреть сообщение
DCB.Flags
А где бы узнать значение битовых полей этой переменной?
0
152 / 90 / 10
Регистрация: 02.04.2016
Сообщений: 306
07.06.2016, 06:37 6
Код
typedef struct _DCB { // dcb  
   DWORD DCBlength;           // sizeof(DCB)
   DWORD BaudRate;            // current baud rate
 [B]  DWORD fBinary: 1;          // binary mode, no EOF check
   DWORD fParity: 1;          // enable parity checking
   DWORD fOutxCtsFlow:1;      // CTS output flow control
   DWORD fOutxDsrFlow:1;      // DSR output flow control
   DWORD fDtrControl:2;       // DTR flow control type
   DWORD fDsrSensitivity:1;   // DSR sensitivity

   DWORD fTXContinueOnXoff:1; // XOFF continues Tx
   DWORD fOutX: 1;            // XON/XOFF out flow control
   DWORD fInX: 1;             // XON/XOFF in flow control
   DWORD fErrorChar: 1;       // enable error replacement
   DWORD fNull: 1;            // enable null stripping
   DWORD fRtsControl:2;       // RTS flow control
   DWORD fAbortOnError:1;     // abort reads/writes on error
   DWORD fDummy2:17;          // reserved    WORD wReserved;            // not currently used[/B]

   WORD XonLim;               // transmit XON threshold
   WORD XoffLim;              // transmit XOFF threshold
   BYTE ByteSize;             // number of bits/byte, 4-8
   BYTE Parity;               // 0-4=no,odd,even,mark,space
   BYTE StopBits;             // 0,1,2 = 1, 1.5, 2
   char XonChar;              // Tx and Rx XON character
   char XoffChar;             // Tx and Rx XOFF character
   char ErrorChar;            // error replacement character

   char EofChar;              // end of input character
   char EvtChar;              // received event character
   WORD wReserved1;           // reserved; do not use
} DCB;
Добавлено через 32 секунды
Тег выделения в коде не сработал, но вы и сами видите.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.06.2016, 06:37

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

Реализация передачи файлов через com-порт
Здравствуйте, я только недавно начал изучать с#, мой скил соу лоу, так что для того чтобы сделать...

Протокол передачи данных через последовательный порт
Ребят, всем добрый вечер! Предстоит следующая задача: нужно реализовать, например - в отдельном...

COM порт - управление линией RTS
Добрый день! Есть такая задача - передать данные в порт и сразу за последним байтом поднять линию...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.