Как описано в Signals Serial Port и Назначения Контактов, девятиконтактные последовательные порты включают шесть контактов управления. Функции и свойства, сопоставленные с последовательными контактами управления портами, следующие.
Функция | Цель |
---|---|
getpinstatus | Получите статус последовательного контакта. |
setRTS | Укажите состояние контакта RTS. |
setDTR | Укажите состояние контакта DTR. |
FlowControl | Задайте метод управления потоком данных, который будет использоваться. |
DTE и DCE часто используют контакты CD, DSR, RI и DTR, чтобы указать, установлено ли соединение между устройствами последовательного порта. После установления соединения можно начать запись или чтение данных.
Можно контролировать состояние контактов CD, DSR и RI с помощью getpinstatus
функция. Можно задать состояние контакта DTR с помощью setDTR
функция.
Следующий пример иллюстрирует, как эти контакты используются, когда два модема соединены друг с другом.
Этот пример (показан в Windows® машина) соединяет два модема друг с другом через один компьютер и иллюстрирует, как можно контролировать состояние связи для соединений компьютер-модем и для соединения модем-модем. Первый модем соединяется с COM1, второй модем соединяется с COM2.
Подключитесь к инструментам - После включения модемов объект последовательного порта s1
создается для первого модема и объекта последовательного порта s2
создается для второго модема. оба модема сконфигурированы для скорости передачи данных 9600 бит в секунду.
s1 = serialport("COM1",9600); s2 = serialport("COM2",9600);
Можно проверить, что модемы (наборы данных) готовы к общению с компьютером, исследуя значение Сигнала готовности данных контакта с помощью getpinstatus
функция.
getpinstatus(s)
ans = struct with fields: ClearToSend: 1 DataSetReady: 1 CarrierDetect: 0 RingIndicator: 0
Значение DataSetReady
поле 1
, или true
, поскольку оба модема были включены до подключения к объектам.
Сконфигурируйте свойства - Оба модема сконфигурированы для терминатора строки возврата каретки (CR) с помощью configureTerminator
функция.
configureTerminator(s1,"CR") configureTerminator(s2,"CR")
Запись и чтение данных - Запись atd
команду первому модему, используя writeline
функция. Эта команда устанавливает модем «off the hook», и эквивалентна ручному подъему телефонного приемника.
writeline(s1,'atd')
Напишите ata
команду второму модему с помощью writeline
функция. Эта команда переводит модем в «режим ответа», что заставляет его подключиться к первому модему.
writeline(s2,'ata')
После того, как эти два модема договариваются об их соединении, можно проверить состояние соединения, исследуя значение контакта обнаружения несущей с помощью getpinstatus
функция.
getpinstatus(s)
ans = struct with fields: ClearToSend: 1 DataSetReady: 1 CarrierDetect: 1 RingIndicator: 0
Можно также проверить соединение модем-модем, прочитав описательное сообщение, возвращенное вторым модемом.
s2.NumBytesAvailable
ans = 25
out = read(s2,25,"uint32")
out = ata CONNECT 2400/NONE
Теперь разорвите соединение между двумя модемами при помощи setDTR
функция. Можно проверить, что модемы отключены, исследуя значение контакта обнаружения несущей с помощью getpinstatus
функция.
setDTR(s1,false) getpinstatus(s1)
ans = struct with fields: ClearToSend: 1 DataSetReady: 1 CarrierDetect: 0 RingIndicator: 0
Отключить и очистить - Очистить объекты от MATLAB® рабочей области, когда вы сделаны.
clear s1 s2
Управление потоком данных или квитирование является методом, используемым для связи между DCE и DTE, чтобы предотвратить потерю данных во время передачи. Например, предположим, что компьютер может получить только ограниченный объем данных до того, как он будет обработан. Когда этот предел достигается, сигнал квитирования передается в DCE, чтобы остановить передачу данных. Когда компьютер может принять больше данных, другой сигнал квитирования передается в DCE, чтобы возобновить отправку данных.
Если это поддерживается вашим устройством, вы можете управлять потоком данных одним из следующих методов:
Примечание
Несмотря на то, что устройство может быть сконфигурировано для одновременно оборудования и квитирования ПО, MATLAB не поддерживает это поведение.
Можно задать метод управления потоком данных с помощью FlowControl
свойство. Если FlowControl
является hardware
, затем аппаратное квитирование используется для управления потоком данных. Если FlowControl
является software
затем для управления потоком данных используется программное квитирование. Если FlowControl
является none
, тогда никакое рукопожатие не используется.
Аппаратное квитирование использует определенные контакты последовательного порта для управления потоком данных. В большинстве случаев это контакты RTS и CTS. Аппаратное квитирование с использованием этих контактов описано в контактах RTS и CTS.
Если FlowControl
является hardware
, затем контакты RTS и CTS автоматически управляются DTE и DCE. Вы можете вернуть значение контакта CTS с getpinstatus
функция. Вы можете сконфигурировать значение контакта RTS с помощью setRTS
функция.
Примечание
Некоторые устройства также используют контакты DTR и DSR для квитирования. Однако эти контакты обычно используются для указания того, что система готова к передаче данных, и не используются для управления передачей данных. В MATLAB аппаратное квитирование всегда использует контакты RTS и CTS.
Если ваше устройство не использует аппаратное квитирование стандартным способом, то может потребоваться вручную сконфигурировать контакт RTS с помощью setRTS
функция. В этом случае настройте FlowControl
на none
. Если FlowControl
является hardware
, тогда заданное значение RTS может быть не оценено. Обратитесь к документации устройства, чтобы определить его конкретный контакт поведение.
Для программного квитирования ПО используются специальные символы ASCII. В следующей таблице описываются эти символы, известные как Xon и Xoff (или XON и XOFF).
Программные квитирования
Символ | Целое Значение | Описание |
---|---|---|
Xon | 17 | Возобновите передачу данных. |
Xoff | 19 | Пауза передачи данных. |
Когда вы используете программное квитирование, управляющие символы передаются по линия электропередачи так же, как и обычные данные. Поэтому вам нужны только контакты TD, RD и GND.
Главный недостаток программного квитирования заключается в том, что вы не можете записать символы Xon или Xoff, в то время как числовые данные записываются в инструмент. Это связано с тем, что числовые данные могут содержать 17 или 19, что делает невозможным различение управляющих символов и данных. Однако можно записать Xon или Xoff, когда данные асинхронно считываются с прибора, поскольку вы используете контакты TD и RD.
Использование Программного квитирования. Предположим, что вы хотите использовать управление потоком программного обеспечения в сочетании с вашим приложением последовательного порта. Для этого необходимо сконфигурировать инструмент и объект последовательного порта для управления потоком программного обеспечения. Для объекта последовательного порта s
соединяется с Tektronix® Осциллограф TDS 210, это строение выполняется следующими командами.
writeline(s,"RS232:SOFTF ON") s.FlowControl = "software";
Чтобы приостановить передачу данных, вы записываете числовое значение 19
(Xoff) к прибору.
write(s,19,"uint32");
Чтобы возобновить передачу данных, вы записываете числовое значение 17
(Xon) к прибору.
write(s,17,"uint32");