Полная версия этой страницы:
MATLAB + UART
-=Vitaly=-
Nov 3 2006, 17:33
Имеется схема FPGA + встроенный проц+ контроллер RS-232, могу ли я отправлять данные прямо в МАТЛАБ через ком порт,для последуюущей обработки и верификации??
И вообще может ли МАТЛАБ работать с ком-портом под 2000 виндой???
Спасибо!!
матлаб может работать с сом-портом (по крайней мере семёрка точно)
читайте хелп - он там весьма хорош и подробен
наводка: поиск по "RS-232"
ЗЫЖ еще и примеры можно надыбать на сайте производителя
Как раз доступ к COM-портам из под разных версий Windows осуществляется единообразно, т.к. реализован не "напрямую", а через драйвер. Об этом беспокоиться не стоит.
Из "родных" инструментов Simulink с COM-портом умеет общаться
Instrument Control Toolbox. А из сторонних -
RS232Blockset http://digilander.libero.it/LeoDaga/Simuli...232Blockset.htm .
кстати о птичках, т.е. о Instrument Control Toolbox: он поддерживает сокеты (TCP/IP and UDP). тут где-то аналогичная тема пробегала, но там про UDP вопрос был, использование которого, думается мне, весьма эффективное решение при отладке проекта на ПЛИС - особенно если большие потоки гонять приходится.
-=Vitaly=-
Nov 4 2006, 10:28
[quote name='Andy_F' date='Nov 4 2006, 00:45' post='172297']
Как раз доступ к COM-портам из под разных версий Windows осуществляется единообразно, т.к. реализован не "напрямую", а через драйвер. Об этом беспокоиться не стоит.
Помоему как раз наоборот, например дебаггер через ком под 98 работает нормально а под 2000 глючит по страшному. Может от того что он сильно древний???
В матлабе есть инструмент, позволяющий подключать пользовательское приложение к ядру матлаба.
Например, можно описать функцию доступа к порту в длл модуле и из матлаба вызывать ее как обычную внутреннюю функцию. Как эта опция называется не помню в хелпе все подробно описано.
Открываем порт
s2 = serial('COM1','BaudRate',19200,'DataBits',8);
set(s2,'FlowControl','hardware');
set(s2,'InputBufferSize',8192);
fopen(s2);
Пишем
fprintf(s2,'ID?')
Читаем
fscanf(s2)
или:
v = fread(s2,2500,'uint8');
Не забываем закрывать
fclose(s2)
delete(s2)
clear s2
Пока пишешь и читаешь последовательно, все нормально
Но если нужно делать запись и чтение независимо,
то у меня появились трудности.
По крайней мере на VB это получается значительно легче
2-=Vitaly=-
ИМХО удобнее писать в порт через fwrite а fopen делать с использованием try...
lolikandr
Jan 19 2007, 17:14
Пытался делать fopen и тд. Очень часто не мог закрыть дескриптор после ошибок и вываливания из матлаб скрипта. Приходилось часто перезагружать матлаб. Решилось проще, когда написал простенький пересыльщик в виде exe на Delphi. А в скриптах матлаба запускал уже его при помощи dos().
jorikdima
Jan 20 2007, 00:16
Цитата(lolikandr @ Jan 19 2007, 17:14)

Пытался делать fopen и тд. Очень часто не мог закрыть дескриптор после ошибок и вываливания из матлаб скрипта. Приходилось часто перезагружать матлаб.
есть такой момент. когда с файлами работаешь тоже самое
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.