Π—Π°ΠΊΠ°Π·Π°Ρ‚ΡŒ курсовыС, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅, Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚Ρ‹...
ΠžΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° Π·Π°ΠΊΠ°Π·. НСдорого!

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° класса взаимодСйствия основного процСсса ΠΈ модуля ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ слово ΠΎΠ±Ρ‰Π΅ΠΉ памяти Π΄Π°Π½Π½Ρ‹Ρ… помСщаСтся ΠΊΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ MegaLib. Π”Π°Π»Π΅Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹Π΅, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅. ПослС ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±ΡƒΡ„Π΅Ρ€Π΅ ΠΎΠ±ΠΌΠ΅Π½Π° Π² ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ отправляСтся сообщСниС EXECUT_MEGALIB_APP. Π˜ΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅Ρ‚ Π΅Π΅. Π’ ΡΠ»ΡƒΡ‡Π°Π΅ Ссли… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° класса взаимодСйствия основного процСсса ΠΈ модуля ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Для обСспСчСния взаимодСйствия основного процСсса ΠΈ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ модуля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ цСлСсообразно ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ класс ΠΎΠ±ΠΌΠ΅Π½Π° TCWClass (исходныС ΠΊΠΎΠ΄Ρ‹ прСдставлСны Π² Ρ„Π°ΠΉΠ»Π°Ρ… CWManager. cpp ΠΈ CWManager. h). Π”Π°Π½Π½Ρ‹ΠΉ класс Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ MegaLib ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ модуля ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ процСсса Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΎΡ‚ Π½Π΅ΠΏΠΎΡΡ€Π΅Π΄ΡΡ‚Π²Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΊ Π²Ρ‹Π·ΠΎΠ²Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ· ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ прилоТСния, ΠΊΠΎΠΈΠΌ являСтся ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. НапримСр, Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ маски Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€Π° двиТСния MDCHLoadMask Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

НСпосрСдствСнный Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

MDCHLoadMask (Channel, VOID *Msk);

Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· класс ΠΈΠ· ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ модуля:

CWClass[Π‘hannel-Π‘hannel/CW_Number*CW_Number]->CW_MDCHLoadMask (Channel/CW_Number, VOID *Msk);

Π“Π΄Π΅: Channel — Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠ°Π½Π°Π»Π°, Msk — ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΌΠ°ΡΡΠΈΠ² маски, CW_NumberколичСство ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.

Для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠ°Π½Π°Π»ΠΎΠ² Π² ΠΌΠ½ΠΎΠ³ΠΎΠΊΠ°Π½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ цСлСсообразно ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠ°Π½Π°Π»ΠΎΠ². НапримСр, ΠΏΡ€ΠΈ использовании 16 ΠΊΠ°Π½Π°Π»ΠΎΠ² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ 8-ΠΈ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΈΠ· 2-Ρ… ΠΊΠ°Π½Π°Π»ΠΎΠ². ΠŸΡ€ΠΈ этом Π±ΡƒΠ΄Π΅Ρ‚ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ массив ΠΈΠ· 8-ΠΈ классов взаимодСйствия, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ 2 ΠΊΠ°Π½Π°Π»Π°. ΠŸΡ€ΠΈ этом индСкс модуля Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ: Π‘hannel-Π‘hannel/CW_Number*CW_Number, Π° Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠ°Π½Π°Π»Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊ: Channel/CW_Number. Π Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ Π½ΠΎΠΌΠ΅Ρ€Π° ΠΊΠ°Π½Π°Π»ΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ распрСдСлСны ΠΌΠ΅ΠΆΠ΄Ρƒ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹ΠΌΠΈ модулями ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

РаспрСдСлСниС ΠΊΠ°Π½Π°Π»ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ модулями.

Рисунок 10. РаспрСдСлСниС ΠΊΠ°Π½Π°Π»ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ модулями Основной ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ осущСствляСтся ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ прилоТСниями, Π° ΠΏΡ€ΠΎΡΡ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, прСдставлСнныС Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ соотвСтствия ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для осущСствлСния дСтСктирования двиТСния:

Π’Π°Π±Π»ΠΈΡ†Π° 2.

Ѐункция класса.

Ѐункция MegaLib.

НазначСниС.

CW_MPCreateEx.

MPCreateEx.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ части рСсурсов Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

CW_MPRelease.

MPRelease.

ОсвобоТдСниС рСсурсов Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

CW_MDCHSetParam.

MDCHSetParam.

Установка исходных ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² дСтСктирования.

CW_MDCHSetChannelProperty.

MDCHSetChannelProperty.

Установка ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ изобраТСния Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€Π° двиТСния.

CW_MDCHLoadMask.

MDCHLoadMask.

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° маски ΠΊΠ°Π½Π°Π»Π°.

CW_MDCHRestart.

MDCHRestart.

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΊΠ°Π½Π°Π»Π° Π² ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠ΅ состояниС.

CW_MDCHSetFrameParam.

;

Установка ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² изобраТСния для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ.

CW_MDCHPutData.

;

Π—Π°ΠΏΠΈΡΡŒ Π±Π»ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

CW_MDCHCheckData.

;

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ„Π»Π°Π³Π° состояния ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ модуля.

CW_MDCHGetData.

;

Π§Ρ‚Π΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

CW_MDCHSetFlag.

;

Установка Ρ„Π»Π°Π³Π° состояния ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ модуля.

На Π΄Π°Π½Π½Ρ‹ΠΉ класс Π²ΠΎΠ·Π»ΠΎΠΆΠ΅Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ основныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Запуск ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ модуля ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° интСрфСйса ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌ ΠΈ ΠΊΠ»Π°ΡΡΠΎΠΌ;

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ всСх Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, прСдставлСнных Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅;

ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ±ΠΌΠ΅Π½Π° исходными Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ:

Π§Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΡŒ Ρ„Π»Π°Π³ΠΎΠ² состояния ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ модуля;

Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ модуля послС окончания Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Запуск ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ модуля осущСствляСтся ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° CW_MPCreateEx. Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ осущСствляСт ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ части рСсурсов Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ MegaLib для выполнСния ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ Π²Π²ΠΎΠ΄Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, дСтСктирования двиТСния. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ρ‡Π΅Ρ€Π΅Π· класс запись выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

CWClass->CW_MPCreateEx (0,NumberMD, 0,0);

Π“Π΄Π΅: NumberMD — число ΠΊΠ°Π½Π°Π»ΠΎΠ² дСтСктирования двиТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ.

Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ осущСствляСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ наличия ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ модуля Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΈ Π² ΡΠ»ΡƒΡ‡Π°Π΅ Π΅Π³ΠΎ отсутствия осущСствляСт Π΅Π³ΠΎ запуск.

WinCW = FindWindow («TChannelWork» ," MegaPixel Channel Work");

if (WinCW==NULL) {.

sprintf (Section," %smpchannelmng.exe", CW_AlgPath);

WinExec (Section, SW_SHOW);

WinCW = FindWindow («TChannelWork» ," MegaPixel Channel Work");

if (WinCW==NULL) return 1;

ΠŸΡ€ΠΈ ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ модуля Π½Π°Π·Π½Π°Ρ‡Π°Π΅ΠΌ Π΅ΠΌΡƒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ имя Π² ΡΠΈΡΡ‚Π΅ΠΌΠ΅:

sprintf (Section," MegaPixel Channels Application %08X-%08X" ,(UINT)this, GetCurrentProcessId ());

SetWindowText (WinCW, Section);

Π’ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΊΠ»Π°ΡΡ ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ процСсса.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΌΠ΅ΠΆΠ΄Ρƒ классом ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ: посрСдством ΠΎΠ±Ρ‰Π΅ΠΉ памяти для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ массивов Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° Ρ„Π»Π°Π³Π°ΠΌΠΈ состояний, ΠΈ ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠΎΠ²Π΅Ρ‰Π°ΡŽΡ‚ ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π΅ ΠΎΠ±ΠΌΠ΅Π½Π°. ΠžΠ±Ρ‰Π°Ρ ΠΏΠ°ΠΌΡΡ‚ΡŒ состоит ΠΈΠ· Π΄Π²ΡƒΡ… ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… областСй ΠΎΠ±Ρ‰Π΅ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти: памяти Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠ°ΠΌΡΡ‚ΠΈ Ρ„Π»Π°Π³ΠΎΠ² для ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ нСсанкционированного измСнСния Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎ Π²Ρ€Π΅ΠΌΡ осущСствлСния асинхронного ΠΎΠ±ΠΌΠ΅Π½Π°.

sprintf (Section," %smpchannelmng_m%d.exc", CW_AlgPath, NumberCW);

MapFileHandle = CreateFile (Section,.

GENERIC_READ | GENERIC_WRITE,.

FILE_SHARE_READ | FILE_SHARE_WRITE,.

NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_TEMPORARY, NULL);

sprintf (Section," MegaPixel Channels Application Maps %08X-%08X" ,(UINT)this, GetCurrentProcessId ());

MapHandle = CreateFileMapping (MapFileHandle, NULL, PAGE_ READWRITE, 0, BufferSize, Section);

MappedPointer= MapViewOfFile (MapHandle, FILE_MAP_WRITE | FILE_MAP_READ, 0, 0, BufferSize);

sprintf (Section," %smpchannelmng_f%d.exc", CW_AlgPath, NumberCW);

MapFileHandleF = CreateFile (Section,.

GENERIC_READ | GENERIC_WRITE,.

FILE_SHARE_READ | FILE_SHARE_WRITE,.

NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_TEMPORARY, NULL);

sprintf (Section," MegaPixel Channels Application Flags %08X-%08X" ,(UINT)this, GetCurrentProcessId ());

MapHandleF = CreateFileMapping (MapFileHandleF, NULL, PAGE_READWRITE, 0, MAX_ENABLED_CHANNELS*4*sizeof (UINT), Section);

MappedPointerF= MapViewOfFile (MapHandleF, FILE_MAP_WRITE | FILE_MAP_READ, 0, 0, MAX_ENABLED_CHANNELS*4*sizeof (UINT));

ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΎΠ±Ρ‰Π΅ΠΉ памяти осущСствляСм Ρ‡Π΅Ρ€Π΅Π· Ρ„Π°ΠΉΠ» ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹ΠΉ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти. Для этого ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» с ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса, ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅ΠΌ Π΅Π³ΠΎ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Π΄Π°Π½Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти.

Π’Ρ‚ΠΎΡ€Ρ‹ΠΌ этапом установлСния интСрфСйса являСтся ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ модуля ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… соСдинСния. Для этого осущСствляСм ΠΎΠ±ΠΌΠ΅Π½ сообщСниями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅:

SendMessage (WinCW, WM_USER, SETBUFFERSIZE_MEGALIB_APP,(LPARAM)BufferSize);

SendMessage (WinCW, WM_USER, PARENT_MEGALIB_APP,(LPARAM)ParentWin);

SendMessage (WinCW, WM_USER, INIT_MEGALIB_APP,(LPARAM)this;

SendMessage (WinCW, WM_USER, OPEN_MEGALIB_APP,(LPARAM)GetCurrentProcessId ());

Π’ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±ΡƒΡ„Π΅Ρ€Π° ΠΎΠ±ΠΌΠ΅Π½Π°, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΎΠΊΠ½ΠΎ основного процСсса, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ класс ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ процСсса. ПослСдний ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π²Π°ΠΆΠ΅Π½ для осущСствлСния Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ модуля ΠΈΠ· ΠΏΠ°ΠΌΡΡ‚ΠΈ Π² ΡΠ»ΡƒΡ‡Π°Π΅ Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠ³ΠΎ прСкращСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ основного процСсса.

ПослСдним шагом являСтся ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΏΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² ΡΠ°ΠΌΠΎΠΌ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ Ρ‡Π΅Ρ€Π΅Π· установлСнный интСрфСйс:

  • *((UINT *)MappedPointer+0) = CC_MPCreateEx;
  • *((UINT *)MappedPointer+1) = 0;
  • *((UINT *)MappedPointer+2) = NumberMD;
  • *((UINT *)MappedPointer+3) = 0;
  • *((UINT *)MappedPointer+4) = 0;

SendMessage (WinCW, WM_USER, EXECUTE_MEGALIB_APP, NULL);

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ слово ΠΎΠ±Ρ‰Π΅ΠΉ памяти Π΄Π°Π½Π½Ρ‹Ρ… помСщаСтся ΠΊΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ MegaLib. Π”Π°Π»Π΅Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹Π΅, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅. ПослС ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±ΡƒΡ„Π΅Ρ€Π΅ ΠΎΠ±ΠΌΠ΅Π½Π° Π² ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ отправляСтся сообщСниС EXECUT_MEGALIB_APP. Π˜ΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅Ρ‚ Π΅Π΅. Π’ ΡΠ»ΡƒΡ‡Π°Π΅ Ссли ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ трСбуСтся ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΠΈΡ… Π² Π±ΡƒΡ„Π΅Ρ€ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌΡƒ процСссу. ΠŸΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°ΠΌΡΡ‚ΡŒ Ρ„Π»Π°Π³ΠΎΠ² ΠΎΠ±Π° процСсса ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ слСдят Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ состояния ΠΎΠ±Ρ‰Π΅ΠΉ ячСйки памяти ΠΈ ΠΏΡ€ΠΈ Π΅Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎ Π½Π°Ρ‡Π°Π»Π΅ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ΅Π½Π°.

Класс содСрТит Π²Ρ‹Π·ΠΎΠ² всСх Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ MegaLib. Но Π΅ΡΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΡ… Π½Π΅ΠΏΠΎΡΡ€Π΅Π΄ΡΡ‚Π²Π΅Π½Π½ΠΎ, Ρ‚ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° Π½Π΅ ΠΎΡΡƒΡ‰Π΅ΡΡ‚вится, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ процСсс ΠΎΠΆΠΈΠ΄Π°Π» Π±Ρ‹ окончания выполнСния ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΈ Π²ΡΠ΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎ Π±Ρ‹ ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…. Для ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ситуации Π² ΠΊΠ»Π°ΡΡ Π²Π²Π΅Π΄Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обСспСчиваСт ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ исходных Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ, размСщСния этих Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΌΡƒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Ρƒ ΠΈΠ· ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΎΠ±ΠΌΠ΅Π½Π°:

CWClass->CW_MDCHPutData (Channel, void *imgbuf);

Π“Π΄Π΅: Channel — Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠ°Π½Π°Π»Π° дСтСктирования двиТСния Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ модуля, ImgBuffer — Π±ΡƒΡ„Π΅Ρ€ с ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ.

Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΡΠ»ΡƒΡ‡Π°Π΅ Π΅Π³ΠΎ готовности ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ ΠΊΠ°Π½Π°Π»Ρƒ. Π”Π°Π½Π½Ρ‹Π΅ для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠ°Π½Π°Π»ΠΎΠ² Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ модуля Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ поступлСния ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ для ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ «ΠΏΡ€ΠΎΡΡ‚оя» .

ПослС окончания ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ изобраТСния ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΊΠ°Π½Π°Π»Ρƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ считан ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅:

CWClass->CW_MDCHGetData (Channel, MOTIONRESULT *MotResult, char *mask);

Π“Π΄Π΅: Channel — Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠ°Π½Π°Π»Π° дСтСктирования двиТСния Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ модуля, MotResult — структура Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, mask = Π±ΡƒΡ„Π΅Ρ€ Π·ΠΎΠ½ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠΉ.

БостояниС ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ модуля ΠΈ Π³ΠΎΡ‚ΠΎΠ²Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… опрСдСляСтся ΠΏΡƒΡ‚Π΅ΠΌ Π°Π½Π°Π»ΠΈΠ·Π° Ρ„Π»Π°Π³Π° ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅:

Flag = CWClass->CW_MDCHCheckData (Channel).

Π“Π΄Π΅: Channel — Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠ°Π½Π°Π»Π° дСтСктирования двиТСния Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ модуля, Flag — состояниС модуля.

Π˜ΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Ρ‚Ρ€Π΅Ρ… состояниях:

FLAG_EMPTY — ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π³ΠΎΡ‚ΠΎΠ² ΠΊ ΠΏΡ€ΠΈΠ΅ΠΌΡƒ Π΄Π°Π½Π½Ρ‹Ρ…;

FLAG_ACTIVE — модСль ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ…;

FLAG_READY — ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π³ΠΎΡ‚ΠΎΠ² ΠΊ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ состояниС ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ модуля ΠΈΠ· Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ процСсса ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅:

CWClass->CW_MDCHSetFlag (Channel, Flag);

Π“Π΄Π΅: Channel — Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠ°Π½Π°Π»Π° дСтСктирования двиТСния Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ модуля, Flag — состояниС модуля.

Данная функция позволяСт пСрСвСсти ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΠ· ΡΠΎΡΡ‚ояния FLAG_READY Π² ΡΠΎΡΡ‚ояниС FLAG_EMPTY послС чтСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Или ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ модуля ΠΈΠ· ΡΠΎΡΡ‚ояния FLAG_ACTIVE Π² ΡΠΎΡΡ‚ояниС FLAG_EMPTY.

ПослС окончания Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ осущСствляСтся очистка рСсурсов ΠΏΡƒΡ‚Π΅ΠΌ выполнСния ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

CWClass->CW_MPRelease ();

По Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ происходит освобоТдСниС распрСдСлСнных рСсурсов ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ модуля ΠΏΡƒΡ‚Π΅ΠΌ выполнСния ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄:

*((UINT *)MappedPointer+0) = CC_MPRelease;

SendMessage (WinCW, WM_USER, EXECUTE_MEGALIB_APP, NULL);

SendMessage (WinCW, WM_USER, CLOSE_MEGALIB_APP, NULL);

Π’ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ MegaLib ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° освобоТдСния рСсурсов ΠΎΠ±Ρ‰Π΅ΠΉ памяти ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ Ρ„Π»Π°Π³Π°ΠΌΠΈ — CLOSE_MEGALIB_APP. По Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ осущСствляСтся ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ модуля. ПослС ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΡ‚ ΠΎΠ±Ρ‰ΠΈΡ… рСсурсов осущСствляСтся освобоТдСниС рСсурсов класса:

if (MappedPointer) UnmapViewOfFile (MappedPointer);

if (MapHandle) CloseHandle (MapHandle);

if (MapFileHandle) CloseHandle (MapFileHandle);

sprintf (Section," %smpchannelmng_m%d.exc", CW_AlgPath, NumberCW);

DeleteFile (Section);

MappedPointer=NULL;

MapHandle=NULL;

MapFileHandle=NULL;

if (MappedPointerF) UnmapViewOfFile (MappedPointerF);

if (MapHandleF) CloseHandle (MapHandleF);

if (MapFileHandleF) CloseHandle (MapFileHandleF);

sprintf (Section," %smpchannelmng_f%d.exc", CW_AlgPath, NumberCW);

DeleteFile (Section);

MappedPointerF=NULL;

MapHandleF=NULL;

MapFileHandleF=NULL;

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ выполняСтся Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ отобраТСния Ρ„Π°ΠΉΠ»Π° ΠΎΠ±ΠΌΠ΅Π½Π° Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ, освобоТдСниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ памяти, Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»ΠΎΠΌ ΠΎΠ±ΠΌΠ΅Π½Π° с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π΅Π³ΠΎ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ. АналогичныС дСйствия Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ для ΠΎΠ±Ρ‰Π΅ΠΉ памяти Ρ„Π»Π°Π³ΠΎΠ².

Π¦Π΅Π»Π΅ΡΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ создания ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ класса взаимодСйствия обусловлСна сокращСниСм Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ создания ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π΅ Π½Π°Π΄ΠΎ Π·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎΠ± ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»Π΅Π½ΠΈΠΈ связи ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ модулями, Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Π€Π°ΠΉΠ»Ρ‹ с ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠ΄Π°ΠΌΠΈ класса ΠΈ Ρ„Π°ΠΉΠ» ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ модуля ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² ΡΠΎΡΡ‚Π°Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° MegaLibV1.2 для использования ΠΏΡ€ΠΈ создании высокоскоростных ΠΌΠ½ΠΎΠ³ΠΎΠΊΠ°Π½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