|
2 / 2 / 0
Регистрация: 07.12.2010
Сообщений: 21
|
|
Программирование Com порта в Microsoft Visual Studio 9.0 C++07.12.2010, 13:11. Показов 52183. Ответов 84
Метки нет (Все метки)
Всем привет!
Имеется микроконтроллер AVR ATmega128, на борту которого имеется UART. Требуется написать приложение для Win32 принимающее с МК по RS-232 информацию. Интерфейс 3-х проводной. TxD, RxD и GND. Подключение ПК к МК осуществляется через виртуальный COM8 порт, тоесть через преобразователь USB в COM. В МК зашита программа тупого посыла символа "$" в цикле. Все работает прекрасно(данные приходят). Проверял программой Terminal v1.9b Имеется куча примеров, но не один не работает, нет опыта в программировании на C++. То отсутствует какая то библиотека, то непонятная ошибка. Я понимаю что это просто для знающего, но увы я только знакомлюсь с языком Microsoft Visual Studio 9.0 C++. если на нем этого сделать не возможно, посоветуйте тот на котором это возможно. Подскажите с чего начать, как инициализировать порт, как подключиться, как получить байт? Да, кол-во получаемых байтов неизвестно, точнее пока оно бесконечно. Для начала хотелось бы чтобы программа тупо принимала все что передается в порт и выводила на экран. Добавлено через 20 минут Кто нибудь... помогите подключить C++ к внешнему устройству!!!!
0
|
|
| 07.12.2010, 13:11 | |
|
Ответы с готовыми решениями:
84
Отличие между Microsoft Developer Studio и Microsoft Visual Studio? Как с сайта Microsoft скачать Microsoft Visual Studio 2005 Express Edition? Вылетает Visual Studio 2008 из-за системы управления версиями Microsoft Visual SourceSafe. |
|
125 / 65 / 9
Регистрация: 19.04.2010
Сообщений: 196
|
|
| 07.12.2010, 13:58 | |
|
0
|
|
|
2 / 2 / 0
Регистрация: 07.12.2010
Сообщений: 21
|
|
| 07.12.2010, 13:59 [ТС] | |
|
Sudoki спасибо что не отказываешь в помощи. До завтра! Хорошего вечера!
0
|
|
|
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
|
|
| 07.12.2010, 14:50 | |
|
Какова скорость (в бодах) передачи информации в COM порт?
0
|
|
|
2 / 2 / 0
Регистрация: 07.12.2010
Сообщений: 21
|
|
| 08.12.2010, 05:02 [ТС] | |
|
сейчас это не особо важный параметр. Если не ошибаюсь, то его можно просто поменять на двух устройствах, на компе и на контроллере, и теоретически все должно заработать.
Сейчас выбрана скорость 9600 бод. при ознакомлении с литературой нашел информацию что эта скорость дает наименьший процент ошибок, если не ошибаюсь 2%. поэтому мне как новичку для начало сойдет и это. чтобы обойтись по первой без проверок ЦРЦ и прочей целостности данных. Сейчас задача добиться приема и передачи данных. Информации для обмена не много, так что эта скорость будет наиболее приемлемой.
0
|
|
|
125 / 65 / 9
Регистрация: 19.04.2010
Сообщений: 196
|
||
| 08.12.2010, 09:06 | ||
|
Привет.
Ну так что будем действовать по нашему плану?
0
|
||
|
125 / 65 / 9
Регистрация: 19.04.2010
Сообщений: 196
|
|
| 08.12.2010, 09:12 | |
|
Собственно говоря вот класс который пока реализует следующий функционал:
1. Открывает порт 2. Закрывает порт
0
|
|
|
2 / 2 / 0
Регистрация: 07.12.2010
Сообщений: 21
|
|
| 08.12.2010, 10:09 [ТС] | |
|
Доверяю тебе в реализации правильности алгоритма. Так как сам этого не могу сделать. Тебе решать. Сейчас воткну твой класс. вопросы задам.
0
|
|
|
125 / 65 / 9
Регистрация: 19.04.2010
Сообщений: 196
|
|
| 08.12.2010, 11:00 | |
|
Вот ресурс в нем все прекрасно описано
http://britter.ru/index.php?do... fset=14900
0
|
|
|
2 / 2 / 0
Регистрация: 07.02.2011
Сообщений: 25
|
|
| 07.02.2011, 23:21 | |
|
Доброго времени суток Aspiring и Sudoku!
Очень заинтересовал ваш диалог. Сам столкнулся с подобной проблемой. Надо обеспечить прием данных через СОМ-порт. Попытался воссоздать программу, однако при компиляции получаю ошибку: ------ Построение начато: проект: ComPort, Конфигурация: Debug Win32 ------ Компиляция... Code.cpp c:\downloads\comport\comport\code.cpp(5) : fatal error C1083: Не удается открыть файл include: stdafx.h: No such file or directory Журнал построения был сохранен в "file://c:\Downloads\ComPort\ComPort\Debug\Build Log.htm" ComPort - ошибок 1, предупреждений 0 ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ========== Где я ошибся? И еще. Ссылка http://britter.ru/index.php?do... fset=14900, к сожалению, уже битая. Где еще можно почерпнуть о работе с СОМ-портом?
0
|
|
|
125 / 65 / 9
Регистрация: 19.04.2010
Сообщений: 196
|
|
| 08.02.2011, 21:39 | |
|
Я выложу что у нас получилось.
0
|
|
|
125 / 65 / 9
Регистрация: 19.04.2010
Сообщений: 196
|
|
| 09.02.2011, 09:52 | |
|
Как и обещал выкладываю что у нас получилось.
0
|
|
|
2 / 2 / 0
Регистрация: 07.02.2011
Сообщений: 25
|
|
| 09.02.2011, 09:57 | |
|
Спасибо большое, Sudoki!
Попробую вечером прогнать твою программу (работаю в основном по вечерам). Если возникнут вопросы, то можно их будет задать?
0
|
|
|
125 / 65 / 9
Регистрация: 19.04.2010
Сообщений: 196
|
|
| 09.02.2011, 10:22 | |
|
Для этого и есть форум чтобы задавать вопросы
0
|
|
|
2 / 2 / 0
Регистрация: 07.02.2011
Сообщений: 25
|
|
| 09.02.2011, 22:46 | |
|
Большое спасибо, Sudoki!
Программа без проблем откомпилировалась и запустилась. Буду теперь разбираться, как увязать ее с внешним устройством (к сожалению, от предыдущего разработчика не осталось никаких описаний о формате передаваемых данных).
0
|
|
|
125 / 65 / 9
Регистрация: 19.04.2010
Сообщений: 196
|
|
| 10.02.2011, 09:57 | |
|
Не забывай про настройки порта:
1. Имя порта 2. Скорость обмена 3. Кол-во стоп бит 4. Бит данных 5. Проверка четности 7. Тайм ауты приема/передачи данных Добавлено через 31 минуту Не туда нажал и отписался от темы
0
|
|
|
2 / 2 / 0
Регистрация: 07.02.2011
Сообщений: 25
|
||||||
| 16.02.2011, 22:01 | ||||||
|
Добрый день, Sudoku!
Это снова я! Разреши еще потревожить. ![]() Подскажи, пожалуйста, вот какую вещь. У меня данные передаются в ПК от СОМ-порта пакетами постоянной длинны. Формат пакета передаваемых в ПК данных и адреса данных в аппаратуре приведены ниже. № Данные, Адрес в аппаратуре Порт MCPU Примечания, байта код операции с данными 1 0xE6 Синхроплследовательность 2 0xE6 3 0x1C 28 десятичных. Длинна пакета данных 4 N0, мл. байт 0 Порт C 5 N0, ст. байт 0 Порт А Обнулить разряды 7-1. 6 T0, мл. байт 1 Порт C 7 T0, ст. байт 1 Порт А Обнулить разряды 7,6 8 N1, мл. байт 2 Порт C 9 N1, ст. байт 2 Порт А Обнулить разряды 7-1. 10 T1, мл. байт 3 Порт C 11 T1, ст. байт 3 Порт А Обнулить разряды 7,6 12 N2 мл. байт 4 Порт C 13 N2 ст. байт 4 Порт А Обнулить разряды 7-1. 14 T2 мл. байт 5 Порт C 15 T2 ст. байт 5 Порт А Обнулить разряды 7,6 16 N3 мл. байт 6 Порт C 17 N3 ст. байт 6 Порт А Обнулить разряды 7-1. 18 T3 мл. байт 7 Порт C 19 T3 ст. байт 7 Порт А Обнулить разряды 7,6 20 N4 мл. байт 8 Порт C 21 N4 ст. байт 8 Порт А Обнулить разряды 7-1. 22 T4 мл. байт 9 Порт C 23 T4 ст. байт 9 Порт А Обнулить разряды 7,6 24 N5 мл. байт A Порт C 25 N5 ст. байт A Порт А Обнулить разряды 7-1. 26 T5 мл. байт B Порт C 27 T5 ст. байт B Порт А Обнулить разряды 7,6 28 W0 C Порт C 29 W1 D Порт C 30 W2 E Порт C 31 W3 F Порт C Сейчас у меня идет все до кучи. Т.е. данные я принимаю и сохраняю. Однако при открытии получается каша. В старой программе выборка необходимых байт была реализована следующим образом:
Я правильно понимаю, что в какой-то момент времени в буфере находится целый кадр. Я из него могу выбрать интересующие меня байты buf[], присвоить их новой переменной df.RegWind[] и далее работать уже с ней? Как лучше сделать, чтобы нужный мне кадр (с которым я работаю в настоящий момент времени) "не затерся" последующим? Заранее спасибо
0
|
||||||
|
2 / 2 / 0
Регистрация: 07.02.2011
Сообщений: 25
|
|
| 16.02.2011, 22:09 | |
|
Исказилась таблица с форматом данных,поэтому решил приложить ее в виде doc-файла.
0
|
|
|
125 / 65 / 9
Регистрация: 19.04.2010
Сообщений: 196
|
||||||
| 16.02.2011, 22:43 | ||||||
|
Добрый вечер!
Добавить пару переменных да и функцию обработки. Заранее говорю что не компилировал писал в блокноте.
Это алгоритм на вскидку его еще надо обдумывать. Вдруг пакет будет не длиной 31 байт а потеряется где то пару байт. И тогда мы можем потерять следующий за ним. Я пару лет назад делал подобное. Алгоритм на другом винте лежит.
0
|
||||||
|
2 / 2 / 0
Регистрация: 07.02.2011
Сообщений: 25
|
|
| 17.02.2011, 10:56 | |
|
Спасибо, Sudoki, за подсказку!
Вечером поколдую!
0
|
|
|
2 / 2 / 0
Регистрация: 07.02.2011
Сообщений: 25
|
|
| 26.02.2011, 23:54 | |
|
Добрый вечер, Sudoki!
Появилась свободная минутка, решил поглубже зарыться в код представленной тобой программы. Можешь провести небольшой ликбез. Вот несколько вопросов: 1) Почему ты сделал два раздельных файла CPort и ComPort (честно говоря,я сначала предполагал, что один из них будет классом, а второй файлом с кодом)? 2) Форма программы (кнопки, меню и проч.) реализована в тексте CPort.cpp, хотя отдельно в Solution Explorer я файл формы с расширением *.cs (условно говоря Form1.cs) я не вижу. Я не там ищу или через код удобнее реализовывать? (просто возникает вопрос, как это отредактировать) 3) Функцию обработки сигналов с СОМ-порта и сохранение их на жесткий диск лучше реализовать отдельным файлом *.срр и потом присоединить к проекту или добавить в существующий текст программ? Заранее спасибо, Bedouin
0
|
|
| 26.02.2011, 23:54 | |
|
Microsoft Visual Studio microsoft visual studio 2005 Microsoft Visual Studio 2010 Microsoft visual studio 2010 Чем отличается Microsoft Visual C++ 2010 Express от Visual Studio 2010 Ultimate Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал (мат мет мод 29)
anaschu 23.06.2026
Многофункциональное здание:
как одно здание порождает конфликты требований,
которые никто не планировал
Материалы для обсуждения с МГСУ · 2026
Рисунки внутри приложенного ворд файла.
Что за. . .
|
28. Конкретное развертывание плана номер 1 из поста номер 27
anaschu 22.06.2026
Можно ли из модели получить конкретные строительные требования?
Честно — напрямую из текущей модели такие ответы не получить. Но цепочка логики есть, и она не такая длинная.
Где разрыв
. . .
|
27. Планы на разработку функциональных требований к строительству внутри модели пищеблока (или не только его?)
anaschu 22.06.2026
Что уже реализовано и даёт конфликты «бесплатно»
Самый простой конфликт уже работает — конфликт за ресурс-работника. Заданий больше, чем доступных поваров → очередь в queue1. Это прямое отражение. . .
|
26. мед мат модель.Какие типы конфликтов функциональных требований можно рассчитать через ДЕС-моделирование (СМО) в AnyLogic?
anaschu 22.06.2026
Что ДЕС/ СМО умеет считать напрямую:
Конфликты за ресурсы (очереди, узкие места). Несколько типов агентов (повара, учителя, рабочие, пациенты) претендуют на один ресурс (лифт, вход, коридор,. . .
|
|
25 модель здравосохранения и функциональных требований к пищеблоку: конфликты функциональных требований.
anaschu 22.06.2026
Есть ли данные о том, какие функциональные/ эксплуатационные требования или их сочетания труднее всего учитывать при проектировании зданий?
Да, такие данные есть, и они хорошо описаны и в российской,. . .
|
Remote Connection Manager
DevAlt 21.06.2026
Написал для себя небольшую прилагу:
https:/ / github. com/ altbodhi/ ReConMan
По итогу пришел к мысли, что DU не дружат с существующими технологиями.
От сериализации до отображения в реляционную. . .
|
Администрация Хабра удаляет новые энергоэфективные алгоритмы, которые не западной школы кода, и вовсе никак не сгенерированы
Hrethgir 20.06.2026
Делается это, как замечено, при правках - при объявлении концептуальных отличий в алгоримах. Делается это, по линейке событий - после дополнения публикации основными отличиями от основных западных. . .
|
Процесс ориентированная диалектика (не новость - просто системное обновление, философия).
Hrethgir 20.06.2026
Однажды один участник в своём блоге, на этом форуме, сделал запись "О языках замолвите слово". Понимая, что язык - важная вещь, я решил хорошо подумать, прежде чем сказать, и сказал то, что вы видите. . .
|