Форум программистов, компьютерный форум CyberForum.ru

Старый добрый COMPORT - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Где можно скачать компонент ComPort? http://www.cyberforum.ru/cpp/thread1486579.html
Где можно скачать компонент ComPort? Весь гугл перерыл, ничего толкового найти не удалось. Самое нормальное нашёл тут http://www.torry.net/quicksearchd.php?String=comport&Title=Yes но это триал, насколько я понял.
C++ Определить резидентные драйверы в памяти компьютера /*--------------"Просмотр списка драйверов."--------------*/ #include <dos.h> #include <conio.h> /*-----------------------Константы----------------------- */ #define byte unsigned char #define word unsigned int #define ATR(x,z) if(drv->attr&x){cprintf(" %s\n\r",z);y++;} #define DA(x,y) (struct DR_HEAD *)MK_FP(x,y); #define VSEG 0xb800 /* Сегментный адрес видеопамяти */ #define... http://www.cyberforum.ru/cpp/thread1484395.html
Проектирование программы: методы и литература по теме C++
Собираюсь написать большой серьезный проект и для этого мне необходимо понимать, как правильно спроектировать свою будущую программу. Какую литературу на эту тему прочитать? Что посоветуете?
C++ Контрастирование, прореживание, построение гистограммы tiff изображения и переформатирование в bmp формат
Ребят , кто может , отзовитесь!!! Срочно нужна помощь знающих людей! В этой программе прореживание должно делаться по вот этой формуле \sqrt{\prod_{1,n}{\sqrt{\prod_{1,n}^{ }}}}\alpha. Вообщем, где-то ошибка в прореживании! Помогите пожалуйста. struct TiffParams { UINT64 imageWidth; UINT64 imageHeight; UINT16 samplesPerPixel; UINT64 rowsPerStrip; UINT64 *stripOffsets; UINT64...
C++ Копирование данных из выпадащих списков - есть ли такая программа? http://www.cyberforum.ru/cpp/thread1481497.html
Всем приветы! Сорри, если написал не в ту тему. Очень нужна помощь вот по какому вопросу: есть один сайт государственной технической библиотеки по следующему адресу: ВебИрбис В нем есть поисковик встроенный, как в Гугл, Яндексе и т.п., он выдает данные в виде выпадающего списка. Там очень много интересных слов из химии и других технических наук. Вопрос мой заключается в том: можно с...
C++ Требуется написание транспонированной матрицы на VHDL Всем доброго времени суток! Никак не получается у меня допетрить, что вообще делать тут: Написать и провести тестирование функции и процедуры транспонирования матрицы, элементами которой являются целые положительные числа, выбираемые из множества {0, 1, 2, …, 100}. я так понимаю нужно объявить функцию создания матрицы, где указать её размерность и тип данных, и построить её, потом создать... подробнее

Показать сообщение отдельно
Croessmah
Модератор
Эксперт CЭксперт С++
13133 / 7396 / 828
Регистрация: 27.09.2012
Сообщений: 18,227
Записей в блоге: 3
Завершенные тесты: 1
26.06.2015, 09:28
Цитата Сообщение от Триган Посмотреть сообщение
Можно по подробнее про это?
Про Gtkmm у них хорошая документация на сайте http://www.gtkmm.org/en/documentation.html
На boost::asio::serial_port ссылка выше.
Статья на хабре о boost::asio
Цитата Сообщение от Триган Посмотреть сообщение
Ну и про сам код на с++ а то практически ничего не понятно
Код с некоторыми комментами под спойлером, но всё же нужно будет читать документацию
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include <string>
#include <vector>
#include <functional>
 
#include <boost/asio/serial_port.hpp>
#include <gtkmm.h>
 
class SPWiter
{
public:
    SPWiter( unsigned int baud, const std::string & deviceName )
        : m_serialPort ( m_io_service, deviceName ) //Создаем объект порта, передаем ему io_service и имя порта
    {
        if ( !m_serialPort.is_open() ) //Если порт не открылся, то
        {
            std::cerr << "error: can not open \"" << deviceName << "\" device\n" ; //Выведем сообщение в strerr
            return ;
        }
        //Настройка параметров соединения
        m_serialPort.set_option( boost::asio::serial_port_base::baud_rate( baud ) ) ;
        m_serialPort.set_option( boost::asio::serial_port_base::character_size( 8 ) ) ;
        m_serialPort.set_option( boost::asio::serial_port_base::stop_bits( boost::asio::serial_port_base::stop_bits::one ) ) ;
        m_serialPort.set_option( boost::asio::serial_port_base::parity( boost::asio::serial_port_base::parity::none ) ) ;
        m_serialPort.set_option( boost::asio::serial_port_base::flow_control( boost::asio::serial_port_base::flow_control::none ) ) ;
 
    }
    void write ( const std::vector<char> & data )
    {
        if ( m_serialPort.is_open() ) //Если порт открыт
            m_serialPort.write_some ( boost::asio::buffer ( data ) ) ; //Пишем в него наш вектор
    }
 
    ~SPWiter()
    {
        if ( m_serialPort.is_open() ) { //Если порт открыт
            m_serialPort.cancel(); //Пытаемся заверть все ассинхронные операции
            m_serialPort.close(); //Закрываем порт
        }
        m_io_service.stop(); //Останавливаем цикл обработки
        m_io_service.reset(); //Сбрасываем состояние io_service
    }
private:
    boost::asio::io_service m_io_service ;
    boost::asio::serial_port m_serialPort ;
} ;
 
 
class MainWindow : public Gtk::Window //Наследуемся от класса окна
{
public:
    MainWindow ()
        : writer ( 9600 , "/dev/ttyUSB0" ) //Создаем объект порта, передаем ему скорость 9600 и имя порта (в винде будет COM1, COM2 или как там, не помню)
    {
        set_default_size( 200 , 200 ) ; //Задаем размер окна
 
        m_buttonOn.set_border_width( 10 ) ; //Размер границ элемента
        m_buttonOn.set_label( "LED ON" ) ; //Надпись на кнопке
        //std::bind( &SPWiter::write, &writer, std::vector<char>{'1'} - получим функтор, вызывающий writer.write ( наш_вектор_с_единичкой )
        //Соединяем сигнал clicked с полученным функтором
        m_buttonOn.signal_clicked().connect ( std::bind( &SPWiter::write, &writer, std::vector<char>{'1'} ) ) ;
        //Те же операции с другой кнопкой, только букавки другие на кнопке и в векторе нолик
        m_buttonOff.set_border_width( 10 ) ;
        m_buttonOff.set_label( "LED OFF" ) ;
        m_buttonOff.signal_clicked().connect ( std::bind( &SPWiter::write, &writer, std::vector<char>{'0'} ) ) ;
 
        //Компануем кнопки в вертикальный бокс
        m_mainVBox.pack_start ( m_buttonOn ) ;
        m_mainVBox.pack_start ( m_buttonOff ) ;
        //Добавляем бокс в окно
        add ( m_mainVBox ) ;
        //Отображаемвсех детей
        show_all_children() ;
    }
    ~MainWindow() {}
private:
    Gtk::Button m_buttonOff ;
    Gtk::Button m_buttonOn ;
    Gtk::VBox m_mainVBox ;
    SPWiter writer ;
} ;
 
 
int main( int argc , char ** argv )
{
    Glib::RefPtr < Gtk::Application > application = Gtk::Application::create( argc, argv ) ; //Создаем объект Gtk::Application
    MainWindow mainWindow ; //Создаем наше окно
    mainWindow.set_position( Gtk::WindowPosition::WIN_POS_CENTER  ) ; //Окно пусть будет по центру экрана
    return application->run( mainWindow ) ; //Запускаем цикл
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru