Как описано в Сигналах Последовательного порта и Назначениях контактов, девятиконтактные последовательные порты включают шесть контактов управления. Функции и свойства, сопоставленные с контактами управления последовательным портом, следующие.
Функция | Цель |
---|---|
getpinstatus | Получите последовательное состояние контакта. |
setRTS | Задайте состояние контакта RTS. |
setDTR | Задайте состояние контакта DTR. |
FlowControl | Задайте метод управления потока данных, чтобы использовать. |
DTEs и DCEs часто используют CD, DSR, RI и контакты DTR, чтобы указать, устанавливается ли связь между устройствами последовательного порта. Если связь устанавливается, можно начать писать или считывать данные.
Можно контролировать состояние CD, DSR и контактов RI с getpinstatus
функция. Можно задать состояние контакта DTR с setDTR
функция.
Следующий пример иллюстрирует, как эти контакты используются, когда два модема соединяются друг с другом.
Этот пример (показанный на машине Windows®) соединяет два модема друг с другом с помощью того же компьютера и иллюстрирует, как можно контролировать коммуникационное состояние для компьютерных модемных соединений, и для соединения модем-модем. Первый модем соединяется с COM1, в то время как второй модем соединяется с COM2.
Свяжите с инструментами — После того, как модемы будут включены, объект последовательного порта s1
создается для первого модема и объекта последовательного порта s2
создается для второго модема. оба модема сконфигурированы для скорости в бодах 9 600 бит в секунду.
s1 = serialport("COM1",9600); s2 = serialport("COM2",9600);
Можно проверить, что модемы (наборы данных) готовы связаться с компьютером путем исследования значения контакта Data Set Ready с помощью 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
функция. Эта команда помещает модем “от рычага” и эквивалентна ручному подъему телефонного приемника.
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
, затем никакое квитирование не используется.
Аппаратное квитирование использует определенные контакты последовательного порта, чтобы управлять потоком данных. В большинстве случаев это РТС и CTS контакты. Аппаратное квитирование с помощью этих контактов описано в РТС и CTS контактах.
Если FlowControl
hardware
, затем РТС и CTS контакты автоматически управляемы DTE и DCE. Можно возвратить значение контакта CTS с getpinstatus
функция. Можно сконфигурировать значение контакта RTS с setRTS
функция.
Примечание
Некоторые устройства также используют DTR и DSR контакты для квитирования. Однако эти контакты обычно используются, чтобы указать, что система готова к коммуникации и не используется, чтобы управлять передачей данных. В MATLAB оборудование, квитирующее всегда, использует РТС и 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");