Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.83/272: Рейтинг темы: голосов - 272, средняя оценка - 4.83
2 / 2 / 0
Регистрация: 07.12.2010
Сообщений: 21

Программирование Com порта в Microsoft Visual Studio 9.0 C++

07.12.2010, 13:11. Показов 52196. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.12.2010, 13:11
Ответы с готовыми решениями:

Отличие между Microsoft Developer Studio и Microsoft Visual Studio?
Здравствуйте, объясните чем отличается Microsoft Developer Studio и Microsoft Visual Studio ?

Как с сайта Microsoft скачать Microsoft Visual Studio 2005 Express Edition?
На сайте Microsoft вроде бы можно скачать Microsoft Visual Studio 2005 Express Edition, но отдаётся оттуда только файл vcsetup.exe размером...

Вылетает Visual Studio 2008 из-за системы управления версиями Microsoft Visual SourceSafe.
Всем здравствуйте. Недавно установил VS 2008 sp1 rus. Хочу создать проект на VC++ (делаю всё подобно как в VS 6.0). Файл - Создать...

84
0 / 0 / 0
Регистрация: 19.06.2013
Сообщений: 11
04.07.2013, 15:43
Студворк — интернет-сервис помощи студентам
2 сом-порта для меня роскошь. На ноуте нет ни одного. Приобрел переходник usb-com, идея состоит в том, что закоротив пины Tx и Rx на com-разъеме я в программе пытаюсь записать данные, а потом считать их. Пока такая простенькая идея отрабатывается. Данных немного. Надо "научиться" задавать нужную температуру устройству, управляемому по com, и делать это с необходимой точностью. т.е. я транслирую в порт 2 значения. int и double. Но вот каким образом биты расположатся в кадрах протокола обмена - мне неведомо. Поэтому есть идея использовать метод write, где надо задавать 3 параметра. И затырка в том, что мне не ясно, как сделать так, чтобы из типа string получился тип byte. Чтение msdn и форумов ситуацию не прояснило. Где-то рекомендуют использовать методы класса marshall, где-то System::Text::Encoding::GetBytes(Numeric UpDown->Text), подставляя полученное в 1 аргумент write. В общем, бился много, толку 0. Может подскажете, в каком направлении копать, чтоб научиться стринги в байты нарезать?
0
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
04.07.2013, 17:17
Ффух! пока понятно, что ничего не понятно. :-) Почему тебе нужно "стринги в байты нарезать"?

Опиши протокол обмена с этой железякой. Потом можно будет прикинуть, как его реализовать на C++/CLI.
0
0 / 0 / 0
Регистрация: 19.06.2013
Сообщений: 11
05.07.2013, 11:18
Может сумбурно объяснил...Попробую понятнее изложить.
1. Аппаратная часть.
1.1 Ноут, без единого com-порта.
1.2 Преобразователь Usb-com, ф-мы Defender. Приобретен с целью потренироваться записать/почитать данные из ком-порта
1.3 Модель "абсолютно черного тела (АЧТ)" под названием M345X6_infrablack4. Физического доступа к этой штуковине у меня пока нет. Видел ее только в виде документации, высланной заказчиком. Полезных сведений - протокол обмена RS 232, и рекомендуемые настройки порта (с этим проблем нет, Visual Studiовский компонент serialPort позволяет их выставить очень легко и просто )
2. Задача. АЧТ должен получать с компа и отдавать обратно на комп следующие данные: 1. Температура АЧТ в пределах от -5 до 170 градусов. 2. Точность установки, которая варьируется в пределах от 0 до 1 с точностью 2 знака после запятой.
3. Реализация. Я создал класс, который абстрактно отображает сущность моего АЧТ, которого под рукой у меня нет, и создал экземпляр этого класса, с которым и собираюсь проводить эксперименты. В нем прописаны следующие переменные: int temperature и double precision. А также четыре метода SetTemperature(int), SetPrecision(double), GetTemperature(), GetPrecision(), с помощью которых я из окошек, расположенных на форме, организую общение с экземпляром АЧТ. На форме размещены 2 окошка NumericUpDown, и кнопка Button. Так как данные, вводимые пользователем в NumericUpDown имеют тип String, то для того, чтобы отдать данные АЧТ я делаю так: sd.SetTemperature (System::Convert::ToDouble::TemperatureW indow->Text). Чтобы вернуть данные из АЧТ я делаю так: TemperatureWindow->Text=System::Convert::ToString(sd.GetTe mperature()). Вот. А теперь важный момент. Экземпяр класса я создал только лишь с целью оживить пользовательский интерфейс, а по сути-то мне нужно формировать битовую посылку в порт. И где-то в этом месте начинаются непонятности. Чтобы сформировать такую посылку мне ведь надо взять из NumericUpDown поле Text, потом переделать его в тип Byte, и скормить то, что получилось методу serialPort1->Write. А ведь у меня 2 окошка. Одно для температуры, другое для точности. И если я дважды выполню Write, вероятно, данные в порт пойдут одни поверх других? И насчет метода write, как я уже говорил, тоже сомнения. Он перегруженный. Ему можно отдать строку string в одном случае, а в другом ему надо передать аж 3 параметра - массив типа Byte, первый элемент массива (int) и количество байтов (int). В моем случае это предпочтительнее, метод гибкий. А вот как из string сделать byte - я ума никак не приложу. Делал так: array <Byte>^bytes = System::Text::Encoding::GetBytes(Tempera tureWindow->Text). Не работает, говорит недопустимый вызов нестатичной функции-члена. Пробовал System::Convert::ToByte(TemperatureWindo w->Text). Пробовал так: serialPort1->Write(System::Convert::ToByte(Temperatu reWindow->Text),0,2). Тоже не работает. На этом умные мысли кончились, полез на форум Ну вот как-то так, надеюсь не утомил своими глупостями
0
0 / 0 / 0
Регистрация: 19.06.2013
Сообщений: 11
05.12.2013, 17:01
Джентельмены, доброго дня всем Вам еще разок. Бьюсь-бьюсь, никак не добьюсь, очень нужен чей-нибудь совет. Все таже задачка чтения-записи из/в COM-порт посредством Visual Studio 2008. Вот такая конструкция:
...
if (!serialPort1->IsOpen) serialPort->Open();
serialPort1->WriteLine(TextBox2->Text);
textBox1->AppendText(System::Convert::ToString(se rialPort1->ReadExisting));
...
Проверили, открыт ли порт, если не открыт - открыли; записали строку (предварительно подготовленную) в выходной буфер ком-порта; считали данные из входного буфера ком-порта, предварительно приведя их в строковый вид. По идее все должно шевелиться, но увы...я не вижу ни единой принятой строчки. Помогите, люди добрые, не кодом, но мудрым советом ))). Не хватает понимания физики процесса.
0
1 / 1 / 0
Регистрация: 15.09.2018
Сообщений: 5
01.10.2018, 13:32
Sudoki, вопрос не по теме, но нет возможности ждать, нет!

