Форум РадиоКот https://radiokot.ru/forum/ |
|
Работа с COM портом https://radiokot.ru/forum/viewtopic.php?f=24&t=118371 |
Страница 1 из 3 |
Автор: | gdoom [ Чт июн 25, 2015 07:02:20 ] |
Заголовок сообщения: | Работа с COM портом |
Добрый день товарищи, подскажите с чего начать - пытаюсь разобраться как работать с COM портом, приём и передача данных - но литературы много и информации с чего лучше копать? В итоге нужно, что бы в программе написанной на Microsoft Visual Studio с++ я мог получать данные с кажем с датчика температуры, и посылал команду при достижении температуры на включение тэна. Это самое простое пока хочется освоить. ![]() |
Автор: | igor-x [ Чт июн 25, 2015 09:04:08 ] |
Заголовок сообщения: | Re: Работа с COM портом |
разделите свою задачу на две: 1. подготовка данных с датчика и передача этих данных в формате UART , пребразование в уровни RS232 . 2. прием данных с СОМ порта на ПК и визулизация (или сохранение) данных на компе. каждая задача может быть отлажена по отдельности. например когда сделали устройство передающее данные на комп по RS232 , эти данные можно принять программками предназначенными для работы с эти портом (я предпочитаю PUTTY). после этого можно переходить в VS для обработки принимаемых данных. вот как то так ? |
Автор: | pyzhman [ Чт июн 25, 2015 09:38:57 ] |
Заголовок сообщения: | Re: Работа с COM портом |
gdoom писал(а): ...получать данные с кажем с датчика температуры...на avr это просто как два пальца,. Подключить датчик (тот же температурный) к AVR и уже с него гнать в комп. Ну а в компе делать с ними всё, что заблагорассудится. |
Автор: | gdoom [ Чт июн 25, 2015 11:34:09 ] |
Заголовок сообщения: | Re: Работа с COM портом |
igor-x писал(а): разделите свою задачу на две: 1. подготовка данных с датчика и передача этих данных в формате UART , пребразование в уровни RS232 . 2. прием данных с СОМ порта на ПК и визулизация (или сохранение) данных на компе. каждая задача может быть отлажена по отдельности. например когда сделали устройство передающее данные на комп по RS232 , эти данные можно принять программками предназначенными для работы с эти портом (я предпочитаю PUTTY). после этого можно переходить в VS для обработки принимаемых данных. вот как то так ? ну да тут я согласен. тогда сразу возникают вопросы: 1) можете ткнуть носом на примеры устройств..... 2) непосредственно на программу желательно с исходниками где описывается сам процесс приёма и передачи данных. - скажем зажечь лампочку если пришёл сигнал внешний от выключателя. сохранение и обработка и отображение - это достаточно тривиально простые задачи, уже знаю как можно решить. pyzhman писал(а): gdoom писал(а): ...получать данные с кажем с датчика температуры...на avr это просто как два пальца,. Подключить датчик (тот же температурный) к AVR и уже с него гнать в комп. Ну а в компе делать с ними всё, что заблагорассудится. такой вариант пока не хочется рассматривать. |
Автор: | Vano79 [ Чт июн 25, 2015 11:41:12 ] |
Заголовок сообщения: | Re: Работа с COM портом |
gdoom писал(а): с датчика температуры Что за датчик? gdoom писал(а): и посылал команду при достижении температуры на включение тэна Кому и какую команду посылал?PS Цитата: хочется освоить именно интеграцию с ПК С нуля задача трудоемкая и значительно упрощается при использовании мк.
|
Автор: | BorisSPB [ Чт июн 25, 2015 12:29:55 ] |
Заголовок сообщения: | Re: Работа с COM портом |
Самое сложное в этой задаче это получить имя последовательного порта которое можно использовать для открытия файла CreateFile. Многие используют наивный подход, добавляя к базовому имени \\.\COM последовательные индексы. Более продвинутые сканируют ветку реестра HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM. Однако самое правильное, IMHO, это использование функций из группы SetupDi. Найти интерфейс с требуемым GUID (GUID_DEVINTERFACE_COMPORT), получить DEVICE_INTERFACE_DETAIL_DATA и открыть файл. Все остальное совсем просто, правда если чтение-запись делать в одном потоке, надо настроить COMMTIMEOUTS так чтобы операция чтения завершалась по таймауту. Вообще у Microchip'а в примерах есть исходники в которых все эти моменты можно посмотреть. Можно у них скачать MLA. |
Автор: | ddimochka [ Чт июн 25, 2015 12:47:24 ] |
Заголовок сообщения: | Re: Работа с COM портом |
Для освоения программной части работы с COM-портом советую воспользоваться следующей связкой программ. Proteus - Программа для моделирования электронных схем с возможностью эмуляции работы микроконтроллеров AVR. VSPE - программа для создания виртуальных COM-портов, к которым можно приконнектиться из любой программы. COM Port Toolkit - программа-терминал для приема/передачи байтов через COM-порт. Пишем программу для МК, создаем необходимую схему в Proteus с использованием элемента COMPIM. В программе VSPE создаем пару виртуальных COM-портов связанных между собой. Далее элемент COMPIM в Proteus соединяем с одним из созданных портов, а COM Port Toolkit со вторым. Отлаживаем программу МК. Потом пишем необходимую программу для компьютера и используем её вместо COM Port Toolkit. Вот такой общий алгоритм действий. По каждому из этих пунктов могу проконсультировать отдельно, если потребуется. Пиши в личку. |
Автор: | igor-x [ Чт июн 25, 2015 12:56:54 ] |
Заголовок сообщения: | Re: Работа с COM портом |
Цитата: 1) можете ткнуть носом на примеры устройств..... да примеров просто немеряно если полазить гуглом, ну вот несложный пример: http://denialmedia.ca/weather-station/ на первый взгляд чтото очень сложное - но на самам деле всего один чип Atmega32 читает данные с датчика (ов) , и передает по СОМ порту на комп. На компе - обработка и даже то что вы считаете очень простым -сохранение и отображение ![]() в приведенном примере есть исходники для прошивки МК , и комповой программы. |
Автор: | gdoom [ Чт июн 25, 2015 13:26:16 ] |
Заголовок сообщения: | Re: Работа с COM портом |
ddimochka писал(а): Для освоения программной части работы с COM-портом советую воспользоваться следующей связкой программ. Proteus - Программа для моделирования электронных схем с возможностью эмуляции работы микроконтроллеров AVR. VSPE - программа для создания виртуальных COM-портов, к которым можно приконнектиться из любой программы. COM Port Toolkit - программа-терминал для приема/передачи байтов через COM-порт. Пишем программу для МК, создаем необходимую схему в Proteus с использованием элемента COMPIM. В программе VSPE создаем пару виртуальных COM-портов связанных между собой. Далее элемент COMPIM в Proteus соединяем с одним из созданных портов, а COM Port Toolkit со вторым. Отлаживаем программу МК. Потом пишем необходимую программу для компьютера и используем её вместо COM Port Toolkit. Вот такой общий алгоритм действий. По каждому из этих пунктов могу проконсультировать отдельно, если потребуется. Пиши в личку. - спасибо! ![]() igor-x писал(а): Цитата: 1) можете ткнуть носом на примеры устройств..... да примеров просто немеряно если полазить гуглом, ну вот несложный пример: http://denialmedia.ca/weather-station/ на первый взгляд чтото очень сложное - но на самам деле всего один чип Atmega32 читает данные с датчика (ов) , и передает по СОМ порту на комп. На компе - обработка и даже то что вы считаете очень простым -сохранение и отображение ![]() в приведенном примере есть исходники для прошивки МК , и комповой программы. С МК не хочу связыватсья, так как потом будет мк участвовать в этом: http://kibermaster.net/upravlenie-elektricheskimi-tsepyami-che/ решил начать пока без МК - и с СОМ так как хочется освоить это в начале.... Vano79 писал(а): gdoom писал(а): с датчика температуры Что за датчик? gdoom писал(а): и посылал команду при достижении температуры на включение тэна Кому и какую команду посылал?PS Цитата: хочется освоить именно интеграцию с ПК С нуля задача трудоемкая и значительно упрощается при использовании мк.это простой пример - который я взял из головы.... Если расписывать на компе стоит программа где ставим температуру при которой включать тэн и он работает пока температура не поднимется до установленной, датчик тут думать нужно - типа DS. |
Автор: | gdoom [ Чт июн 25, 2015 13:30:44 ] |
Заголовок сообщения: | Re: Работа с COM портом |
НУ пока накопал вот интересный материал - отсюда уже можно, что то сделать: http://www.kernelchip.ru/pcports/PS054.php - но мне не понравилось но вот что то есть живое: http://www.labkit.ru/html/autocontrol?id=136 - но всё упрётся уже в Microsoft Visual Studio С++ - так как исходника нет ![]() |
Автор: | Мурик [ Чт июн 25, 2015 13:45:22 ] |
Заголовок сообщения: | Re: Работа с COM портом |
gdoom писал(а): я мог получать данные с кажем с датчика температуры С какого? Например 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++.
|
Автор: | Vano79 [ Чт июн 25, 2015 13:54:12 ] |
Заголовок сообщения: | Re: Работа с COM портом |
gdoom писал(а): остаётся разобраться с работой СОМ глубже как я понял.... поэтому и говорю - процесс трудоемкий, если с нуля. Если только компорт начните с Цитата: Агуров П. "Последовательные интерфейсы ПК. Практика программирования". Гугл в помощь, исходников на VC++ море.
|
Автор: | kalobyte [ Чт июн 25, 2015 19:18:13 ] |
Заголовок сообщения: | Re: Работа с COM портом |
gdoom писал(а): решил начать пока без МК - и с СОМ так как хочется освоить это в начале.. без мк ком порт "не работает" либо тебе надо будет ставить специальный софт для создания виртуального порта, чтобы соединить твой софт и терминал, который будет показывать тебе работу твоей проги алгоритм работы с портом такой открыть порт с параметрами скорости, например 9600 (там еще есть опции контроля передачи) отправить байт в порт или принять слушать порт на наличие данных закрыть его, когда закрываеш приложение или по кнопке слушание порта делается в главном цикле, если софт однопоточный или по таймеру есть еще готовые библиотеки для работы с портами и они могут предоставлять более удобные механизмы взаимодействия с портом а насчет управления и команд, то ты сам п ридумываеш протокол например контроллер тебе шлет с датчика температуру в виде t 25 ты ищеш в строке подстроку в виде буквы t и понимаеш, что дальше следует число и это интерпретируется как температура на стороне контроллера примерно так же вот пример http://sheepdogguides.com/dt4t.htm |
Автор: | Мурик [ Чт июн 25, 2015 21:42:54 ] |
Заголовок сообщения: | Re: Работа с COM портом |
kalobyte писал(а): без мк ком порт "не работает" Т. е. если подключить DS18B20 к COM порту - работать не будет? ![]() DS это не МК, что уже противоречит высказыванию. Наверное его стоит перефразировать в "без чего-либо, подключенного к порту это бессмысленно, т. к. данные отправляются в никуда и нечего принимать кроме помех". ![]() |
Автор: | gdoom [ Пт июн 26, 2015 05:07:34 ] |
Заголовок сообщения: | Re: Работа с COM портом |
Мурик писал(а): kalobyte писал(а): без мк ком порт "не работает" Т. е. если подключить DS18B20 к COM порту - работать не будет? ![]() DS это не МК, что уже противоречит высказыванию. Наверное его стоит перефразировать в "без чего-либо, подключенного к порту это бессмысленно, т. к. данные отправляются в никуда и нечего принимать кроме помех". ![]() ну вот http://www.kernelchip.ru/pcports/PS054.php и цитата: Код: С аппаратной частью нам тоже придется "повозиться", в том смысле что она будет сложнее чем с первым устройством для LPT порта. Дело в том что протокол RS-232 по которому идет обмен данными в COM порту, имеет несколько отличное соотношение логическое состояние - напряжение. Если обычно это логический 0 <-> 0 В, логическая 1 <-> +5 В, то в RS-232 это соотношение следующее: логический 0 <-> +12 В, логическая 1 <-> -12 В. И например, получив -12 В не сразу понятно что с этим напряжением делать. Обычно проводят преобразование уровней RS-232 в ТТЛ (0, 5 В). Самый простой вариант - стабилитроны. Но я предлагаю сделать этот преобразователь на специальной микросхеме. Называется она MAX232. вот пример - только проблема согласования, дёшево и сердито ![]() |
Автор: | kalobyte [ Пт июн 26, 2015 11:57:51 ] |
Заголовок сообщения: | Re: Работа с COM портом |
Мурик писал(а): Т. е. если подключить DS18B20 к COM порту - работать не будет? как повезет, для любительских целей может и будет работать, я не пробовал |
Автор: | abc [ Пт июн 26, 2015 13:20:43 ] |
Заголовок сообщения: | Re: Работа с COM портом |
kalobyte писал(а): я не пробовал но при этом - сразу , безапелляционно :kalobyte писал(а): без мк ком порт "не работает" ну так и чО сразу лезть в тему с ТАКИМИ советами, если нет своего опыта и твое мнение - чисто умозрительное ? Да и по поводу "любительских целей" ты снова не попал. Вот схема вполне заводского девайса, продававшегося миллионными тиражами : ![]() |
Автор: | kalobyte [ Сб июн 27, 2015 00:04:57 ] |
Заголовок сообщения: | Re: Работа с COM портом |
abc писал(а): ну так и чО сразу лезть в тему с ТАКИМИ советами, если нет своего опыта и твое мнение - чисто умозрительное ? потому что делал программатор по такому же принципу если он там в старых системах работал, то в новых тайминги не совпадали и нихера не работало а серийный девайс этот то же гавно древнее, у меня был такой, только там стояла специальная мс - железный адаптер под ком порт и эту шину, стоил дороже намного а так автор начнет использовать порт в ненормальном режиме, у него нихера не заработает и будет он потом плеваться и материть все подряд |
Автор: | abc [ Сб июн 27, 2015 00:56:02 ] |
Заголовок сообщения: | Re: Работа с COM портом |
Т.е. конкретно у тебя не заработал программатор ? И это повод говорить, что ком-порт без МК не работает ? Охренеть... Но тот самый MCP3550 у меня работал на XP 24/7 в теч. трех месяцев. А у тысяч людей - таблетки DS1990 в паре с DS9097. Да и о чем спрашивает ТС в своем первом сообщении - о конкретно твоем программаторе или о датчиках вообще ? |
Страница 1 из 3 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |