Добрый день товарищи, подскажите с чего начать - пытаюсь разобраться как работать с COM портом, приём и передача данных - но литературы много и информации с чего лучше копать? В итоге нужно, что бы в программе написанной на Microsoft Visual Studio с++ я мог получать данные с кажем с датчика температуры, и посылал команду при достижении температуры на включение тэна. Это самое простое пока хочется освоить. Я понимаю на avr это просто как два пальца, но хочется освоить именно интеграцию с ПК и пока, что COM т.к USB пока сложновато...
разделите свою задачу на две: 1. подготовка данных с датчика и передача этих данных в формате UART , пребразование в уровни RS232 . 2. прием данных с СОМ порта на ПК и визулизация (или сохранение) данных на компе.
каждая задача может быть отлажена по отдельности. например когда сделали устройство передающее данные на комп по RS232 , эти данные можно принять программками предназначенными для работы с эти портом (я предпочитаю PUTTY). после этого можно переходить в VS для обработки принимаемых данных. вот как то так ?
разделите свою задачу на две: 1. подготовка данных с датчика и передача этих данных в формате UART , пребразование в уровни RS232 . 2. прием данных с СОМ порта на ПК и визулизация (или сохранение) данных на компе.
каждая задача может быть отлажена по отдельности. например когда сделали устройство передающее данные на комп по RS232 , эти данные можно принять программками предназначенными для работы с эти портом (я предпочитаю PUTTY). после этого можно переходить в VS для обработки принимаемых данных. вот как то так ?
ну да тут я согласен. тогда сразу возникают вопросы: 1) можете ткнуть носом на примеры устройств..... 2) непосредственно на программу желательно с исходниками где описывается сам процесс приёма и передачи данных. - скажем зажечь лампочку если пришёл сигнал внешний от выключателя. сохранение и обработка и отображение - это достаточно тривиально простые задачи, уже знаю как можно решить.
pyzhman писал(а):
gdoom писал(а):
...получать данные с кажем с датчика температуры...на avr это просто как два пальца,.
Подключить датчик (тот же температурный) к AVR и уже с него гнать в комп. Ну а в компе делать с ними всё, что заблагорассудится.
Открыта удобная площадка с выгодными ценами, поставляющая весь ассортимент продукции, производимой компанией MEAN WELL – от завоевавших популярность и известных на рынке изделий до новинок. MEAN WELL.Market предоставляет гарантийную и сервисную поддержку, удобный подбор продукции, оперативную доставку по России.
На сайте интернет-магазина посетители смогут найти обзоры, интересные статьи о применении, максимальный объем технических сведений.
Продукция MOSO предназначена в основном для индустриальных приложений, использует инновационные решения на основе более 200 собственных патентов для силовой электроники и соответствует международным стандартам. LED-драйверы MOSO применяются в системах наружного освещения разных отраслей, включая промышленность, сельское хозяйство, транспорт и железную дорогу. В ряде серий реализована возможность дистанционного контроля и программирования работы по заданному сценарию. Разберем решения MOSO
подробнее>>
Самое сложное в этой задаче это получить имя последовательного порта которое можно использовать для открытия файла CreateFile. Многие используют наивный подход, добавляя к базовому имени \\.\COM последовательные индексы. Более продвинутые сканируют ветку реестра HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM. Однако самое правильное, IMHO, это использование функций из группы SetupDi. Найти интерфейс с требуемым GUID (GUID_DEVINTERFACE_COMPORT), получить DEVICE_INTERFACE_DETAIL_DATA и открыть файл. Все остальное совсем просто, правда если чтение-запись делать в одном потоке, надо настроить COMMTIMEOUTS так чтобы операция чтения завершалась по таймауту. Вообще у Microchip'а в примерах есть исходники в которых все эти моменты можно посмотреть. Можно у них скачать MLA.
Зарегистрирован: Чт мар 22, 2012 20:28:49 Сообщений: 82
Рейтинг сообщения:0
Для освоения программной части работы с COM-портом советую воспользоваться следующей связкой программ. Proteus - Программа для моделирования электронных схем с возможностью эмуляции работы микроконтроллеров AVR. VSPE - программа для создания виртуальных COM-портов, к которым можно приконнектиться из любой программы. COM Port Toolkit - программа-терминал для приема/передачи байтов через COM-порт. Пишем программу для МК, создаем необходимую схему в Proteus с использованием элемента COMPIM. В программе VSPE создаем пару виртуальных COM-портов связанных между собой. Далее элемент COMPIM в Proteus соединяем с одним из созданных портов, а COM Port Toolkit со вторым. Отлаживаем программу МК. Потом пишем необходимую программу для компьютера и используем её вместо COM Port Toolkit.
Вот такой общий алгоритм действий. По каждому из этих пунктов могу проконсультировать отдельно, если потребуется. Пиши в личку.
да примеров просто немеряно если полазить гуглом, ну вот несложный пример: http://denialmedia.ca/weather-station/ на первый взгляд чтото очень сложное - но на самам деле всего один чип Atmega32 читает данные с датчика (ов) , и передает по СОМ порту на комп. На компе - обработка и даже то что вы считаете очень простым -сохранение и отображение в приведенном примере есть исходники для прошивки МК , и комповой программы.
Для освоения программной части работы с COM-портом советую воспользоваться следующей связкой программ. Proteus - Программа для моделирования электронных схем с возможностью эмуляции работы микроконтроллеров AVR. VSPE - программа для создания виртуальных COM-портов, к которым можно приконнектиться из любой программы. COM Port Toolkit - программа-терминал для приема/передачи байтов через COM-порт. Пишем программу для МК, создаем необходимую схему в Proteus с использованием элемента COMPIM. В программе VSPE создаем пару виртуальных COM-портов связанных между собой. Далее элемент COMPIM в Proteus соединяем с одним из созданных портов, а COM Port Toolkit со вторым. Отлаживаем программу МК. Потом пишем необходимую программу для компьютера и используем её вместо COM Port Toolkit.
Вот такой общий алгоритм действий. По каждому из этих пунктов могу проконсультировать отдельно, если потребуется. Пиши в личку.
- спасибо! не думал что можно такое замутить с Proteus....
igor-x писал(а):
Цитата:
1) можете ткнуть носом на примеры устройств.....
да примеров просто немеряно если полазить гуглом, ну вот несложный пример: http://denialmedia.ca/weather-station/ на первый взгляд чтото очень сложное - но на самам деле всего один чип Atmega32 читает данные с датчика (ов) , и передает по СОМ порту на комп. На компе - обработка и даже то что вы считаете очень простым -сохранение и отображение в приведенном примере есть исходники для прошивки МК , и комповой программы.
и посылал команду при достижении температуры на включение тэна
Кому и какую команду посылал? PS
Цитата:
хочется освоить именно интеграцию с ПК
С нуля задача трудоемкая и значительно упрощается при использовании мк.
это простой пример - который я взял из головы.... Если расписывать на компе стоит программа где ставим температуру при которой включать тэн и он работает пока температура не поднимется до установленной, датчик тут думать нужно - типа DS.
но вот что то есть живое: http://www.labkit.ru/html/autocontrol?id=136 - но всё упрётся уже в Microsoft Visual Studio С++ - так как исходника нет а было бы здорово посмотреть, что там... . Но остаётся разобраться с работой СОМ глубже как я понял....
я мог получать данные с кажем с датчика температуры
С какого? Например DS18B20? Можете посмотреть журнал Радио №1 2015. Там есть статья о работе с подобными датчиками через COM порт (в т. ч. виртуальный). Компонент приложения используемый в статье. ftp://ftp.radio.ru/pub/2015/01/OWire.zip Его можно подключить к проекту VS и использовать для чтения температуры. Преимущество в том что не нужно знать как работать с COM портом и датчиком. Все это берет на себя компонент. А если все же хочется разобраться как это работает, можно посмотреть исходник компонента - файл OWire_Module.pbi находящийся в папке Library\Src.
gdoom писал(а):
USB пока сложновато...
Ну я бы так не сказал бы. Смотрите журнал Радио №4 2011. Там есть статья о работе с USB HID, а также компонент приложения, который сможете подключить к проекту VS C++.
Последний раз редактировалось Мурик Чт июн 25, 2015 13:55:19, всего редактировалось 2 раз(а).
решил начать пока без МК - и с СОМ так как хочется освоить это в начале..
без мк ком порт "не работает" либо тебе надо будет ставить специальный софт для создания виртуального порта, чтобы соединить твой софт и терминал, который будет показывать тебе работу твоей проги
алгоритм работы с портом такой открыть порт с параметрами скорости, например 9600 (там еще есть опции контроля передачи) отправить байт в порт или принять слушать порт на наличие данных закрыть его, когда закрываеш приложение или по кнопке
слушание порта делается в главном цикле, если софт однопоточный или по таймеру есть еще готовые библиотеки для работы с портами и они могут предоставлять более удобные механизмы взаимодействия с портом
а насчет управления и команд, то ты сам п ридумываеш протокол например контроллер тебе шлет с датчика температуру в виде t 25 ты ищеш в строке подстроку в виде буквы t и понимаеш, что дальше следует число и это интерпретируется как температура
Т. е. если подключить DS18B20 к COM порту - работать не будет? DS это не МК, что уже противоречит высказыванию. Наверное его стоит перефразировать в "без чего-либо, подключенного к порту это бессмысленно, т. к. данные отправляются в никуда и нечего принимать кроме помех".
К ком-порту можно подключать разные датчики напрямую, используя пины DTR/RTS/CTS и "дрыгая" ими из своей программы. Разумеется, надо согласовывать уровни. Получается не совсем по-людски, но работает нормально (во всяком случае, в ВинХП и более старых виндах). Напр, вот схема подключения АЦП MCP3550 :
Т. е. если подключить DS18B20 к COM порту - работать не будет? DS это не МК, что уже противоречит высказыванию. Наверное его стоит перефразировать в "без чего-либо, подключенного к порту это бессмысленно, т. к. данные отправляются в никуда и нечего принимать кроме помех".
С аппаратной частью нам тоже придется "повозиться", в том смысле что она будет сложнее чем с первым устройством для LPT порта. Дело в том что протокол RS-232 по которому идет обмен данными в COM порту, имеет несколько отличное соотношение логическое состояние - напряжение. Если обычно это логический 0 <-> 0 В, логическая 1 <-> +5 В, то в RS-232 это соотношение следующее: логический 0 <-> +12 В, логическая 1 <-> -12 В.
И например, получив -12 В не сразу понятно что с этим напряжением делать. Обычно проводят преобразование уровней RS-232 в ТТЛ (0, 5 В). Самый простой вариант - стабилитроны. Но я предлагаю сделать этот преобразователь на специальной микросхеме. Называется она MAX232.
вот пример - только проблема согласования, дёшево и сердито
ну так и чО сразу лезть в тему с ТАКИМИ советами, если нет своего опыта и твое мнение - чисто умозрительное ?
потому что делал программатор по такому же принципу если он там в старых системах работал, то в новых тайминги не совпадали и нихера не работало
а серийный девайс этот то же гавно древнее, у меня был такой, только там стояла специальная мс - железный адаптер под ком порт и эту шину, стоил дороже намного
а так автор начнет использовать порт в ненормальном режиме, у него нихера не заработает и будет он потом плеваться и материть все подряд
_________________ тематические ответы только в форуме, в приват не пишите
Т.е. конкретно у тебя не заработал программатор ? И это повод говорить, что ком-порт без МК не работает ? Охренеть... Но тот самый MCP3550 у меня работал на XP 24/7 в теч. трех месяцев. А у тысяч людей - таблетки DS1990 в паре с DS9097. Да и о чем спрашивает ТС в своем первом сообщении - о конкретно твоем программаторе или о датчиках вообще ?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения