Использование await async в Session()

Стартовая страница Форумы Разработка и интеграция Использование await async в Session()

Просмотр 15 сообщений - с 1 по 15 (из 20 всего)
  • Автор
    Сообщения
  • #24251
    manjey73
    Участник

    В общем есть куча методов, которые выполняются асинхронно (чужие библиотеки), а как их использовать в Session() ?

    #24254
    Mikhail
    Модератор

    Любой асинхронный метод можно запустить синхронно, хоть это и не красиво:
    MyAsyncMethod().Result или
    MyAsyncMethod().Wait()

    #24255
    manjey73
    Участник

    Отбой пока, оказалось что Beckhoff в NET v6 «забыл» про поддержку TwinCAT2 от слова совсем 🙁

    Буду искать другое решение… но как-нибудь опробую

    #24256
    Mikhail
    Модератор

    У Beckhoff есть официальные библиотеки для интеграции?

    #24257
    manjey73
    Участник

    Mikhail да, есть. для TwinCAT 2 только для NET Framework 4
    Для TwinCAT 3 только для NET V6

    У меня работает драйвер в 5-й версии для TwinCAT 2 но там есть ограничения, скорее всего только для Windows, иначе не достучаться до ПЛК.
    Есть еще для Linux, пока не разбирался, но скорее всего только для X86 архитектуры…

    В общем немного печально у них, одно больше не развивают, другое не поддерживает старые ПЛК (TwinCAT 2)

    #24259
    manjey73
    Участник

    @mikhail в коде C# есть возможность использования библиотек cpp если в них не предусмотрен режим extern «C» или это обязательное условие для импорта функций из библиотек c++ ?

    #24261
    Mikhail
    Модератор

    Для TwinCAT 3 только для NET V6

    Для Rapid SCADA 6 нужно TwinCAT 3 выбирать, скорее всего.

    в коде C# есть возможность использования библиотек cpp если в них не предусмотрен режим extern «C»

    Приходилось подключать обычные DLL к .NET приложениям, но у меня нет информации, был ли там режим extern «C». Нужно пробовать.

    #24263
    manjey73
    Участник

    @mikhail еще раз, ПЛК, программируемые в TwinCat 2 не поддерживаются в библиотеке NET V6, только в NET V4, соответственно использовать библиотеку для NET V6 никак не получится. Я несколько дней убил, пока не связался кроме русской еще и с иностранной тех поддержкой, где сообразили быстрее, что я пытаюсь прочитать старый ПЛК с системой TwinCat 2 и объяснили мне, что я не прав 🙂

    А есть хорошие знакомые, специалисты по C++ ? которые могут посмотреть код производителя, насколько сложно там добавить экспорт функций (extern «C») и посмотреть возможность сборки dll в том числе и под Windows ????

    Просто если экспорт добавить не сложно, но при этом библиотека останется только под Linux то выполнять отладку практически нет возможности…

    #24266
    Mikhail
    Модератор

    По поводу версий TwinCat теперь понятно.
    Специалистов C++, которые бы взялись за данную задачу, не могу порекомендовать.

    #24271
    manjey73
    Участник

    так же покопался в недрах библиотеки для TwinCat 2, есть вызовы функций kernel32.dll

    Так что вряд ли возможно работа подл Linux даже в 5-й версии Scada… 🙂
    До тестов на Linux у меня не дошло как-то…

    #24288
    Mikhail
    Модератор

    Компилятор C++ собирает DLL отдельно под каждую платформу. Поэтому DLL для Windows не будет работать под Linux.

    Файлы сборок .NET, имеющие расширение DLL — это результат компиляции в промежуточный код, который выполняется фреймворком. Поэтому он может быть кроссплатформенным.

    #24290
    manjey73
    Участник

    Библиотека для NET V4 она как бы на C# но из-за того, что там есть обращения к библиотекам kernel32.dll а так же еще к библиотекам от Beckhoff то на Linux должны ошибки быть, если в 5-й версии попытаться запустить под Mono. Так как там так понимаю нет kernel32.dll

    Пока не суть, буду пробовать собрать библиотеку на С++ с внедренным в нее экспортом функций, если получится. Тогда будет тот же принцип, что и в KpLibPlcTag, просто две сборки драйвера для Windows и для Linux. Это если для Windows ее потом удастся собрать…

    #24295
    Mikhail
    Модератор

    Пишите, интересный опыт. Будет полезен не только для TwinCat.

    #24298
    manjey73
    Участник

    так опыт давно проверен, тот же KpRPi3 на нем основан, импорт функций из DLL на С(или С++)

    Но тут проблема в том, что в библиотеке должен быть разрешен экспорт этих самых функций, а не только использование в нативном С коде

    #24304
    manjey73
    Участник

    попробовал пересобрать старую dll от Beckhoff, кучка всего видимо не взлетит, но читать ПЛК будет можно 🙂
    неблагодарное это занятие оказалось…. надо С++ изучать 🙂

Просмотр 15 сообщений - с 1 по 15 (из 20 всего)
  • Вы должны авторизироваться для ответа в этой теме.