Форум программистов, компьютерный форум, киберфорум
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. Показов 52235. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru