Форум программистов, компьютерный форум, киберфорум
C/C++
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C/C++ Экспорт таблицы из DBgrid в шаблон Word Добрый день. Имеется таблица в DBGrid. Её необходимо вставить в шаблон документа word. Задача сразу показалась не сложная: в шаблоне документа прописываем "уникальные идентификаторы", которые... zena1, что мешает программно добавлять строчки в таблицу? https://www.cyberforum.ru/ c-cpp/ thread1840548.html C/C++ Невозможно преобразовать "const _GUID" в "DllCustomWrapper::IDll *" Доброго времени суток, Не знаю даже куда писать, так что извиняюсь, если попал не туда В универе дали задание, запустить библиотеку(Написанную на шарпе) через rundll32 Проблема в том, что такая... Demaskinas, а эта библиотека вообще так может? вы пробовали ее вызвать ну скажем в VBA? https://www.cyberforum.ru/ c-cpp/ thread1830110.html
Как передать указатель в функцию C/C++
Как реализовать передачу HWND в качестве параметра функции? В наборе типов для параметров метода нет типа HWND. Есть тип OLE_HANDLE но он не помог. Задача такая: есть ActivX в виде dll содержащий... VT_PTR, VT_INT_PTR, VT_UINT_PTR
C/C++ Вставка изображения в Word https://www.cyberforum.ru/ c-cpp/ thread1801049.html
Приветствую. Возникла задача вставки изображения из внешнего приложения в активный документ Microsoft Word. Насколько я понял, подобные манипуляции можно проводить с помощью COM-объектов, но я пока... iRomul, к сожалению с QT дело не имел но копать могу сказать куда - берете ворд, включаете запись макроса, делаете то что нужно, останавливаете запись, открываете VBA и там будет нужный вам код -...
C/C++ BHO многопоточность
Как сделать что бы при отработки события OnDocumentComplete обработка кода длительного не мешала пользователю работать с браузером. Сейчас браузер просто зависает. Если через потоки решается, то...
C++ ODBC MS SQL SERVER C/C++
Всем доброго времени суток, пытаюсь разобраться как подключится к MS SQL через ODBC. Есть ли книги по данной теме или простой рабочий пример где подключаются к базе MyBase и выгружают от туда данные... Arguleon, почему просто не достать данные через ADO?
C/C++ Использование OLE сервера в проекте Visual Studio C++ 2008 Доброго времени суток. Имеется динамическая библиотека (OLE Server) для работы с фискальным принтером. Как её подключить и использовать в проекте Visual Studio C++ 2008? Библиотека 32-х разрядная,... Oleg_84, обычно для подключения используют директивы. например (если все в DLL) #import "c:\program files (x86)\common files\system\ado\msadox.dll" или (если есть библиотека типов) #import... https://www.cyberforum.ru/ c-cpp/ thread1801951.html C/C++ BHO для Internet Explorer https://www.cyberforum.ru/ c-cpp/ thread1842153.html
Здравствуйте, кто знает, как реализовать автоматический запуск плагина (BHO для Internet Explorer). Что бы при открытии ie или создание новой вкладки, для нее плагин активировался сам? Если BHO сделан правильно, то он сам "цепляется" к каждому запущенному экземпляру IE и, соответственно, к кажой новой открываемой вкладке. Я никогда не видел, чтобы BHO работал как-то иначе.
C/C++ Добавление картинки в Excel https://www.cyberforum.ru/ c-cpp/ thread1808755.html
Доброго времени суток Вот только начинаю разбираться с OLE, не получается вставить картинку, выдаёт ошибку неизвестного имени, подскажите пожалуйста что не так... void __fastcall... Израдор, 1 скажи хоть на какой строке выдает 2 разберись с экранированием слешей - смущает \test.jpg вместо \\test.jpg 3 может опечатка InsertPictur вместо InsertPicture
C/C++ Библиотека позволяющая создавать и редактировать документы Microsoft Word https://www.cyberforum.ru/ c-cpp/ thread1820179.html
Существуют ли библиотеки для создания и редактирования документов Microsoft Word. OLE не подходит. 0x0152, формат открытым вроде стал - спецификацию в руки и вперёд. Можно ещё работать с документами ворд через оле опен офиса если вы о лицензиях переживаете
C/C++ Внесение текста в IHTMLElement https://www.cyberforum.ru/ c-cpp/ thread1816297.html
Пробовал так: VARIANT varIn; varIn.vt=VT_BSTR; varIn.bstrVal=strText.AllocSysString(); pHtmlElem->setAttribute(L"value", varIn); И так: Обычно используется IHTMLInputElement + put_value. Скажем, вот код, который прекрасно заполняет форму (C++ Builder, если что) :...
C/C++ Не получается вызвать событие onDocumentComplete в IE Пишу дополнение для IE. Есть необходимость после полной загрузки страницы выполнять действия. У меня не получается зарегистрировать событие. Так как не получает интерфейс браузера. Проект... Когда я разрабатывал BHO для Internet Explorer, то получал интерфейс IWebBrowser2 по-другому: у IUnknown, который передается в метод IObjectWithSite::SetSite, надо сначала запросить через... https://www.cyberforum.ru/ c-cpp/ thread1841505.html
2 / 2 / 1
Регистрация: 10.11.2016
Сообщений: 94
0

Блок управления и rs 232 - C/C++ - Ответ 9749859

10.11.2016, 12:20. Показов 2550. Ответов 13
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток, форумчане. Сразу перейду к делу, есть блок управления двумя фотоприемниками и затворами, нужно программно обеспечить проведение эксперимента с использованием этих устройств, есть код на c# нужно переписать на c++, либо написать подобный, чем я и занялся.

Вступление:
Удаленный компьютер (PC) всегда мастер (master) на линии, устройство (УС) всегда раб (slave).

Обмен данными происходит в пакетном режиме.
Начало пакета это байт 0x55.

Первый байт – байт статуса пакета, распределение битов в этом байте:
биты 0 – 4 это адрес устройства (0x00..0x01F; 0..31),
биты 5 и 6 длина данных (бит 0x20 и бит 0x40):
0b00 – один байт
0b01 – двухбайтовое число (целое)
0b10 – резервный параметр
0b11 – четырехбайтовое число (плавающее)
бит 7 (0x80) определяет тип операции
1- чтение из прибора,
0 - запись в прибор
Второй и Третий байт – 16 разрядный адрес данных в приборе.
Второй байт - старший байт адреса,
Третий байт – младший байт адреса.
Байты 4, 5, 6, 7 – байты данных.
Для байтовых операций данные – это байт 7.
Для двухбайтовых операций – байты 6-7.
Байт 8 это последний байт – контрольная сумма.
Контрольная сумма это сумма байтов с первого по 8. Для вычисления контрольной суммы байты складываются как беззнаковые 8 битные числа (unsigned char).

Если тип операции – запись, то устройство (SLAVE) игнорирует байты данных.
Если тип операции чтение, то устройство (SLAVE) отправляет тот же пакет, только данные другие.
Поскольку PC всегда мастер, то обмен данными происходит только по команде со стороны PC.
Прибор в ответ отправляет такой же пакет.

Суть проблемы:
1) Serial port не отвечает на пакеты, или отвечает на предыдущие спустя несколько пакетов.
Пример:
Чтобы ввести устройство в режим "измерение" (идет считывание с фотоприемников, моргают затворы) нужно записать задержки в мс (в пределах 1 секунды) на 3 стадии работы:
stad1 - задержка на стадию 1 (время когда оба затвора открыты) это 2 байта (unsigned int) по адресу 0xDF

stad2 - задержка на стадию 2 (затвор 2 - закрыт; затвор 1 - открыт) это 2 байта (unsigned int) по адресу 0xE1

stad3 - задержка на стадию 3 (оба затвора закрыты) это 2 байта (unsigned int) по адресу 0xE3
Как я это реализовал:
C++ (Qt)
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
    //Delay 1 (байт для записи первой задержки)
    zad1.resize(9);
    zad1[0] = 0x55;
    zad1[1] = 0x21;
    zad1[2] = 0;
    zad1[3] = 0xDF;
    zad1[4] = 0;
    zad1[5] = 0;
    if (zad1in > 256) //условие если длительность задержки больше 256 (режим двух двухбайтовых числа)
    {
    zad1[6] = 1;
    zad1[7] = (zad1in - 256);
    }
    else //если длительность задержки меньше 256 (режим одного двухбайтового числа)
    {
    zad1[6] = 0;
    zad1[7] = zad1in;
    }
    zad1[8] = zad1[1];
    for (int i=2; i<8; i++)
        zad1[8]=zad1[8]+zad1[i];
 
 
    //Delay 2 (байт для записи второй задержки)
    zad2.resize(9);
    zad2[0] = 0x55;
    zad2[1] = 0x21;
    zad2[2] = 0;
    zad2[3] = 0xE1;
    zad2[4] = 0;
    zad2[5] = 0;
    if (zad2in > 256) //условие если длительность задержки больше 256 (режим двух двухбайтовых числа)
    {
    zad2[6] = 1;
    zad2[7] = (zad2in - 256);
    }
    else //если длительность задержки меньше 256 (режим одного двухбайтового числа)
    {
    zad2[6] = 0;
    zad2[7] = zad2in;
    }
    zad2[8] = zad2[1];
    for (int i=2; i<8; i++)
        zad2[8]=zad2[8]+zad2[i];
 
 
    //Delay 3 (байт для записи третьей задержки)
    zad3.resize(9);
    zad3[0] = 0x55;
    zad3[1] = 0x21;
    zad3[2] = 0;
    zad3[3] = 0xE3;
    zad3[4] = 0;
    zad3[5] = 0;
    if (zad3in > 256) //условие если длительность задержки больше 256 (режим двух двухбайтовых числа)
    {
    zad3[6] = 1;
    zad3[7] = (zad3in - 256);
    }
    else //если длительность задержки меньше 256 (режим одного двухбайтового числа)
    {
    zad3[6] = 0;
    zad3[7] = zad3in;
    }
    zad3[8] = zad3[1];
    for (int i=2; i<8; i++)
        zad3[8]=zad3[8]+zad3[i];
 
    //Запись
    com1->write(zad1);
    com1->write(zad2);
    com1->write(zad3);
