|
2 / 2 / 0
Регистрация: 07.12.2010
Сообщений: 21
|
|
Программирование Com порта в Microsoft Visual Studio 9.0 C++07.12.2010, 13:11. Показов 52705. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг.
Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует.
В процессе разработки. . .
|
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
|
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации:
1. Вернуть возможность использования знаков | 1 l I;. . .
|
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|