Вопрос: как передать данные из функции (говоря языком ANSI C) в текстовое поле textBox Form1 VS 2010, CLR? C++.
Сама форма Form1 создается автоматически помощником. В форму вручную добавлены элементы: textBox1, comboBox1, button1.
Задача при нажатии botton1 считать данные из comboBox1 и что-то записать в textBox1.
Что как делать не пойму, начинаю изучать С++ с нуля (ранее писал на ANSI C для микроконтроллеров, мне 55 лет), но необходимо сделать задачу быстро, на самом деле функция иная, но если мне понять до я модифицирую мою основную.
В другой ветке мне рекомендовали внести ее в класс, но куда и что писать в Form1 не пойму.

-------------------------------------------------------------
Функция в отдельном файле:

отдельный файл: func.cpp
#include "func.h"

int calc(int a, int b)
{
string pozition;
if(a > 5)
pozition = comboBox_COMselect->Text; //получить имя выбранного порта

if(b < 10)
textBox_SendData->Text = System::Convert::ToString(100);

}
___________________________
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.10.2018, 13:32

Microsoft Visual Studio
Даны целые числа a1,...,a20. Наименьший член этой последовательности заменить целой частью среднего арифметического всех членов, остальные...

microsoft visual studio 2005
есть ли в природе документация по microsoft visual studio 2005 на русском языке?

Microsoft Visual Studio 2010
У меня проблеми со студиею... сначала она проект не компилировала а фатал ерор видавала а теперь на С# форматированее самой студии не...

Microsoft visual studio 2010
Скачал прогу после переустановки windows(прошло уже месяца два), открыл, выбрал создать проект, выбрал язык C++, дальше win 32. написал...

Чем отличается Microsoft Visual C++ 2010 Express от Visual Studio 2010 Ultimate
Подскажите пожалуйста, в чем разница Microsoft Visual C++ 2010 Express от Visual Studio 2010 Ultimate. Всем ответившим большое спасибо)))


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
85
Ответ Создать тему
Новые блоги и статьи
сукцессия 5
anaschu 26.06.2026
ПЛАН РАЗРАБОТКИ математической модели сукцессии микоризных систем Переход AM → EcM (Endo + ErM) · Шумилов А. С. · ИФХиБПП РАН · Пущино · 2026 . . .
сукцессия 4
anaschu 25.06.2026
Более детализированный план разработки План доработки модели динамики микоризных симбиозов (EcM с гистерезисом) Цель: Реализовать логику переключения между эрикоидным (ErM) и эктомикоризным. . .
сукцессия 3
anaschu 25.06.2026
Примерный план работ по модели
сукцессия 2
anaschu 25.06.2026
параметризировочная калибровочная таблица будущей модели
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал (мат мет мод 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
Что ДЕС/ СМО умеет считать напрямую: Конфликты за ресурсы (очереди, узкие места). Несколько типов агентов (повара, учителя, рабочие, пациенты) претендуют на один ресурс (лифт, вход, коридор,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru