Нет, пока нужно только глозами...спасибо за помощь!Даниленко Сергей писал(а):Как это сделать "руками-глазами" описано здесь:Кстати, не подскажете, как определить версию уже установленного ПО?
http://www.softlab-nsk.com/rus/forward/qna.html#a2_14
Или нужно программно?
Автоматизация внешних приложений
Модераторы: ElenVR, Людмила, PR
-
- Сообщения: 90
- Зарегистрирован: 04 сен 2008 01:50
- Откуда: Красноярск
-
- Сообщения: 7093
- Зарегистрирован: 26 фев 2004 09:53
- Откуда: Techsupport SoftLab-NSK
-
- Сообщения: 90
- Зарегистрирован: 04 сен 2008 01:50
- Откуда: Красноярск
Здраствуйте!
Вопрос по коду появился. Вот пример из документа:
Вопрос такой: увеличивает ли счетчик ссылок на экземпляр очереди метод CreateQueue?
Если да, то правильно ли я понимаю, что пропущен вызов ptr->Release()?
Если нет, тогда весьма странно, каким же там образом создается экземпляр COM-объекта очереди.
Вопрос по коду появился. Вот пример из документа:
Код: Выделить всё
LPUNKNOWN ptr=0;
HRESULT res=Connection->CreateQueue(&ErrorCode,&ResultCode,QueueName,
(long)NotifyWindow,NotifyMessage,NotifyWParam,NotifyLParam,&ptr));
if (res!=S_OK) {ResultCode=res; return 0;}
if (ErrorCode!=mcSuccess) return 0;
ResultCode=ptr->QueryInterface(IID_ISLMSQueue,(void**)&Queue));
if (ResultCode!=S_OK) return 0;
// готов к работе с сообщениями
return 1;
Если да, то правильно ли я понимаю, что пропущен вызов ptr->Release()?
Если нет, тогда весьма странно, каким же там образом создается экземпляр COM-объекта очереди.
-
- Сообщения: 7093
- Зарегистрирован: 26 фев 2004 09:53
- Откуда: Techsupport SoftLab-NSK
Да, в этом куске кода нужен вызов Release.Если да, то правильно ли я понимаю, что пропущен вызов ptr->Release()?
Последний раз редактировалось Даниленко Сергей 10 сен 2008 09:31, всего редактировалось 1 раз.
-
- Сообщения: 90
- Зарегистрирован: 04 сен 2008 01:50
- Откуда: Красноярск
Спасибо.Даниленко Сергей писал(а):Если да, то правильно ли я понимаю, что пропущен вызов ptr->Release()?
Да, в этом куске кода нужен вызов Release.
Еще момент

После выполнения всех действий порегистрации компонентов сервера сообщений, при потыке создания экземляра класса Connection, возращается ошибка "Class not registered".
Однако, OleView показывает, что библиотеки типов зарегистрированы.
Не подскажете, в чем здесь проблема?
-
- Сообщения: 7093
- Зарегистрирован: 26 фев 2004 09:53
- Откуда: Techsupport SoftLab-NSK
1) Здесь лежит наше тестовое приложение:
ftp://ftp.sl.iae.nsk.su/Public/ForwardT ... MSTest.zip
Попробуйте его запустить на "усеченном" варианте ПО
2)Попробуйте все таки установить ПО ForwardT Software полностью. Это поможет понять все ли необходимые компоненты есть ( или нужно что-то дополнительно) или проблем в вашем коде. В дальнейшем можно будет опять вернуться к минимальному набору компонентов для SLMessageServer.
3)А можно как-нибудь получить кусок кода, в котором происходит ошибка? Можно его скинуть на forward@sl.iae.nsk.su.
4)А .Net Framework 3.0 установлен?
ftp://ftp.sl.iae.nsk.su/Public/ForwardT ... MSTest.zip
Попробуйте его запустить на "усеченном" варианте ПО
2)Попробуйте все таки установить ПО ForwardT Software полностью. Это поможет понять все ли необходимые компоненты есть ( или нужно что-то дополнительно) или проблем в вашем коде. В дальнейшем можно будет опять вернуться к минимальному набору компонентов для SLMessageServer.
3)А можно как-нибудь получить кусок кода, в котором происходит ошибка? Можно его скинуть на forward@sl.iae.nsk.su.
4)А .Net Framework 3.0 установлен?
-
- Сообщения: 90
- Зарегистрирован: 04 сен 2008 01:50
- Откуда: Красноярск
М-да, лажанулся...прошу прощения.Даниленко Сергей писал(а): 4)А .Net Framework 3.0 установлен?
Объекты стали создаваться, но сообщения не приходят, т.е. сервер сообщений запущен, создается слушающее соединение. При запуске плей-листа на OnAir открывается входящее соединение с моей машиной по порту 51051, но в программу сообщения не доходят.
Пробовал и свой тест, и пример на C# из SDK (SLMessageSample), и тест по ссылке выше - одинаково. В очереди нет сообщений.
В OnAir в настройках поставил галку "Отправлять сообщения..." и добавил свою машину, о чем, собсно, свидетельствует открытое на моей машине входящее соединение.
Может еще чего не сделал? В хелпе рылся - ничего не нашел...
-
- Сообщения: 7093
- Зарегистрирован: 26 фев 2004 09:53
- Откуда: Techsupport SoftLab-NSK
-
- Сообщения: 90
- Зарегистрирован: 04 сен 2008 01:50
- Откуда: Красноярск
Хм, может и машины в список добавлять не надо? Они тоже добавляются на закладке "Зеркалирование". Тогда как, в таком случае, сервер узнает куда команды кидать?Даниленко Сергей писал(а):1)Грыжики в программе OnAir в этом случае ставить не надо - они нужны только для опции зеркалирования.

