Форум РадиоКот https://radiokot.ru/forum/ |
|
Visual Studio и COM порт https://radiokot.ru/forum/viewtopic.php?f=24&t=171277 |
Страница 1 из 1 |
Автор: | evgenizi61 [ Сб июн 13, 2020 01:10:05 ] |
Заголовок сообщения: | 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 ^" |
Автор: | BlackKilkennyCat [ Сб июн 13, 2020 01:28:46 ] |
Заголовок сообщения: | Re: Visual Studio и COM порт |
функция Write имеет строковый операнд, а не числовой, конвертируйте DataDiscrete в строку. |
Автор: | evgenizi61 [ Сб июн 13, 2020 03:07:56 ] |
Заголовок сообщения: | Re: Visual Studio и COM порт |
А если нужно числовой передать? Как быть тогда? Добавлено after 10 minutes 8 seconds: А еще лучше если можете подскажите как правильно передать переменную или массив через COM |
Автор: | BlackKilkennyCat [ Сб июн 13, 2020 03:09:30 ] |
Заголовок сообщения: | Re: Visual Studio и COM порт |
Передавать буфер в виде массива байтов. Пример мне написать сложно - я совершенно не знаю, как в Вашем случае правильно, так как не знаю задачи. Могу порекомендовать: https://www.codeproject.com/Articles/99 ... rary-for-C Если программирование только-только начато, то вообще отказаться от такого пути, в пользу .Net - там проще. |
Автор: | evgenizi61 [ Сб июн 13, 2020 08:10:38 ] |
Заголовок сообщения: | Re: Visual Studio и COM порт |
Вроде разобрался но не понятно что это зв массив такой array<unsigned char>^ tvec; tvec = gcnew array<unsigned char>(12); |
Автор: | tonyk [ Сб июн 13, 2020 09:39:03 ] |
Заголовок сообщения: | Re: Visual Studio и COM порт |
Вбей в посковике "Serial gate". |
Автор: | Мурик [ Сб июн 13, 2020 11:29:33 ] |
Заголовок сообщения: | Re: Visual Studio и COM порт |
BlackKilkennyCat писал(а): вообще отказаться от такого пути, в пользу .Net - там проще. ТС и так использует .NET, смотрите.evgenizi61 писал(а): System::IO::Ports::SerialPort::Write(System::String ^)
|
Автор: | BlackKilkennyCat [ Сб июн 13, 2020 16:06:21 ] |
Заголовок сообщения: | Re: Visual Studio и COM порт |
Мурик, разве? он написал, что С++, ошибка в стиле C++/CLI да и gcnew на это указывает Вроде разобрался но не понятно что это зв массив такой array<unsigned char>^ tvec; tvec = gcnew array<unsigned char>(12); управляемый массив из 12-ти байтов, могущих принимать только положительные значения. примеры: https://docs.microsoft.com/ru-ru/cpp/do ... ew=vs-2019 Вам имеет смысл сначала изучить основы языка. А то, по аналогии с автомобилем, Вы уже несетесь по трассе, но только сейчас стали задаваться вопросом, где руль. Добавлено after 10 minutes 45 seconds: Мурик, Вы правы. Старею ) Я имел ввиду, использование С# |
Автор: | evgenizi61 [ Пн июн 15, 2020 21:14:50 ] |
Заголовок сообщения: | Re: Visual Studio и COM порт |
Пишу в основном для МК на СИ. Вот и спросил что это за массив такой, так как синтаксис не очень понятен |
Автор: | vovik15 [ Чт сен 17, 2020 16:24:23 ] |
Заголовок сообщения: | Re: Visual Studio и COM порт |
У меня такая ситуация: Пишу код в visual studio на главной форме есть кнопки для настройки, открытия и закрытия порта. Все работает. На дочерней форме (Form 2 ) есть кнопки включения и выключения лампочки, на форме 3 есть кнопки включения и выключения вентилятора. То-есть при нажатии на каждую из кнопок нужно посылать в порт байт. Но из форм 2 и 3 никак не получается взаимодействовать с ком портом. Подскажите как это можно исправить? Компилятор говорит что такое имя не существует в текущем контексте пишу так _serialPort.Write(led_state, 0, 10); //передать байт |
Автор: | BlackKilkennyCat [ Чт сен 17, 2020 17:22:22 ] |
Заголовок сообщения: | Re: Visual Studio и COM порт |
ну дык кто родитель-то _serialPort? наверное, Form1? |
Автор: | vovik15 [ Чт сен 17, 2020 18:42:05 ] |
Заголовок сообщения: | Re: Visual Studio и COM порт |
Form 1 основная форма, там объявлен и настраивается порт. Нужно как-то посылать байты в порт через кнопки на form 2 и form3 |
Автор: | BlackKilkennyCat [ Чт сен 17, 2020 19:06:25 ] |
Заголовок сообщения: | Re: Visual Studio и COM порт |
Ну и? это же объектно-ориентированное программирование. необходимо указать родительский объект, его тип, и тогда можно ссылаться к его элементам, если у них свойство modifiers = public например, можно так: Код: (this.Owner as Form1)._serialPort.Write(led_state, 0, 10); //передать байт
|
Автор: | Myp3ik [ Ср сен 23, 2020 22:25:01 ] |
Заголовок сообщения: | Re: Visual Studio и COM порт |
Можно передать в конструкторы форм Form2 и Form3 ссылку на объект _serialPort. Получится рабоче-крестьянский DI (Dependency injection). Здесь _serialPort будет выступать в роли сервиса. |
Автор: | BlackKilkennyCat [ Ср сен 23, 2020 23:11:49 ] |
Заголовок сообщения: | Re: Visual Studio и COM порт |
Это нужно только если у тех форм владельцем не является Form1. В противном случае будет совершенно ненужное усложнение конструктора. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |