Для моего проекта мне нужно использовать приложение Unity для связи с роботом ABB.Это можно сделать с помощью ПК SDK от АББ.
Ссылка на SDK: http://developercenter.robotstudio.com/pcsdk
В проекте на C # в VS очень просто реализовать, но я немного борюсьс реализацией Unity.
Версия Unity: (2018.3.8f1)
Я попытался добавить файлы .dll (ABB.Robotics.Controllers.PC / RobotStudio.Services.RobApi.Desktop/ RobotStudio.Services.RobApi) в Unity, поместив их в папку активов программы.Когда я ставил DLL, было две ошибки, которые говорили, что нет ссылок на Google.Protobuf и tar-cs.Я нашел DLL в Интернете и поместил их в проект.После этого никаких ошибок не появилось.
Затем в коде я попытался:
NetworkScanner scanner = new NetworkScanner(); //Scans the network or robot controllers
И я получил эту ошибку.
NullReferenceException: Object reference not set to an instance of an object
System.Threading.Tasks.Task`1[TResult].InnerInvoke () (at <d7ac571ca2d04b2f981d0d886fa067cf>:0)
System.Threading.Tasks.Task.Execute () (at <d7ac571ca2d04b2f981d0d886fa067cf>:0)
Rethrow as AggregateException: One or more errors occurred.
System.Threading.Tasks.Task.ThrowIfExceptional (System.Boolean includeTaskCanceledExceptions) (at <d7ac571ca2d04b2f981d0d886fa067cf>:0)
System.Threading.Tasks.Task`1[TResult].GetResultCore (System.Boolean waitCompletionNotification) (at <d7ac571ca2d04b2f981d0d886fa067cf>:0)
System.Threading.Tasks.Task`1[TResult].get_Result () (at <d7ac571ca2d04b2f981d0d886fa067cf>:0)
RobotStudio.Services.RobApi.Desktop.RobPlatformDesktop+<>c.<.cctor>b__2_1 () (at <901697530f6a4ba88a60f7c648717fba>:0)
System.Threading.Tasks.Task`1[TResult].InnerInvoke () (at <d7ac571ca2d04b2f981d0d886fa067cf>:0)
System.Threading.Tasks.Task.Execute () (at <d7ac571ca2d04b2f981d0d886fa067cf>:0)
Rethrow as AggregateException: One or more errors occurred.
System.Threading.Tasks.Task.ThrowIfExceptional (System.Boolean includeTaskCanceledExceptions) (at <d7ac571ca2d04b2f981d0d886fa067cf>:0)
System.Threading.Tasks.Task`1[TResult].GetResultCore (System.Boolean waitCompletionNotification) (at <d7ac571ca2d04b2f981d0d886fa067cf>:0)
System.Threading.Tasks.Task`1[TResult].get_Result () (at <d7ac571ca2d04b2f981d0d886fa067cf>:0)
RobotStudio.Services.RobApi.Desktop.RobPlatformDesktop.GetNetscan () (at <901697530f6a4ba88a60f7c648717fba>:0)
RobotStudio.Services.RobApi.Internal.RobApiProviderManager.AddProvider (System.String providerId, RobotStudio.Services.RobApi.Internal.IRobApiProvider provider) (at <8d4f5d48ee63449dbb1112cb5a802708>:0)
RobotStudio.Services.RobApi.Desktop.RobPlatformDesktopInit.Initialize () (at <901697530f6a4ba88a60f7c648717fba>:0)
ABB.Robotics.Controllers.Discovery.NetworkScanner..cctor () (at <e27eeaf9f4444392aac382e4960f38fe>:0)
Rethrow as TypeInitializationException: The type initializer for 'ABB.Robotics.Controllers.Discovery.NetworkScanner' threw an exception.
ButtonScript.SimpleOutput () (at Assets/ButtonScript.cs:39)
System.Threading.ThreadHelper.ThreadStart_Context (System.Object state) (at <d7ac571ca2d04b2f981d0d886fa067cf>:0)
System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) (at <d7ac571ca2d04b2f981d0d886fa067cf>:0)
System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) (at <d7ac571ca2d04b2f981d0d886fa067cf>:0)
System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state) (at <d7ac571ca2d04b2f981d0d886fa067cf>:0)
System.Threading.ThreadHelper.ThreadStart () (at <d7ac571ca2d04b2f981d0d886fa067cf>:0)
System.Object:__icall_wrapper_mono_generic_class_init()
ButtonScript:SimpleOutput() (at Assets/ButtonScript.cs:39)
System.Threading.ThreadHelper:ThreadStart()
Я не уверен, если проблемас помощью самого метода или если я неправильно внедрил PC SDK.
У меня вопрос, есть ли лучший способ внедрить PC SDK в Unity?
Заранее спасибо.