Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: COM-порт, MATLAB и GPM-8212
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Вопросы системного уровня проектирования
dmitriy37
Здравствуйте!
Проблема у меня такая. Студент (я) второго курса взял научную работу по электротехнике.
Суть работы - считывать данные с прибора GMP-8212 через COM-порт и отображать все измерения в программе на MATLAB'е.
Матлаб я знаю плохо, да и технологию RS-232, поэтому возникли проблемы.

Я создаю сериальный объект:
s=serial('COM1');
set(s,'BaudRate', 9600);
set(s,'DataBits', 8);
set(s,'StopBit',1);
set(s,'Parity','none');
set(s,'FlowControl','none');
set(s,'InputBufferSize',2048);
set(s,'ByteOrder','bigEndian');
set(s,'ReadAsyncMode','continuous');
fopen(s);

Код считывания и записи такой:
string='V00';
fwrite(s,string);
byteString=fread(s,2048);

V00 - это, якобы, код, который я должен передавать прибору.
В результате программы в byteString записывается массив из трех чисел, причем этот массив всегда один и тот же.
Запускал много раз, менял код, и ничего. Одни и теже цифры. Никаких измерений нет...

Скажите, пожалуйста, что я делаю не так? Может быть все намного сложнее, чем мне кажется?
uriy
Почитал хелп, нашел примеры. Там использованы функции printf и scanf. Замкнул вторую и третью линию порта, как и положено получил эхо. При разомкнутых линиях вылазила какая-то ошибка. Matlab 2008b
>> fclose(s);
>> s=serial('COM4');
>> clear
>> s=serial('COM4');
>> fopen(s);
>> fprintf(s, 'hello world');
>> idn = fscanf(s);
>> idn

idn =

hello world
dmitriy37
Цитата(uriy @ Dec 8 2008, 19:19) *
Почитал хелп, нашел примеры. Там использованы функции printf и scanf. Замкнул вторую и третью линию порта, как и положено получил эхо. При разомкнутых линиях вылазила какая-то ошибка. Matlab 2008b
>> fclose(s);
>> s=serial('COM4');
>> clear
>> s=serial('COM4');
>> fopen(s);
>> fprintf(s, 'hello world');
>> idn = fscanf(s);
>> idn

idn =

hello world

Не совсем понимаю что значит "замкнул вторую и третью линию порта".
У меня нет возможности работать с прибором дома, поэтому я попробовал поработать с com-портом через старый модем. В результате, когда передавал какую-либо строчку через ком-порт, а потом считывал, то считывал, собственно, эту же строчку, как и в приведенном выше примере.
Но с прибором даже этого не происходит.
uriy
Для начала вам видимо нужно изучить что такое COM-порт. Не трудно посчитать что там 9 контактов. Если еще внимательней приглядеться, то на пластиковой части разъема, откуда торчат штырьки можно разглядеть цифры от 1 до 9. Это собственно и есть номер контатка. Правда иногда этих цифр на разъеме не бывает, но это редко. Если смотреть на разъем со стороны компьютера то 3 это линия TX, 2 это линия RX. Вроде не перепутал, но может быть наоборот. Так вот если эти линии замкнуть то, переданные данные должны вернуться обратно. Так? Это называется эхо. Кроме линий TX и RX возможно ваш прибор еще требует работу с CTS и RTS. Для полноценной отладки достаточно иметь два COM-порта на одном компе.
dmitriy37
Цитата(uriy @ Dec 9 2008, 07:53) *
Для начала вам видимо нужно изучить что такое COM-порт. Не трудно посчитать что там 9 контактов. Если еще внимательней приглядеться, то на пластиковой части разъема, откуда торчат штырьки можно разглядеть цифры от 1 до 9. Это собственно и есть номер контатка. Правда иногда этих цифр на разъеме не бывает, но это редко. Если смотреть на разъем со стороны компьютера то 3 это линия TX, 2 это линия RX. Вроде не перепутал, но может быть наоборот. Так вот если эти линии замкнуть то, переданные данные должны вернуться обратно. Так? Это называется эхо. Кроме линий TX и RX возможно ваш прибор еще требует работу с CTS и RTS. Для полноценной отладки достаточно иметь два COM-порта на одном компе.

Их замыкать надо физически или с помощью какого-то кода? unsure.gif
Писал программу с помощью вот этой статьи: soft.mail.ru/journal/pdfversions/9141130.pdf
Так вот там ни слова про эти замыкания...
Что же делать?
uriy
Читать хелп от матлаба. Он там замечательный. И самое главное изучить как работает COM-порт.
dmitriy37
Цитата(uriy @ Dec 9 2008, 20:51) *
Читать хелп от матлаба. Он там замечательный. И самое главное изучить как работает COM-порт.

Да, открыл хелп сегодня, и увидел, что там, действительно, все очень подробно и понятно написано. Вот только проблема в том, что с английским плоховато. =). Так что не совсем понятно. =). Но буду разбираться, куда ж деваться. Спасибо большое, за помощь!

Хотя, все таки, раз все не так просто, как казалось, почему же в руководстве к данному прибору на языке BASIC написано всего лишь 10 коротких строчек кода чтения и записи через COM-порт......
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.