Visual Studio и COM порт
-
evgenizi61
- Родился
- Сообщения: 9
- Зарегистрирован: Чт июн 04, 2020 03:04:18
Visual Studio и COM порт
Здравствуйте коты.
Подскажите пожалуйста. Такая проблема.
Имеется переменная типа uint8 v Visual Studio С++
Нужно ее отправить в COM порт.
Пробую вот так, но вылетает error
uint8 DataDiscrete = 50;
this->serialPort1->Write(DataDiscrete);
----------
Ошибка
error C2664: void System::IO::Ports::SerialPort::Write(System::String ^): невозможно преобразовать параметр 1 из "unsigned char" в "System::String ^"
Подскажите пожалуйста. Такая проблема.
Имеется переменная типа uint8 v Visual Studio С++
Нужно ее отправить в COM порт.
Пробую вот так, но вылетает error
uint8 DataDiscrete = 50;
this->serialPort1->Write(DataDiscrete);
----------
Ошибка
error C2664: void System::IO::Ports::SerialPort::Write(System::String ^): невозможно преобразовать параметр 1 из "unsigned char" в "System::String ^"
-
BlackKilkennyCat
- Собутыльник Кота
- Сообщения: 2905
- Зарегистрирован: Ср ноя 29, 2017 06:58:50
Re: Visual Studio и COM порт
функция Write имеет строковый операнд, а не числовой, конвертируйте DataDiscrete в строку.
Меня здесь больше нет
-
evgenizi61
- Родился
- Сообщения: 9
- Зарегистрирован: Чт июн 04, 2020 03:04:18
Re: Visual Studio и COM порт
А если нужно числовой передать? Как быть тогда?
Добавлено after 10 minutes 8 seconds:
А еще лучше если можете подскажите как правильно передать переменную или массив через COM
Добавлено after 10 minutes 8 seconds:
А еще лучше если можете подскажите как правильно передать переменную или массив через COM
-
BlackKilkennyCat
- Собутыльник Кота
- Сообщения: 2905
- Зарегистрирован: Ср ноя 29, 2017 06:58:50
Re: Visual Studio и COM порт
Передавать буфер в виде массива байтов.
Пример мне написать сложно - я совершенно не знаю, как в Вашем случае правильно, так как не знаю задачи.
Могу порекомендовать: https://www.codeproject.com/Articles/99 ... rary-for-C
Если программирование только-только начато, то вообще отказаться от такого пути, в пользу .Net - там проще.
Пример мне написать сложно - я совершенно не знаю, как в Вашем случае правильно, так как не знаю задачи.
Могу порекомендовать: https://www.codeproject.com/Articles/99 ... rary-for-C
Если программирование только-только начато, то вообще отказаться от такого пути, в пользу .Net - там проще.
Меня здесь больше нет
-
evgenizi61
- Родился
- Сообщения: 9
- Зарегистрирован: Чт июн 04, 2020 03:04:18
Re: Visual Studio и COM порт
Вроде разобрался
но не понятно что это зв массив такой
array<unsigned char>^ tvec;
tvec = gcnew array<unsigned char>(12);
но не понятно что это зв массив такой
array<unsigned char>^ tvec;
tvec = gcnew array<unsigned char>(12);
Re: Visual Studio и COM порт
Вбей в посковике "Serial gate".
Re: Visual Studio и COM порт
ТС и так использует .NET, смотрите.BlackKilkennyCat писал(а):вообще отказаться от такого пути, в пользу .Net - там проще.
evgenizi61 писал(а):System::IO::Ports::SerialPort::Write(System::String ^)
-
BlackKilkennyCat
- Собутыльник Кота
- Сообщения: 2905
- Зарегистрирован: Ср ноя 29, 2017 06:58:50
Re: Visual Studio и COM порт
Мурик, разве? он написал, что С++, ошибка в стиле C++/CLI да и gcnew на это указывает
[uquote="evgenizi61",url="/forum/viewtopic.php?p=3854427#p3854427"]Вроде разобрался
но не понятно что это зв массив такой
array<unsigned char>^ tvec;
tvec = gcnew array<unsigned char>(12);[/uquote]
управляемый массив из 12-ти байтов, могущих принимать только положительные значения.
примеры: https://docs.microsoft.com/ru-ru/cpp/do ... ew=vs-2019
Вам имеет смысл сначала изучить основы языка. А то, по аналогии с автомобилем, Вы уже несетесь по трассе, но только сейчас стали задаваться вопросом, где руль.
Добавлено after 10 minutes 45 seconds:
Мурик, Вы правы. Старею )
Я имел ввиду, использование С#
[uquote="evgenizi61",url="/forum/viewtopic.php?p=3854427#p3854427"]Вроде разобрался
но не понятно что это зв массив такой
array<unsigned char>^ tvec;
tvec = gcnew array<unsigned char>(12);[/uquote]
управляемый массив из 12-ти байтов, могущих принимать только положительные значения.
примеры: https://docs.microsoft.com/ru-ru/cpp/do ... ew=vs-2019
Вам имеет смысл сначала изучить основы языка. А то, по аналогии с автомобилем, Вы уже несетесь по трассе, но только сейчас стали задаваться вопросом, где руль.
Добавлено after 10 minutes 45 seconds:
Мурик, Вы правы. Старею )
Я имел ввиду, использование С#
Меня здесь больше нет
-
evgenizi61
- Родился
- Сообщения: 9
- Зарегистрирован: Чт июн 04, 2020 03:04:18
Re: Visual Studio и COM порт
Пишу в основном для МК на СИ. Вот и спросил что это за массив такой, так как синтаксис не очень понятен
Re: Visual Studio и COM порт
У меня такая ситуация: Пишу код в visual studio на главной форме есть кнопки для настройки, открытия и закрытия порта. Все работает.
На дочерней форме (Form 2 ) есть кнопки включения и выключения лампочки, на форме 3 есть кнопки включения и выключения вентилятора. То-есть при нажатии на каждую из кнопок нужно посылать в порт байт. Но из форм 2 и 3 никак не получается взаимодействовать с ком портом. Подскажите как это можно исправить? Компилятор говорит что такое имя не существует в текущем контексте
пишу так
_serialPort.Write(led_state, 0, 10); //передать байт
На дочерней форме (Form 2 ) есть кнопки включения и выключения лампочки, на форме 3 есть кнопки включения и выключения вентилятора. То-есть при нажатии на каждую из кнопок нужно посылать в порт байт. Но из форм 2 и 3 никак не получается взаимодействовать с ком портом. Подскажите как это можно исправить? Компилятор говорит что такое имя не существует в текущем контексте
пишу так
_serialPort.Write(led_state, 0, 10); //передать байт
-
BlackKilkennyCat
- Собутыльник Кота
- Сообщения: 2905
- Зарегистрирован: Ср ноя 29, 2017 06:58:50
Re: Visual Studio и COM порт
ну дык кто родитель-то _serialPort? наверное, Form1?
Re: Visual Studio и COM порт
Form 1 основная форма, там объявлен и настраивается порт. Нужно как-то посылать байты в порт через кнопки на form 2 и form3
-
BlackKilkennyCat
- Собутыльник Кота
- Сообщения: 2905
- Зарегистрирован: Ср ноя 29, 2017 06:58:50
Re: Visual Studio и COM порт
Ну и? это же объектно-ориентированное программирование. необходимо указать родительский объект, его тип, и тогда можно ссылаться к его элементам, если у них свойство modifiers = public
например, можно так:
например, можно так:
Код: Выделить всё
(this.Owner as Form1)._serialPort.Write(led_state, 0, 10); //передать байтRe: Visual Studio и COM порт
Можно передать в конструкторы форм Form2 и Form3 ссылку на объект _serialPort. Получится рабоче-крестьянский DI (Dependency injection). Здесь _serialPort будет выступать в роли сервиса.
Иван Сусанин - первый полупроводник 
-
BlackKilkennyCat
- Собутыльник Кота
- Сообщения: 2905
- Зарегистрирован: Ср ноя 29, 2017 06:58:50
Re: Visual Studio и COM порт
Это нужно только если у тех форм владельцем не является Form1. В противном случае будет совершенно ненужное усложнение конструктора.