DDE и DDEML. Буфер обмена, новая библиотека Windows.
... Все страницы раздела SAT * KSM проекта MY TLE генератор DDE файлов спутникового мониторинга - являются размышлением, направленным на необходимость и обеспечение работоспособности скриптовых сценариев автоматической генерации собственных данных орбит и связей авто настройки программ - для работы в составе единого ПО комплекса отслеживания радио передач спутников - в образовательных и радиолюбительских целях ...
* KSM - kompleks sputnikovogo monitoringa, satellite monitoring complex, частная любительская домашняя наземная станция приёма сигналов космических аппаратов на базе RTL-SDR ...
DDE - буфер обмена сообщений и данных программ в Windows.
Microsoft, Центр разработки Windows, в разделе : Документы, Windows, Обмен данными, Динамический обмен данными сообщает о dynamic data exchange - следующую информацию ...
# Windows предоставляет несколько методов для передачи данных между приложениями, один из которых - протокол DDE, набор сообщений и рекомендаций ... Новая динамическая библиотека DDEML - упрощают задачу DDE ... Вместо прямого доступа - функции DDEML взаимодействия клиент / сервер ... Вместо атомов и указателей на объекты - дескрипторы строк и данных (ID объектов памяти), регистрация имен сервисов для обращения в системе, последовательная реализация протокола DDE ... DDE полностью совместима с DDEML и из-за множества преимуществ - новые приложения должны использовать API DDEML ...
# Поскольку DDE является протоколом, основанным на сообщениях, он не использует функции или библиотеки ... Все транзакции DDE выполняются путем передачи определенных сообщений между скрытыми окнами клиента и сервера ...
# Клиент запрашивает сервер, однако после установления связи - приложения обмениваются данными без дальнейшего участия пользователя ... В теплом режиме сервер передает данные по запросу клиента, в горячем - при изменении данных ... Хотя, соединений, можно открыть несколько - одна связь должна использовать один диалог ... Приложение должно использовать данные - только для чтения ... Стандартный принцип блокировки, разблокировки и освобождения памяти ...
# Clipboard - буфер обмена, набор функций и сообщений для передачи данных приложениями ... Все приложения имеют доступ к буферу обмена и данные могут быть легко переданы между или внутри приложения ... Копирование и вставка рассматривается в документацию по объектной модели компонентов / COM ... Однако - следует учитывать, что DDE это не COM модель, и используются разные методы ...
# Форматы буфера обмена - clipboard может содержать более одного объекта в буфере и конвертировать некоторые - в подходящий формат ... Пользователям не нужно знать об используемых форматах буфера обмена, однако ...
- Стандартные форматы буфера обмена ... Префикс CF_ и 26 заранее определенных форматов обмена данных ...
- Зарегистрированный : собственные данные приложений, которые нельзя перевести в стандартные форматы буфера обмена - регистрируются программами в clipboard под одним именем, что позволяет им общаться друг с другом ...
- Частный : собственный закрытый способ передачи данных, который не требуется регистрировать в системе ...
- Множественный : способ отправки в clipboard одного объекта в разных форматах, от сложных к простым ... Дизайнерский стиль строки может быть считан, как простой текст, смысл данных не будет утерян - и это может не являться проблемой, в разных форматах, для приложения ...
- Синтезированный : неявное автоматическое преобразование части совместимых стандартных форматов, из одного в другой, при запросе отсутствующего ... При существующей поддержке автоматического решения текущих задач, применение предыдущего способа множественных форматов - неэффективно и нецелесообразно ...
- Облачный : игнорируется чтение и запись в историю ...
# Требования для начала инициализации : минимально поддерживаемый клиент - Windows 2000 Professional / Server , заголовок Dde.h, включая Windows.h ...
# rundll32.exe ddeml.dll, NULL ... Попытка запустить DLL через хост-процесс Windows, запускающий программы из динамически подключаемых библиотек - вызовет ошибку : DDEML не является приложением Win32 ...
# autohotkey.com / docs / misc / SendMessageList.htm ... На странице приложения AutoHotkey ( AHK, мощный язык переназначения горячих клавиш, текстовых макросов и сценариев автоматизации для Windows ) - указан список сообщений Windows для параметра Msg в PostMessage и SendMessage, от 0x00 до 0x8000 ... Область 0x3E0 - 0x3E8 обрабатывает сообщения DDE ...
# Использование функций передачи данных между окнами ... PostMessage - это безопасный способ отправки сообщений между окнами в разных доменах или источниках ... Может применяться для инициализации DDE ... SendMessage вызывает функцию приема / отправки данных из идентифицированного окна и ожидает окончания обработки процесса ... Все инициализированные адресные сообщения DDE передаются только через эту функцию ...
# В C++ директива #define определяет идентификатор и последовательность символов, которой будет замещаться идентификатор в коде программы ... #define WM_DDE_INITIATE 0x03E0 ... Обычно, в Dde.h, все адреса - не прописываются ; указывается первый, а остальные, как +1 ...
# Это небольшое исследование имело целью прояснить, что означает обмен данными через DDE ... Выясняется, что общая память и буфер обмена данными / clipboard - это немного не одно и тоже ... Буфер обмена - это область выделенной памяти, прежде всего - для стандартно / поддерживаемых методов любыми программами, свободно и без ограничений ... DDE может быть - и работает в пределах выделенных ресурсов для clipboard (если потокам Windows не выделяется собственная память), но, методы канала обмена - ДДЕ использует - персонализированные ... Неважно, сколько программ объявили общую переменную ДДЕ буфера в качестве памяти - будет назначен единственный идентификатор и все приложения, по очереди - получат доступ к единым данным ... Так достигается обмен через общую память ...
# Более показателен наглядный пример ... Например, драйвер MyDDE от программы Orbitron, с исходными кодами ... Этот пример объяснит только часть полной схемы взаимодействия, передачу настроек отслеживания от программы Orbitron - до COM / USB порта ... Как переданные данные преобразуются в угловые положения приводов слежения - следует искать в схемах ответных частей ...
# Вот, что - указывает автор в примечании к коду :
... Вы можете использовать этот источник для получения данных отслеживания от Orbitron и отправки их на ваше оборудование ротора / радио через интерфейсы COM / LPT / USB ... В зависимости от вашего изобретения - допускаются и другие цели ... Чтобы преобразовать этот исходный код в драйвер, вы должны написать код, специфичный для вашего оборудования, в процедуре UpdateRotorAndRadio ... Пожалуйста, найдите его в конце файла ...
Процедура обновление ротора и радио " Update Rotor And Radio (SatData) " - пожалуйста, напишите здесь поддержку вашего ротора / радиооборудования ... Используйте запись SatData в качестве источника текущих данных отслеживания, отправленных Orbitron ... Эта процедура будет вызываться механизмом DDE после того, как Orbitron внес изменения в данные отслеживания (каждые 1 с, 5 с, 10 с или около того) ...
# В простейшем случае - даже не нужен никакой системный драйвер приемного устройства привода ; данные можно просто отправлять в COM / USB порт, а - будут они считаны / или, нет - это проблема приемного устройства ... Схема обращения к порту, в Паскале, общий вид : ...
Var MyCom: Text; ...
Assign(MyCom, COM1); привязка порта ...
Rewrite(MyCom); ...
WriteLn(MyCom, SatData); запись в порт ...
ReadLn(MyCom, Data); чтение из порта ...
# В настоящее время Паскаль умер, используемый, как вариант - для DOS некромантов ... Развитие языка программирования : Pascal (аналог C) ... Object Pascal (аналог С++) ... Delphi (аналог MS Visual С++) ... И, наконец - PascalABC.NET (аналог Net.Framework ?) ... Приставка T- операторов указывает, что код DDE драйвера написан на Паскале и для других вариантов - нужно искать соответствующие реализации, желательно - с открытым исходным кодом ... Но, для понимания работы схемы управления приводом ориентации, это - не принципиально ... Как и различие протоколов приводов разных производителей ... При определенном навыке - достаточно получить значения переменных из порта и использовать их в собственных целях ...
# В качестве источника DDE данных - можно использовать любые решения, соответствующие задаче и с известным порядком передачи переменных (протоколом), для их успешного дальнейшего использования ... В общем виде, структурная схема привода ориентации, работает следующим образом : ...
Значения считываются с порта и сравниваются с вычисленными по датчику импульсов или текущими по энкодеру ...
Обнаруженное несоответствие преобразуется в поправку, которая с прямой или противоположной / обратной полярностью активирует электромотор привода для / до устранения погрешности ...
Система ориентации изменяет угловое положение осей в соответствии с заданными и останавливается в новом текущем положении до следующей активации ...
Эти расчеты могут быть выполнены, как на стороне привода, так и в драйвере управления, в пределах мощностей ПК ...
# Отладочные платы с отдельным модулем силового каскада управления двигателем - обычно сопровождаются фреймворком для программирования исполнительного кода, что может облегчать выполнение задачи ... Шаговые двигатели вместо электродвигателей постоянного тока - существенно увеличивают точность позиционирования (предположительно, сложность реализации - возрастает, энергопотребление - падает) ... Но, совсем без программирования - не обойтись ; только покупкой готового устройства ...
11:48 28.02.2020
Раздел sat-ksm : список всех страниц ...