|
2 / 2 / 0
Регистрация: 07.12.2010
Сообщений: 21
|
|
Программирование Com порта в Microsoft Visual Studio 9.0 C++07.12.2010, 13:11. Показов 52664. Ответов 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
|
||
| 10.03.2011, 10:16 | ||
|
"Язык программирования С++" Бьерн Страуструп Ищи ее в сети и качай. Добавлено через 1 минуту Там все рассказано. Когда прочитаешь вопросов будет меньше. Добавлено через 39 секунд И про какой класс и файлы ты говоришь?
1
|
||
|
2 / 2 / 0
Регистрация: 07.02.2011
Сообщений: 25
|
|
| 10.03.2011, 11:07 | |
|
Sudoki!
Спасибо за книжку. Что касается класса, то я имел ввиду код в посте: Программирование Com порта в Microsoft Visual Studio 9.0 C++ Я правильно понимаю, что это класс? Добавлено через 2 минуты Если это не так, то отсюда половина моих бед. В этом случае я не понял, как этот код прицепить к имеющемуся проекту
0
|
|
|
125 / 65 / 9
Регистрация: 19.04.2010
Сообщений: 196
|
|
| 10.03.2011, 11:17 | |
|
0
|
|
|
2 / 2 / 0
Регистрация: 07.02.2011
Сообщений: 25
|
||||||
| 10.03.2011, 11:26 | ||||||
|
И я правильно понимаю, что ее просто надо вставить в CPort.cpp?
Добавлено через 1 минуту Меня смутили строчки:
0
|
||||||
|
125 / 65 / 9
Регистрация: 19.04.2010
Сообщений: 196
|
||
| 10.03.2011, 11:35 | ||
|
Выкладывал в посте Программирование Com порта в Microsoft Visual Studio 9.0 C++ Добавлено через 21 секунду Их нужно просто подключить к проекту и все
1
|
||
|
2 / 2 / 0
Регистрация: 07.02.2011
Сообщений: 25
|
||||||
| 10.03.2011, 11:47 | ||||||
|
Так, теперь все начинает становиться на свои места.
Спасибо! А теперь, если не против, давай пройдем по пунктам: 1) вставляю функцию LRESULT CALLBACK OnComPort(ComPort* p, unsigned int Event, unsigned short arg) в CPort.cpp. 2) Присоединяю файлы WorkCtrl.h и WorkCtrl.срр. Остался только вопрос: строки
0
|
||||||
|
125 / 65 / 9
Регистрация: 19.04.2010
Сообщений: 196
|
|||
| 10.03.2011, 12:19 | |||
|
Добавлено через 53 секунды
0
|
|||
|
2 / 2 / 0
Регистрация: 07.02.2011
Сообщений: 25
|
||||||
| 10.03.2011, 12:27 | ||||||
|
Сбила с толку фраза:
Не сообразил, что с ней делать
0
|
||||||
|
125 / 65 / 9
Регистрация: 19.04.2010
Сообщений: 196
|
|
| 10.03.2011, 12:45 | |
|
0
|
|
|
2 / 2 / 0
Регистрация: 07.02.2011
Сообщений: 25
|
|
| 10.03.2011, 12:56 | |
|
И она объявляется в файле CPort.cpp?
0
|
|
|
125 / 65 / 9
Регистрация: 19.04.2010
Сообщений: 196
|
|||||||||||
| 10.03.2011, 13:26 | |||||||||||
|
Тебе нужно сначала прочитать книгу там все написано.
Добавлено через 1 минуту Эта переменная будет видна только в пределах этого модуля. Если надо чтобы была видна еще гдето то в CPort.h надо добавить
Добавлено через 19 секунд Ты лучше книгу прочти
2
|
|||||||||||
|
2 / 2 / 0
Регистрация: 07.02.2011
Сообщений: 25
|
||||||||||||||||||||||
| 17.03.2011, 23:35 | ||||||||||||||||||||||
|
Добрый вечер, Sudoki!
Большое спасибо за книжку. Помогает. А новичкам, таким как я (если таковые забредут на форум), советую искать в сети книгу Бьерна Страуструпа "Язык программирования С++. Специальное издание" (редакции 2001 или 2010 гг.). Это к тому, что в сети есть вариант (pdf-файл) Бьерн Страуструп. "Язык программирования С++". Второе дополненное издание объемом 369 стр. Материал там изложен сжато и требует определенной подготовки и начальных знаний. Добавлено через 17 минут А теперь, если можно, вопрос, вернее два. Подчистил я проект, число ошибок уменьшилось. Но никак не могу из заголовочного файла WorkCtrl.h вычистить ошибку: c:\downloads\comport\cport.cpp(268) : error C2039: m_dfCurFrame: не является членом "CWorkCtrl" c:\downloads\comport\workctrl.h(10): см. объявление 'CWorkCtrl' WorkCtrl.cpp Насколько я понимаю, эти ошибки взаимосвязаны. И ноги растут из файла WorkCtrl.h:
И вторая ошибка: c:\downloads\comport\workctrl.cpp(13) : error C2182: WorkCtrl: недопустимое использование типа "void" ссылается на код в WorkCtrl.cpp:
Однако в исходниках, с которыми я работаю, и в WorkCtrl.h
В чем затык и где копать?
0
|
||||||||||||||||||||||
|
2 / 2 / 0
Регистрация: 07.02.2011
Сообщений: 25
|
|
| 17.03.2011, 23:38 | |
|
На всякий случай прикреплю проект.
0
|
|
|
125 / 65 / 9
Регистрация: 19.04.2010
Сообщений: 196
|
|||||||||||||||||||||||||||||||||||||||||
| 18.03.2011, 10:03 | |||||||||||||||||||||||||||||||||||||||||
|
Вопрос такой зачем ты в классе сделал typedef struct DEV_FRAME;?
Добавлено через 29 секунд DEV_FRAME а где ее описание? Кто его делать будет? Добавлено через 1 минуту
Добавлено через 42 секунды Где реализации методов класса?
Добавлено через 20 минут Вот так выглядит твой класс файл WorkCtrl.h
WorkCtrl.cpp
Сравни со своими файлами и найди ошибки. И почитай про классы. Добавлено через 2 минуты Мда и еще в этой функции
вот это
1
|
|||||||||||||||||||||||||||||||||||||||||
|
2 / 2 / 0
Регистрация: 07.12.2010
Сообщений: 21
|
|
| 13.04.2011, 14:26 [ТС] | |
|
Sudoki.. Ну лень человеку читать книжки. Задал вопрос, получил ответ. проще же. Если после такой дискуссии задает такие вопросы. Я понимаю что сложно понять с первого раза все это. Сам на этом этапе. Но не каждый же вопрос задавать. Есть интернет, разные форумы, книжки тебе надавали. Поищи там ответы на свои вопросы, а если уж реально не можешь понять в чем дело или как оно там все.. то спрашивай поможем... Извините меня но прочитал от начала до конца еще раз и даже смешно немного. Вот что значит "использование интернета не по назначению".
0
|
|
|
125 / 65 / 9
Регистрация: 19.04.2010
Сообщений: 196
|
|
| 13.04.2011, 18:21 | |
|
ОТписался от темы случайно
0
|
|
|
Eklektik
|
|
| 15.04.2013, 23:06 | |
|
Доброго времени суток друзья, оживляю ветку после длительного стазиса.
Очень много почерпнул из ваших разговоров, за что уже огромное спасибо, сориентируете(если здесь окажется хоть кто нибудь живой) меня по моей задаче, она не далеко ушла, я не могу разобраться в каком направлении и чем копать: мне нужно посылать на мк команды для установки высокого и низкого уровня на определённых ногах микросхемы, в качестве которой выступает ATMega 128A. Принцип следующий: есть интерфейс написанный на плюсах - 50 кнопочек вкл\вкл (по сути 100 кнопочек). по нажатию, допустим на 20 кнопку вкл. должно пойти питание с 20й(в свободном диапазоне) ноги. Уточняю что 20я нога - условно, т.е. на мк это скорее окажется 24 или 25, за вычетом RX, TX, VDC, GND и им подобных. в распоряжении у меня чуть больше 50 ног. мне нужно ровно 50. Так вот.... кашица какая то получилась, но полезная. а теперь эту кашицу надо чем то запить: попробую как в задачках в школе... Дано: мк с 50 свободными ногами, интерйфейс на С++ с 50*2 кнопками. Необходимо: передавать состояние на открытие той или иной ноги, посредством нажатия кнопки в окошке с этой С++ программой. Решение: тут немного отсебятины - видел и читал на сайте AVR.ru первые уроки, после третьего начал решительно ничего не понимать, зато первые три принесли пользу, а именно: примерно понял как заставить микруху открывать одну ногу если на другую подаётся сигнал, точнее там пример был с подключением к одной ноге мк кнопки а к другой - светодиода, и по нажатию кнопки мк зажигала светодиод. вот мен эту кнопку теперь надо в виде программы реализовать и ещё одна ВАЖНАЯ особенность: мне нужно чтобы свободных на выход ног было не меньше 50, а на мк всего 56, из них под расход сразу уходят штуки три точно, так вот: на какой вход нужно передавать данные, грубо говоря, с номером ноги и состоянием, чтобы на вход была как бы одна нога, а на выход работали 50. Прошу прощения если сильно намесил, хотел изложить всё сразу чтобы меньше вопросов возникло. |
|
|
bariskin
|
|
| 08.05.2013, 08:56 | |
|
Доброе время суток! Интересная ветка, есть похожая задача. Есть просьба скинуть книжку о которой вы здесь говорили.
Мой ящик: chiurcciu@mail.ru Благодарю за понимание ) |
|
|
0 / 0 / 0
Регистрация: 19.06.2013
Сообщений: 11
|
|
| 04.07.2013, 15:02 | |
|
Всем здравствуйте! Мой вопрос тесно пересекается с заданной темой, к сожалению, более подходящей темы я не нашел, поэтому пишу сюда и прошу модератора перенаправить мой пост в нужную тему, если таковая имеется. Суть такая: нужно научиться писать данные в Com-порт и считывать из него. Я пользуюсь средой Visual C++ 2008 Express edition. Вот с чем пытаюсь разобраться. Есть окошко NumericUpDown, в которое можно вводить/выводить данные в виде строчек string. Есть компонент serialPort1, предоставляющий ресурс и набор методов последовательного порта. Путем копания нашел, что для компонента serialPort есть перегруженный метод Write, которому, как вариант, можно подсунуть строку string. Поэкспериментировал - работает, но терзают меня смутные сомнения: есть этот же перегруженный метод, но в нем в качестве аргументов Write надо ручками прописать массив передаваемых байтов типа Byte, начальный символ массива типа int32, количество байт типа int32. Может быть, кто-нибудь из знатоков на форуме может рассказать, чем лучше пользоваться? А то боюсь попалить чужое (и недешевое к тому же) лабораторное оборудование. С Уважением.
0
|
|
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
| 04.07.2013, 15:14 | |
|
Раз уж ты пишешь в порт строку - видимо, обмен с "недешевым оборудованием" идет простыми текстовыми командами. Используй два порта, нуль-модемный кабель и обычный терминал для отладки обмена. В принципе, можно использовать и два компа, соединенных нуль-модемным кабелем, - на одном твоя прога (отлаживаемая), на другом - терминал, на котором просматриваешь команды и печатаешь "ответы" оборудования. Продумай набор тестов - а лучше всего, согласуй эти тесты с руководством/заказчиком.
0
|
|
| 04.07.2013, 15:14 | |
|
Microsoft Visual Studio microsoft visual studio 2005 Microsoft Visual Studio 2010 Microsoft visual studio 2010 Чем отличается Microsoft Visual C++ 2010 Express от Visual Studio 2010 Ultimate Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|
|
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки.
Добавлены следующие реквизиты типа Булево:
- Буквы;
- Цифры;
- Символы.
Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
|
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей.
Самым главным критерием для. . .
|
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store.
И так:
1. Скачиваем с. . .
|
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге).
Задача:
Программно добавить префикс в нумерацию документов.
Решение:
В модуле объекта. . .
|