Я пробовал только получать сообщения, создав очередь.Даниленко Сергей писал(а): 2)А в нашей тестовой программе вы пробовали соединиться с OnAir? Есть ли в ней связь?
Можете обяснить подробнее, как с помощью тестовой программы проверить работоспособность связки клиент-сервер?
А то там слишком много кнопок...
А вообще, насколько я понял из примеров, никакого соединения создавать не надо (мне нужно только принимать команды).
Я должен создать на своей стороне Connection и Queue и сидеть ждать. Однако, в этом случае непонятно, откуда сервер узнает, что я жду?
Или он шлет широковещательные запросы в сеть?
PS: Надеюсь, сервер шлет команды по каждому событию, т.е. нет необходимости у элемента плей-листа выставлять какие-нибудь флаги дополнительные?
-
- Сообщения: 57
- Зарегистрирован: 30 май 2007 17:18
kasa, приветствую!
Я сам недавно разбирались со всей этой системой и возможно сумею Вам ответить. Заодно проверим, правильно ли я все понял)
Вы не должны просто сидеть и ждать. Вы посылаете Форварду комманду, а он на нее отвечает. Список комманд пригалался к описанию SLMessageServerSDK.doc
Если хотите, могу выслать исходники моего рабочего приложения. Делает оно следующее - время от времени опрашивает Форвард и получает информацию о текущем проигрываемом файле. В зависимости от этого уже можно делать все что угодно дальше) А если я Вас правильно понял, то вам примерно это и надо.
Я сам недавно разбирались со всей этой системой и возможно сумею Вам ответить. Заодно проверим, правильно ли я все понял)
Вы не должны просто сидеть и ждать. Вы посылаете Форварду комманду, а он на нее отвечает. Список комманд пригалался к описанию SLMessageServerSDK.doc
Если хотите, могу выслать исходники моего рабочего приложения. Делает оно следующее - время от времени опрашивает Форвард и получает информацию о текущем проигрываемом файле. В зависимости от этого уже можно делать все что угодно дальше) А если я Вас правильно понял, то вам примерно это и надо.
-
- Сообщения: 90
- Зарегистрирован: 04 сен 2008 01:50
- Откуда: Красноярск
здравствуйте, krukovna!
спасибо за то, что откликнулись!
однако, тогда я не понимаю, зачем мне создавать очередь сообщений на своей машине? это во всех примерах сделано...
по вашей логике, мне будет достаточно создать соединение...стоп, а через соединение я не могу послать команду, только через очередь...м-да, что-то тут для меня не все интуитивно...
тогда получается, что:
1. я создаю соединение
2. создаю очередь
3. делаю запрос состояния через SendMessage
4. выбираю ответы в виде сообщений через GetMessage
я правильно понял механизЬм?
а если так, то вопрос к разработчикам: а сервер дает ответ синхронно или асинхронно? или так: могу ли я сразу же после отправки запроса забирать ответ?
ЗЫ: а вообще, я каким-то странным образом пропустил главу Опрос состояния приложения FDOnAir в документе...не заметил
спасибо за то, что откликнулись!
однако, тогда я не понимаю, зачем мне создавать очередь сообщений на своей машине? это во всех примерах сделано...
по вашей логике, мне будет достаточно создать соединение...стоп, а через соединение я не могу послать команду, только через очередь...м-да, что-то тут для меня не все интуитивно...
тогда получается, что:
1. я создаю соединение
2. создаю очередь
3. делаю запрос состояния через SendMessage
4. выбираю ответы в виде сообщений через GetMessage
я правильно понял механизЬм?
а если так, то вопрос к разработчикам: а сервер дает ответ синхронно или асинхронно? или так: могу ли я сразу же после отправки запроса забирать ответ?
ЗЫ: а вообще, я каким-то странным образом пропустил главу Опрос состояния приложения FDOnAir в документе...не заметил

-
- Сообщения: 90
- Зарегистрирован: 04 сен 2008 01:50
- Откуда: Красноярск
Хм, я тут подумал...что-то не очень мне нравится перспектива долбить сервер по сети каждую секунду. Да и неправильно это, имхо.
Такой механизм можно использовать, разве что, для пинга сервера, раз в минут пять, на предмет выявления обрыва связи...
Мне кажется, что я бы мог использовать для своей задачи механизм зеркалирования.
Я ведь правильно понимаю, что в этом режиме сервер уже сам шлет команды другому серверу?
А что тогда мешает моей программе прикинуться сервером?
Тогда вопрос такой: как прикинуться сервером?
Такой механизм можно использовать, разве что, для пинга сервера, раз в минут пять, на предмет выявления обрыва связи...
Мне кажется, что я бы мог использовать для своей задачи механизм зеркалирования.
Я ведь правильно понимаю, что в этом режиме сервер уже сам шлет команды другому серверу?
А что тогда мешает моей программе прикинуться сервером?
Тогда вопрос такой: как прикинуться сервером?

-
- Сообщения: 57
- Зарегистрирован: 30 май 2007 17:18
kasa, вроде да, логика именно такая должна быть.
меня тоже смущает вопрос постоянного опроса сервера, он немного поднимался уже вот в этой теме. Но так как другого варианта я не нашел, то пришлось оптимизировать алгоритм опроса. Так как мне нужна информация о состоянии плейлиста, я заранее прикидываю когда нужно опросить в след раз, ну плюс-минус разумеется
.
С другой стороны, что плохого в постоянном опросе? Разговор же идет о "разе в секунды", а не "разы в секунду".
Про зеркалирование я не очень в теме, но вроде для совсем других нужд оно используется. Все же да, хотелось бы получить ответ на этот вопрос.
меня тоже смущает вопрос постоянного опроса сервера, он немного поднимался уже вот в этой теме. Но так как другого варианта я не нашел, то пришлось оптимизировать алгоритм опроса. Так как мне нужна информация о состоянии плейлиста, я заранее прикидываю когда нужно опросить в след раз, ну плюс-минус разумеется

С другой стороны, что плохого в постоянном опросе? Разговор же идет о "разе в секунды", а не "разы в секунду".
Про зеркалирование я не очень в теме, но вроде для совсем других нужд оно используется. Все же да, хотелось бы получить ответ на этот вопрос.
-
- Сообщения: 90
- Зарегистрирован: 04 сен 2008 01:50
- Откуда: Красноярск
Архитектураkrukovna писал(а):С другой стороны, что плохого в постоянном опросе?

Думаю, что цели могут быть и другие, а вот команды те жеkrukovna писал(а): Про зеркалирование я не очень в теме, но вроде для совсем других нужд оно используется. Все же да, хотелось бы получить ответ на этот вопрос.

Предполагаю, что то, что пишется в лог команд, то же и пуляется на те машины, которые указаны в списке настроек зеркалирования...но нужно подтверждение разработчиков...
Сдается мне, что надо просто в своей программе создать очередь с именем "FDOnAir2", ибо для пуляния команд пулятель должен знать название очереди, а мы это название не можем сообщить серверу через настройки...значит, надо использовать стандартное

-
- Сообщения: 57
- Зарегистрирован: 30 май 2007 17:18
согласен, но нужно именноkasa писал(а):Предполагаю, что то, что пишется в лог команд, то же и пуляется на те машины, которые указаны в списке настроек зеркалирования...
kasa писал(а):но нужно подтверждение разработчиков...
Название очереди может быть любое, как я понимаю. Главное указать получателя - т.е. экземпляр OnAir. А он ответит в ту же очередь.kasa писал(а):Сдается мне, что надо просто в своей программе создать очередь с именем "FDOnAir2", ибо для пуляния команд пулятель должен знать название очереди, а мы это название не можем сообщить серверу через настройки...значит, надо использовать стандартное