В ответ устройство после каждый записи com1->write(...) должно отправлять такой же байт, но устройство отправляет ответ только на команду com1->write(zad1); (отслеживал в режиме HEX программой Advanced Serial Port Monitor)

Как исправить? (пробовал считывать командой com1->read(result, 9); толку нету, так же пробовал использовать функцию com1->waitForBytesWritten(100); после каждой записи, ситуация не поменялась)

Могу скинуть исходники на c# (там все работает как надо) и свои исходники если необходимо

Буду благодарен за любую помощь.

Вернуться к обсуждению:
Блок управления и rs 232 C/C++
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.11.2016, 12:20
Готовые ответы и решения:

Алгоритм или протокол управления эл.двигателем по RS-232
Всем привет! Подскажите плз как бы правильнее реализовать управление эл.двиг. подключенного к МК через RS232. т.е. связка...

rusEfi - блок управления двигателем
Я допроектировал свой ЭБУ до состояния, что могу ездить вокруг дома. Ищу смелых добровольцев, кто бы был готов собрать себе такой блок и...

Блок управления шаговым двигателем.
Доброго времени суток. Возникла у меня необходимость сделать непростое устройство с шаговым двигателем. Но опыта в написании программ нет,...

13
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.11.2016, 12:20
Помогаю со студенческими работами здесь

Блок управления микропрограммной структурой
Добрый вечер всем,не знаю правильную ли выбрал тему,но нужна помощь. Нам дали задание,а я делал только жесткую связь и микропрограммную не...

Блок управления ШД с тремя обмотками
Задача: сделать блок управления для ШД, который можно подцепить к МК. двигатель не один, их два. основная специфика заключается в...

Беспроводной блок управления нагрузками 220В
Приветствую. Ищу информацию о следующем девайсе. Требуется дистанционно (например, брелком) в радиусе примерно 30 метров...

Блок управления подкачивающего насоса котла
Доброго времени суток! Уважаемые форумчане обращаюсь к Вам, за помощью. Требуется составить схему для управления питательного...

Блок управления автоматическим открыванием ворот
Надумал создать свой блок управления открыванием ворот. Пока схемку только накидал, собираюсь плату развести. Вопрос: тут случайно нет...

0
Новые блоги и статьи
Циклы for в Python
py-thonny 17.03.2025
Существует множество ситуаций, когда нам нужно выполнить одно и то же действие несколько раз. Цикл for в Python — настоящий рабочий конь для большинства программистов. Если вам нужно пройтись по всем. . .
Предсказание ветвлений - путь к высокопроизводи­тельному C++
NullReferenced 17.03.2025
В высокопроизводительном программировании на C++ каждый такт процессора на счету. Когда речь заходит о разработке систем с низкой задержкой — будь то высокочастотная торговля, обработка потоковых. . .
Паттерн CQRS в C#
UnmanagedCoder 17.03.2025
Создание сложных корпоративных приложений часто требует нестандартных подходов к архитектуре. Один из таких подходов — паттерн CQRS (Command Query Responsibility Segregation), предлагающий простую,. . .
Паттерн Цепочка ответственности в C#
UnmanagedCoder 17.03.2025
Цепочка ответственности — это поведенческий паттерн проектирования, который позволяет передавать запросы последовательно по цепочке потенциальных обработчиков, пока один из них не обработает запрос. . . .
Создаем микросервисы с NestJS, TCP и Typescript
run.dev 17.03.2025
NestJS — фреймворк, который значительно упрощает создание серверных приложений на Node. js. Его прелесть в том, что он комбинирует концепции ООП, функционального программирования и предлагает. . .
Гексагональная архитектура со Spring Boot
Javaican 17.03.2025
Если вы когда-нибудь сталкивались с ситуацией, когда внесение простых изменений в базу данных или пользовательский интерфейс заставляло вас переписывать весь код, то вы точно оцените элегантность. . .
Позиционировани­е Kafka Consumer и Seek-операции
Javaican 17.03.2025
Что же такое Consumer Seek в Kafka? По сути, это API-метод, который позволяет программно указать, с какой позиции (offset) Consumer должен начать или продолжить чтение данных из партиции. Без этого. . .
Python NumPy: Лучшие практики и примеры
py-thonny 17.03.2025
NumPy (Numerical Python) — одна из ключевых библиотек для научных вычислений в Python. Она превращает Python из просто удобного языка общего назначения в среду для проведения сложных математических. . .
Java Micronaut в Docker: контейнеризация с Maven и Jib
Javaican 16.03.2025
Когда речь заходит о микросервисной архитектуре на Java, фреймворк Micronaut выделяется среди конкурентов. Он создан с учётом особенностей облачных сред и контейнеров, что делает его идеальным. . .
Управление зависимостями в Java: Сравнение Spring, Guice и Dagger 2
Javaican 16.03.2025
Инъекция зависимостей (Dependency Injection, DI) — один из фундаментальных паттернов проектирования, который радикально меняет подход к созданию гибких и тестируемых Java-приложений. Суть этого. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru