Есть такое IDE для DSP — Code Composer Studio. Оно умеет общаться с DSP, у него есть COM-интерфейс. Пытаюсь его использовать. На .Net, ибо в C++ я совсем ниасилил использование COM.
Экспортировал type library в assembly. Подключил. Создаю объект.
CodeComposer.Application app = new CodeComposer.Application()
Если при этом программа не запущена, то она начинает запускаться, что отчетливо видно, но потом почему-то терминируется, а при попытках доступа к методам app возникает InvalidCastException — QueryInterface for interface IApplication failed. Вопросы:
— Почему это происходит? Произошла какая-то ошибка, и объект не создался?
— Как узнать, какая именно ошибка произошла? Как узнать статус объекта — создался и готов к работе/не создался/не готов?
— Пару раз оно все-таки отработало корректно, к методам можно было обращаться. Почему?
— Учитывая, что оно создает процесс, можно ли указать home dir и какие-нито другие параметры?
Если же при этом программа запущена, то
CodeComposer.Application app = new CodeComposer.Application()
успешно подцепляется к этой запущенной программе, и ей можно рулить методами. Вопросы:
— Как оно узнает, к какому именно процессу подцепляться? А мне можно по объекту узнать, к чему он прицеплен?
— Как потом отключиться от программы? Есть ли общий способ ее терминировать, когда больше не нужна?
— Как корректно запустить программу, подождать, пока она поднимется, и только тогда подцепиться? С учетом вопросов прошлого абзаца?
Заранее спасибо за ответы.
P.S. API этой штуки у меня нет, ориентируюсь только на названия классов/методов.
P.P.S. Просьба не пинать, с COM работаю первый раз в жизни. Нормальных док не нашел — все они какие-то детсадовские, "выберите компонент такой-то и бросьте на форму", а глубин процесса я пока не понимаю.
P.P.P.S. Где можно почитать хорошую статью про руление приложениями через COM-интерфейс?