2013-11-08 4 views
1

Мое приложение отлично работает, пока я не обновил версию API, которую я использовал в своих ссылках.
Конкретно я пошел от CLDATAPI.dll версии 2. .0.0 до 2. .0.0Недопустимая подсистема

Теперь я получаю следующее сообщение об ошибке:
E01000261122 Failed to get program running state - Invalid sub system for this operation

я написал приложение, которое использует несколько функций API, включая этот:

Private Function GetCycleComplete() As Boolean 
     Try 
     m_blnCycleComplete = m_Program.CycleComplete(MachineSideEnum.LeftSide) 
     Return m_blnCycleComplete 
     Catch ex As Exception 
      Throw 
     End Try 
    End Function 

Станок Я использую для тестирования LT-2000-MY, работающий с OSP-P300L.
Я понимаю, что моя проблема должна быть связана с подсистемой «MachineSideEnum.LeftSide».

  • Зачем просто менять эффект версии API?
  • О чем говорит LeftSide/RightSide?
    • У этой машины есть W-ось, это связано со стороной шпинделя?
    • Если речь идет о двухсторонних машинах SIDE, почему это было раньше, но не сейчас?

ответ

2

Для согласования между двумя сторонами машины и односторонней машиной R представляет собой правую сторону машины на двухстороннем механизме, а также по умолчанию для односторонней машины.

L представляет собой левую сторону 2-стороннего механизма, и он не доступен на одной боковой машине.

Спецификация API изменена для этой цели.

По умолчанию каждый объект создается с помощью NC_AL, который представляет данные, относящиеся к верхнему левому шпинделю и башне, и всегда доступен для всех моделей станков. NC_RUN предоставит данные о текущем выборе шпинделя или башни.

Необходимо установить правильную подсистему для доступа к определенной области данных, относящейся к шпинделю и башне или стороне машинных данных, если это применимо.

2

Это просто дикое предположение, но вы явно настройки подсистемы на вашем объекте CProgram с SetSubSystem?

Я прошу об этом, потому что некоторое время назад нам пришлось рассмотреть некоторые из нашего кода, потому что подсистема по умолчанию для объектов API данных изменилась с SubSystemEnum.NC_RUN на SubSystemEnum.NC_AL.

Если что-то подобное произошло, а по умолчанию было изменено на подсистему, не поддерживаемую на вашем компьютере, это объясняет, почему она сломалась после обновления API.

Я не знаю, почему значение по умолчанию изменится на что-то неподдерживаемое на вашем компьютере, но вы должны иметь возможность проверить примечания к выпуску или документацию SubSystemEnum.

MachineSideEnum относится к параллельным 2-шпиндельным машинам. Документация CycleComplete предполагает, что вы должны передать MachineSideEnum.LeftSide, если у вашей машины нет этой спецификации, которую вы делаете, поэтому я ожидаю, что это не проблема.

+0

Я проверю в понедельник, но я уверен, что просто устанавливаю и забываю подсистему по умолчанию для NC_AL. Хороший вопрос о заметках о выпуске, я еще не проверял их. Я буду обновлять свой вопрос, пока продолжаю отлаживать. Спасибо за ваш вклад! О, и мне нравится ваш WordPress. –

+1

После обсуждения с коллегой я обнаружил, что по умолчанию «MachineSideEnum» изменился, и он не отмечен в примечаниях к выпуску. Он должен вскоре отправить ответ с объяснением. Спасибо за ваш ответ, так как оказалось, что он был _VERY_ близко. –

Смежные вопросы