Разработка приложения для Windows для начинающих
-
- Опытный
- Сообщения: 112
- Зарегистрирован: 10 сен 2011, 18:18
- Репутация: 11
- Контактная информация:
Разработка приложения для Windows для начинающих
Доброго дня! Возможно тема немного не "тему", но наверно самый подходящий раздел.
Надо написать простое приложения для Windows, которое будет общаться с контроллером через СОМ-порт - отправлять введенные данные и отображать принятые.
Конечно можно найти кого-то кто напишет все что-надо, но хочется "повысить свою квалификацию".
С написанием приложений для ПК не сталкивался (очень давно-давно на Паскале писал простые программки под DOS, но это уже не актуально).
Работаю пока только с контроллерами и знаю С.
Вопрос для новичка : на чем сейчас актуально писать программы для ПК? с чего начинать изучать?
Сейчас смотрю на Visual Studio C++, но очень много непонятного. И самое главное, пока непонятно где что искать и что смотреть.
Прошу помочь кто-чем может!
Заранее благодарен!
Надо написать простое приложения для Windows, которое будет общаться с контроллером через СОМ-порт - отправлять введенные данные и отображать принятые.
Конечно можно найти кого-то кто напишет все что-надо, но хочется "повысить свою квалификацию".
С написанием приложений для ПК не сталкивался (очень давно-давно на Паскале писал простые программки под DOS, но это уже не актуально).
Работаю пока только с контроллерами и знаю С.
Вопрос для новичка : на чем сейчас актуально писать программы для ПК? с чего начинать изучать?
Сейчас смотрю на Visual Studio C++, но очень много непонятного. И самое главное, пока непонятно где что искать и что смотреть.
Прошу помочь кто-чем может!
Заранее благодарен!
-
- Зачётный участник
- Сообщения: 34042
- Зарегистрирован: 04 апр 2010, 19:22
- Репутация: 6192
- Откуда: Казахстан.
- Контактная информация:
Re: Разработка приложения для Windows для начинающих
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
- selenur
- Почётный участник
- Сообщения: 4604
- Зарегистрирован: 21 авг 2013, 19:44
- Репутация: 1621
- Настоящее имя: Сергей
- Откуда: Новый Уренгой
- Контактная информация:
Re: Разработка приложения для Windows для начинающих
В качестве среды разработки С# сейчас стал очень популярен, примеров очень много, используя совместно с МК AVR или STM
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
-
- Мастер
- Сообщения: 584
- Зарегистрирован: 22 фев 2013, 22:31
- Репутация: 177
- Откуда: Первоуральск
- Контактная информация:
Re: Разработка приложения для Windows для начинающих
ИМХО С# самый перспективный и популярный для windows.
Создайте проект windows forms . ( Появится главное окно будущей программы )
перетащите на окно компонент BUTTON ( КНОПКА ).
перетащите на окно компонент COMPORT .
Кликните по кнопке созданной и переместитесь в код обработчик нажатия на кнопку .
Пишите код.
В первую очередь скачайте и установите Microsoft Visual Studio Express 2013 для Windows Desktop .Woodmaster писал(а):Прошу помочь кто-чем может!
Создайте проект windows forms . ( Появится главное окно будущей программы )
перетащите на окно компонент BUTTON ( КНОПКА ).
перетащите на окно компонент COMPORT .
Кликните по кнопке созданной и переместитесь в код обработчик нажатия на кнопку .
Пишите код.
— Мы месяц по Галактике «маму» попоём — и планета у нас в кармане.
-
- Опытный
- Сообщения: 112
- Зарегистрирован: 10 сен 2011, 18:18
- Репутация: 11
- Контактная информация:
Re: Разработка приложения для Windows для начинающих
Спасибо за ответы!
Вчера скачал Visual Studio Express 2010 C++. По примерам с сайта Microsoft сделал простое "приложение" с двумя кнопками "инкремент" и "декремент", и полем отображения переменной, которая изменяется кнопками. Для первого для изучения пока все
На С# пока не смотрел. А что "проще" для новичка С++ или С#? Есть сильные различия в написании программ?
Еще важный вопрос - приложение должно работать начиная с Win XP, и на WIn 7 и 8.
Если работать в Visual Studio Express 2013 - приложение будет совместимо с XP или надо использовать предыдущие версии Visual Studio?
Вчера скачал Visual Studio Express 2010 C++. По примерам с сайта Microsoft сделал простое "приложение" с двумя кнопками "инкремент" и "декремент", и полем отображения переменной, которая изменяется кнопками. Для первого для изучения пока все
На С# пока не смотрел. А что "проще" для новичка С++ или С#? Есть сильные различия в написании программ?
Еще важный вопрос - приложение должно работать начиная с Win XP, и на WIn 7 и 8.
Если работать в Visual Studio Express 2013 - приложение будет совместимо с XP или надо использовать предыдущие версии Visual Studio?
- selenur
- Почётный участник
- Сообщения: 4604
- Зарегистрирован: 21 авг 2013, 19:44
- Репутация: 1621
- Настоящее имя: Сергей
- Откуда: Новый Уренгой
- Контактная информация:
Re: Разработка приложения для Windows для начинающих
С# интуитивно проще, при написании программы используется framework 2 или 3 или 4 версии, в зависимости от параметров при создании проекта. Так вот что-бы программа работала в любой версии виндовс, достаточно что-бы на машине был установлен фрейморк нужной версии.
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
-
- Опытный
- Сообщения: 112
- Зарегистрирован: 10 сен 2011, 18:18
- Репутация: 11
- Контактная информация:
Re: Разработка приложения для Windows для начинающих
Aftaev Спасибо за видео пример! Вот бы еще исходники на это посмотреть "в живую". В инете искал, ничего не нашел
-
- Мастер
- Сообщения: 584
- Зарегистрирован: 22 фев 2013, 22:31
- Репутация: 177
- Откуда: Первоуральск
- Контактная информация:
Re: Разработка приложения для Windows для начинающих
ВОТ C#
Обработчик события "кнопка клик" ( кнопка соединения / разъединения с портом )
обработчик события кнопка клик , отсылает в порт то что написал в контроле comboBox1
Обработчик события "кнопка клик" ( кнопка соединения / разъединения с портом )
Код: Выделить всё
private void button1_Click(object sender, EventArgs e)
{
if (serialPort1.IsOpen) // если порт открыт
{
serialPort1.Close(); // закрыть
label1.BackColor = Color.Red; // изменить цвет элемента ЛЭЙБЛ на красный
label1.Text = "disconnected"; // изменить надпись элемента ЛЭЙБЛ на disconnected
}
else { // если закрыт , открываем
serialPort1.BaudRate = 115200;
serialPort1.DataBits = 8;
serialPort1.Parity = 0;
serialPort1.StopBits = System.IO.Ports.StopBits.One;
serialPort1.Open(); // открываем
if (serialPort1.IsOpen)
{
label1.BackColor = Color.Green;
label1.Text = "connected";
}
else
{
label1.BackColor = Color.Red;
label1.Text = "disconnected";
}
}
}
Код: Выделить всё
private void button2_Click(object sender, EventArgs e)
{
if(serialPort1.IsOpen){ // если порт открыт
var tt = comboBox1.Text.ToArray(); // создаем переменную с автоматическим присвоением типа ( int , char , double ,array char сама определится кем быть )
if (serialPort1.IsOpen) { serialPort1.Write(tt,0,comboBox1.Text.Length);} // если порт опен пишем в него массив tt ,
// начиная с нулевого элемента и
/// длинной полученной из comboBox1.Text.Length
}
— Мы месяц по Галактике «маму» попоём — и планета у нас в кармане.
-
- Опытный
- Сообщения: 112
- Зарегистрирован: 10 сен 2011, 18:18
- Репутация: 11
- Контактная информация:
Re: Разработка приложения для Windows для начинающих
Спасибо, затвра буду вникать!
Листинг на С# значительно проще, чем на С++ в тех примерах что я видел.
Листинг на С# значительно проще, чем на С++ в тех примерах что я видел.
- selenur
- Почётный участник
- Сообщения: 4604
- Зарегистрирован: 21 авг 2013, 19:44
- Репутация: 1621
- Настоящее имя: Сергей
- Откуда: Новый Уренгой
- Контактная информация:
Re: Разработка приложения для Windows для начинающих
При разработке компьютерной программы для работы с устройством с использованием КОМ-порта, необходимо как-то эмулировать само устройство (если его нет), и для этого можно воспользоваться следующим методом:
1) Скачать и установить программу http://sourceforge.net/projects/com0com/ данная программа на компьютере создает 2 программных ком-порта, которые соединены между собой.
2) Скачать https://sites.google.com/site/terminalbpp/ это лучшая на сегодня терминальная программа, хотя можно использовать и гипер-терминал, и путти...
После установки первой программы мы увидим следующее: У меня появилось 2 ком-порта 7 и 8.
Для примера я запустил 2 терминальные программы, а в твоем случае, одна будет твоя программа а вторая терминальная. На картинке видим что отправив данные с ком-порта 7, они получены на ком-порте 8, и наоборот
Думаю это немного упростит вам разработку.
И ещё добавлю к предыдущему посту, у компоненты Последовательного порта есть событие, которое происходит когда приходят с ком-порта данные, код выглядит примерно так:
В переменную indata помещаются полученные данные, если например получено не все сообщение, то можно завести специальную переменную, в которой накапливать полученные данные пока не дойдем до окончания сообщения.
1) Скачать и установить программу http://sourceforge.net/projects/com0com/ данная программа на компьютере создает 2 программных ком-порта, которые соединены между собой.
2) Скачать https://sites.google.com/site/terminalbpp/ это лучшая на сегодня терминальная программа, хотя можно использовать и гипер-терминал, и путти...
После установки первой программы мы увидим следующее: У меня появилось 2 ком-порта 7 и 8.
Для примера я запустил 2 терминальные программы, а в твоем случае, одна будет твоя программа а вторая терминальная. На картинке видим что отправив данные с ком-порта 7, они получены на ком-порте 8, и наоборот
Думаю это немного упростит вам разработку.
И ещё добавлю к предыдущему посту, у компоненты Последовательного порта есть событие, которое происходит когда приходят с ком-порта данные, код выглядит примерно так:
Код: Выделить всё
private static void DataReceivedHandler( object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string indata = sp.ReadExisting();
}
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
-
- Мастер
- Сообщения: 584
- Зарегистрирован: 22 фев 2013, 22:31
- Репутация: 177
- Откуда: Первоуральск
- Контактная информация:
Re: Разработка приложения для Windows для начинающих
А еще вот например тоже самое ,но данные кладутся в переменную если принята " строка целиком " с символами конец строки возврат кареткиselenur писал(а):если например получено не все сообщение, то можно завести специальную переменную
Код: Выделить всё
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
message = serialPort1.ReadLine();
// listBox1.Items.Add(message); // но вот здесь при попытке написать принятое в лист бокс РУГАЕТСЯ что лист бокс создан в другом потоке и нет доступа
f1(); // пришлось делать ТАК, делегаты долбанные
}
Код: Выделить всё
public void f1()
{
if (listBox1.InvokeRequired)
{
MethodInvoker mi = delegate
{
f1();
};
listBox1.Invoke(mi);
}
else
{
listBox1.Items.Add(message);
}
}
— Мы месяц по Галактике «маму» попоём — и планета у нас в кармане.
- selenur
- Почётный участник
- Сообщения: 4604
- Зарегистрирован: 21 авг 2013, 19:44
- Репутация: 1621
- Настоящее имя: Сергей
- Откуда: Новый Уренгой
- Контактная информация:
Re: Разработка приложения для Windows для начинающих
Для эмуляции ком-портов есть более интуитивно понятная программа, и с большим функционалом Virtual Serial Ports Emulator скачать можно тут: http://www.eterlogic.com/Downloads.html
Выглядит так: Для работы с элементами формы из другого потока можно сделать проще, вот так:
Но нужно понимать что при большом объеме входящих данных, визуальная часть будет виснуть
Выглядит так: Для работы с элементами формы из другого потока можно сделать проще, вот так:
Код: Выделить всё
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
message = serialPort1.ReadLine();
this.Invoke((MethodInvoker)delegate {
listBox1.Items.Add(message);
});
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
-
- Мастер
- Сообщения: 584
- Зарегистрирован: 22 фев 2013, 22:31
- Репутация: 177
- Откуда: Первоуральск
- Контактная информация:
Re: Разработка приложения для Windows для начинающих
Класс !selenur писал(а):другого потока можно сделать проще, вот так:
Вот кстати интересная " засада " :
При попытке отправлять в STM32 число ( float ) из контрола numericUpDown его конвертируеш в строку , а она зараза вместо точек ставит запятую .
И естественно на стороне STM32 функция ATOF ничего с этой байдой сделать не смогет.
Приходилось принудительно менять запятые на точки .
Код: Выделить всё
private void numericUpDown1Pgain_ValueChanged(object sender, EventArgs e)
{
var s = numericUpDown1Pgain.Value.ToString();
if (serialPort1.IsOpen) { serialPort1.WriteLine(("pg"+s.Replace(",", ".") + "!")); }
— Мы месяц по Галактике «маму» попоём — и планета у нас в кармане.
- selenur
- Почётный участник
- Сообщения: 4604
- Зарегистрирован: 21 авг 2013, 19:44
- Репутация: 1621
- Настоящее имя: Сергей
- Откуда: Новый Уренгой
- Контактная информация:
Re: Разработка приложения для Windows для начинающих
Точка, или запятая, да хоть тире, или другой символ в качестве разделителя задается тут:
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
-
- Мастер
- Сообщения: 577
- Зарегистрирован: 23 авг 2013, 18:04
- Репутация: 118
- Откуда: г. Ухта
- Контактная информация:
Re: Разработка приложения для Windows для начинающих
А потом объясняй всем пользователям, почему у него ничего не работает и где этот диалог найти.selenur писал(а):Точка, или запятая, да хоть тире, или другой символ в качестве разделителя задается тут:
Это делается в самом приложении:
Код: Выделить всё
CultureInfo ci = new CultureInfo("ru-RU", true);
ci.NumberFormat.NumberDecimalSeparator = ".";
Thread.CurrentThread.CurrentCulture = ci;
- selenur
- Почётный участник
- Сообщения: 4604
- Зарегистрирован: 21 авг 2013, 19:44
- Репутация: 1621
- Настоящее имя: Сергей
- Откуда: Новый Уренгой
- Контактная информация:
Re: Разработка приложения для Windows для начинающих
Это конечно самый правильный способ, если в программе много мест, работы с числом, а так можно и форматнуть строкуaaleksander писал(а):А потом объясняй всем пользователям, почему у него ничего не работает и где этот диалог найти.selenur писал(а):Точка, или запятая, да хоть тире, или другой символ в качестве разделителя задается тут:
Это делается в самом приложении:Код: Выделить всё
CultureInfo ci = new CultureInfo("ru-RU", true); ci.NumberFormat.NumberDecimalSeparator = "."; Thread.CurrentThread.CurrentCulture = ci;
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/