Форум программистов, компьютерный форум, киберфорум
C/C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C/C++ BHO многопоточность Как сделать что бы при отработки события OnDocumentComplete обработка кода длительного не мешала пользователю работать с браузером. Сейчас браузер просто зависает. Если через потоки решается, то можно коротенький пример кода https://www.cyberforum.ru/ c-cpp/ thread1846094.html BHO для Internet Explorer C/C++
Здравствуйте, кто знает, как реализовать автоматический запуск плагина (BHO для Internet Explorer). Что бы при открытии ie или создание новой вкладки, для нее плагин активировался сам?
C/C++ Не получается вызвать событие onDocumentComplete в IE https://www.cyberforum.ru/ c-cpp/ thread1841505.html
Пишу дополнение для IE. Есть необходимость после полной загрузки страницы выполнять действия. У меня не получается зарегистрировать событие. Так как не получает интерфейс браузера. Проект создавал по этой инструкции https://msdn.microsoft.com/en-us/library/bb250489(v=vs.85).aspx Но вот в функции SetSite вот эта строчка HRESULT hr = pUnkSite->QueryInterface(IID_IWebBrowser2, (void...
C/C++ Экспорт таблицы из DBgrid в шаблон Word Добрый день. Имеется таблица в DBGrid. Её необходимо вставить в шаблон документа word. Задача сразу показалась не сложная: в шаблоне документа прописываем "уникальные идентификаторы", которые просто заменяем нужными данными при экспорте: vVarApp.OlePropertyGet("Selection") .OlePropertyGet("Find").OleProcedure("Execute", /*FindText=*/ "d1", /*MatchCase=*/false, /*MatchWholeWord=*/ false,... https://www.cyberforum.ru/ c-cpp/ thread1840548.html
C/C++ Невозможно преобразовать "const _GUID" в "DllCustomWrapper::IDll *"
Доброго времени суток, Не знаю даже куда писать, так что извиняюсь, если попал не туда В универе дали задание, запустить библиотеку(Написанную на шарпе) через rundll32 Проблема в том, что такая библиотека не имеет точки входа, не экспортирует функций и запустить ее невозможно. Преподаватель стоит на своем, вот запусти и все Решил написать обертку на нативных плюсах(В VS) и сделать связь через...
C/C++ Как передать указатель в функцию https://www.cyberforum.ru/ c-cpp/ thread1825513.html
Как реализовать передачу HWND в качестве параметра функции? В наборе типов для параметров метода нет типа HWND. Есть тип OLE_HANDLE но он не помог. Задача такая: есть ActivX в виде dll содержащий форму. Нужно по вызову функции из com обьекта получить hфndl формы и сделать ее дочерней другой формы
C/C++ C++ ODBC MS SQL SERVER https://www.cyberforum.ru/ c-cpp/ thread1825153.html
Всем доброго времени суток, пытаюсь разобраться как подключится к MS SQL через ODBC. Есть ли книги по данной теме или простой рабочий пример где подключаются к базе MyBase и выгружают от туда данные из таблицы test.Field("Name")? Добавлено через 22 часа 41 минуту #include <sql.h> #include <sqlext.h> #include <sqlex> SQLHENV henv; SQLHDBC hdbc;
Библиотека позволяющая создавать и редактировать документы Microsoft Word C/C++
Существуют ли библиотеки для создания и редактирования документов Microsoft Word. OLE не подходит.
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); И так:
C/C++ Добавление картинки в Excel https://www.cyberforum.ru/ c-cpp/ thread1808755.html
Доброго времени суток Вот только начинаю разбираться с OLE, не получается вставить картинку, выдаёт ошибку неизвестного имени, подскажите пожалуйста что не так... void __fastcall TForm1::Button1Click(TObject *Sender) { Variant app, //Переменные App-Application bks, //bks-книга bk, //bk-книга shts, //Shts-листы
Использование OLE сервера в проекте Visual Studio C++ 2008 C/C++
Доброго времени суток. Имеется динамическая библиотека (OLE Server) для работы с фискальным принтером. Как её подключить и использовать в проекте Visual Studio C++ 2008? Библиотека 32-х разрядная, но, так как используется в 64-х разрядной Windows 7 - была зарегистрирована 32-разрядной программой regsvr32.exe, находящийся в каталоге C:WindowsSysWOW64. Каким образом можно добавить в проект...
C/C++ Вставка изображения в Word https://www.cyberforum.ru/ c-cpp/ thread1801049.html
Приветствую. Возникла задача вставки изображения из внешнего приложения в активный документ Microsoft Word. Насколько я понял, подобные манипуляции можно проводить с помощью COM-объектов, но я пока не могу понять, с чего мне начать, где искать документацию. Все, что мне на данный момент удалось -- открыть Word, создать документ и напечатать в нем произвольную строку (работаю с помощью ActiveQt):...
2 / 2 / 1
Регистрация: 10.11.2016
Сообщений: 94
0

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

10.11.2016, 12:20. Показов 2441. Ответов 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
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.11.2016, 12:20
Готовые ответы и решения:

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

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

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

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

13
10.11.2016, 12:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.11.2016, 12:20
Помогаю со студенческими работами здесь

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

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

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

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

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru