Последовательная передача является низкоуровневым протоколом для передачи между двумя или больше устройствами. Обычно, одно устройство является компьютером, и другое устройство может быть другим компьютером или a:
модем
принтер
научный прибор, такой как осциллограф или функциональный преобразователь
Последовательный порт отправляет и получает байты информации последовательным способом — 1 бит за один раз. Эти байты передаются с помощью или двоичного формата или текста (ASCII) формат.
Для многих приложений последовательного порта можно связаться с инструментом без детального знания того, как последовательный порт работает. Коммуникация устанавливается через объект последовательного порта, который вы создаете в рабочей области MATLAB®.
Интерфейс последовательного порта поддерживается на этих платформах:
Linux® 64-bit
macOS 64-bit
Microsoft® Windows® 64-bit
Интерфейс последовательного порта поддерживается на тех же платформах как MATLAB. Для обновлений списка в настоящее время поддерживаемых платформ см. https://www.mathworks.com/support/sysreq/current_release/.
Используйте стандарт интерфейса RS-232 с коммуникацией последовательного порта. За эти годы несколько стандартов последовательного порта для соединения компьютеров к периферийным устройствам были разработаны. Эти стандарты включают RS-232, RS-422 и RS-485 — все из которых поддерживаются объектом последовательного порта. Из них наиболее широко используемый стандарт является RS-232, который обозначает Рекомендуемый стандарт номер 232.
В этом руководстве это принято, вы используете стандарт RS-232.
Необходимо соединить эти два устройства последовательным кабелем. Для получения дополнительной информации смотрите Соединяющий Двух Устройств Последовательным кабелем.
Последовательные порты состоят из двух типов сигнала: сигналы данных и управляющие сигналы. Чтобы поддержать эти типы сигнала, а также сигнальную землю, стандарт RS-232 задает 25-контактную связь. Однако большинство PC и платформ UNIX® используют 9-контактную связь. На самом деле только три контакта требуются для коммуникаций последовательного порта: один для получения данных, один для передачи данных, и один для сигнальной земли. Для получения дополнительной информации смотрите Сигналы Последовательного порта и Назначения контактов.
Убедитесь, что у вас есть правильный инструментальный драйвер, установленный для вашего устройства. Обратитесь к своей документации устройства и веб-сайту поставщика.
Убедитесь, что ваше устройство поддерживается в Instrument Control Toolbox™. Смотрите, что Мое Оборудование Поддержано?.
Убедитесь, что Instrument Control Toolbox распознает ваши последовательные порты, при помощи функции instrhwinfo
с именем интерфейса serial
. Например:
instrhwinfo('serial')
ans = HardwareInfo with properties: AvailableSerialPorts: {'COM1'} JarFileVersion: 'Version 3.7' ObjectConstructorName: {'serial('COM1');'} SerialPorts: {'COM1'}
Если бы ваш компьютер имеет больше чем один последовательный порт, ваш вывод выглядел бы так:
info = instrhwinfo('serial')
info = HardwareInfo with properties: AvailableSerialPorts: {2x1 cell} JarFileVersion: 'Version 3.7' ObjectConstructorName: {2x1 cell} SerialPorts: {2x1 cell}
В этом примере вывод перечислил два порта. Перечислите доступные последовательные порты:
info.AvailableSerialPorts
ans = 'COM1' 'COM2'
Можно также использовать диспетчер устройств Windows, чтобы видеть список доступных последовательных портов.
Убедитесь, что можно создать объект последовательного порта. Необходимо обеспечить один аргумент, чтобы создать объект, имя доступного порта. Например, создайте последовательный объект под названием s
с помощью порта COM1
.
s = serial('COM1');
Если вы не получаете ошибку, объект был создан успешно.
Убедитесь, что можно соединиться с устройством, с помощью функции fopen
с именем объекта.
fopen(s);
Если вы не получаете ошибку, связь была установлена успешно. Если вы действительно получаете ошибку, выполняете шаги в сообщении об ошибке и/или проверяете предыдущие шаги, перечисленные здесь.
Когда вы соединились, можно связаться с устройством. Если у вас есть проблемы при отправке или получении, вы, возможно, должны сконфигурировать коммуникационные настройки, такие как BaudRate
, DataBits
, Parity
, StopBits
или Terminator
. Убедитесь, что вы конфигурируете эти коммуникационные параметры, чтобы совпадать с теми из подключенного устройства.
Смотрите Запись и Чтение текстовых Данных и Запись и Чтение Двоичных Данных для коммуникационных примеров.
Проверьте порт
Проверьте, что последовательный порт (COM) перечислен в Панели управления Windows Control Panel> Диспетчер устройств> Порты.
Отправка и получение
Если у вас есть проблемы при отправке или получении, вы, возможно, должны сконфигурировать коммуникационные настройки, такие как BaudRate
, DataBits
, Parity
, StopBits
или Terminator
. Убедитесь, что вы конфигурируете эти коммуникационные параметры, чтобы совпадать с теми из подключенного устройства.
Буферные настройки
Если у вас есть проблемы при отправке или получении, вы, возможно, должны сконфигурировать буферные настройки.
Свойство ReadAsyncMode
должно всегда устанавливаться в continuous
. Используя manual
обычно приводит к потере данных.
InputBufferSize
должен быть установлен в больший, чем самый большой фрагмент данных, которые получит тулбокс. Если это будет слишком маленьким, данные будут пропущены. Для непрерывных потоков попытайтесь использовать больший buffer size. Буфер должен быть достаточно большим, чтобы содержать по крайней мере одну секунду данных. Буфер должен также быть, по крайней мере, дважды размером чтения (количество байтов, считанных fread
/fscanf
).
ВИЗА
Для последовательной передачи можно также использовать VISA с именем ресурса VISA, столь же заданным в утилите поставщика VISA, такой как Эксперт по Связи Keysight.
Стороннее программное обеспечение
Для поиска и устранения неисправностей коммуникации последовательного порта можно также использовать стороннее программное обеспечение последовательной передачи, такое как PuTTY или Термин Tera, чтобы изолировать проблему.
Неправильные данные
При выполнении связи двоичных данных с fread
и fwrite
, убедитесь правильный тип данных – например, int16
, uint16
, double
– используются с fread
и fwrite
. Необходимо использовать совпадающий тип данных в качестве инструментального использования.
При чтении и записывании данные типы кроме uint8
или int8
, убедитесь, что ByteOrder
правилен.