Стартовая страница › Форумы › Разработка и интеграция › Использование await async в Session()
- В этой теме 19 ответов, 2 участника, последнее обновление 1 год, 1 месяц назад сделано
Mikhail.
-
АвторСообщения
-
27.07.2022 в 23:13 #24251
manjey73
УчастникВ общем есть куча методов, которые выполняются асинхронно (чужие библиотеки), а как их использовать в Session() ?
28.07.2022 в 12:49 #24254Mikhail
МодераторЛюбой асинхронный метод можно запустить синхронно, хоть это и не красиво:
MyAsyncMethod().Result или
MyAsyncMethod().Wait()28.07.2022 в 22:37 #24255manjey73
УчастникОтбой пока, оказалось что Beckhoff в NET v6 «забыл» про поддержку TwinCAT2 от слова совсем 🙁
Буду искать другое решение… но как-нибудь опробую
29.07.2022 в 19:14 #24256Mikhail
МодераторУ Beckhoff есть официальные библиотеки для интеграции?
29.07.2022 в 19:23 #24257manjey73
УчастникMikhail да, есть. для TwinCAT 2 только для NET Framework 4
Для TwinCAT 3 только для NET V6У меня работает драйвер в 5-й версии для TwinCAT 2 но там есть ограничения, скорее всего только для Windows, иначе не достучаться до ПЛК.
Есть еще для Linux, пока не разбирался, но скорее всего только для X86 архитектуры…В общем немного печально у них, одно больше не развивают, другое не поддерживает старые ПЛК (TwinCAT 2)
30.07.2022 в 23:36 #24259manjey73
Участник@mikhail в коде C# есть возможность использования библиотек cpp если в них не предусмотрен режим extern «C» или это обязательное условие для импорта функций из библиотек c++ ?
31.07.2022 в 12:27 #24261Mikhail
МодераторДля TwinCAT 3 только для NET V6
Для Rapid SCADA 6 нужно TwinCAT 3 выбирать, скорее всего.
в коде C# есть возможность использования библиотек cpp если в них не предусмотрен режим extern «C»
Приходилось подключать обычные DLL к .NET приложениям, но у меня нет информации, был ли там режим extern «C». Нужно пробовать.
31.07.2022 в 15:38 #24263manjey73
Участник@mikhail еще раз, ПЛК, программируемые в TwinCat 2 не поддерживаются в библиотеке NET V6, только в NET V4, соответственно использовать библиотеку для NET V6 никак не получится. Я несколько дней убил, пока не связался кроме русской еще и с иностранной тех поддержкой, где сообразили быстрее, что я пытаюсь прочитать старый ПЛК с системой TwinCat 2 и объяснили мне, что я не прав 🙂
А есть хорошие знакомые, специалисты по C++ ? которые могут посмотреть код производителя, насколько сложно там добавить экспорт функций (extern «C») и посмотреть возможность сборки dll в том числе и под Windows ????
Просто если экспорт добавить не сложно, но при этом библиотека останется только под Linux то выполнять отладку практически нет возможности…
01.08.2022 в 10:24 #24266Mikhail
МодераторПо поводу версий TwinCat теперь понятно.
Специалистов C++, которые бы взялись за данную задачу, не могу порекомендовать.01.08.2022 в 11:08 #24271manjey73
Участниктак же покопался в недрах библиотеки для TwinCat 2, есть вызовы функций kernel32.dll
Так что вряд ли возможно работа подл Linux даже в 5-й версии Scada… 🙂
До тестов на Linux у меня не дошло как-то…02.08.2022 в 12:48 #24288Mikhail
МодераторКомпилятор C++ собирает DLL отдельно под каждую платформу. Поэтому DLL для Windows не будет работать под Linux.
Файлы сборок .NET, имеющие расширение DLL — это результат компиляции в промежуточный код, который выполняется фреймворком. Поэтому он может быть кроссплатформенным.
02.08.2022 в 13:20 #24290manjey73
УчастникБиблиотека для NET V4 она как бы на C# но из-за того, что там есть обращения к библиотекам kernel32.dll а так же еще к библиотекам от Beckhoff то на Linux должны ошибки быть, если в 5-й версии попытаться запустить под Mono. Так как там так понимаю нет kernel32.dll
Пока не суть, буду пробовать собрать библиотеку на С++ с внедренным в нее экспортом функций, если получится. Тогда будет тот же принцип, что и в KpLibPlcTag, просто две сборки драйвера для Windows и для Linux. Это если для Windows ее потом удастся собрать…
03.08.2022 в 10:51 #24295Mikhail
МодераторПишите, интересный опыт. Будет полезен не только для TwinCat.
03.08.2022 в 14:35 #24298manjey73
Участниктак опыт давно проверен, тот же KpRPi3 на нем основан, импорт функций из DLL на С(или С++)
Но тут проблема в том, что в библиотеке должен быть разрешен экспорт этих самых функций, а не только использование в нативном С коде
05.08.2022 в 09:43 #24304manjey73
Участникпопробовал пересобрать старую dll от Beckhoff, кучка всего видимо не взлетит, но читать ПЛК будет можно 🙂
неблагодарное это занятие оказалось…. надо С++ изучать 🙂 -
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.