EnglishУкраїнськаmRussian
Login/New
Topic with many replies

OpenSCADA под Windows (XP/7/8, CE6, EC7)


Author Message
Written on: 28. 10. 2015 [08:18]
ViacheslavMezentsev
Вячеслав Мезенцев
Topic creator
registered since: 20.10.2015
Posts: 10
Дошёл кое-как до компиляции.

#if !__GLIBC_PREREQ(2,4) - закомментировал весь блок.
#include <ieee754.h> - нашёл на просторах сети, скопировал в /src.

Далее не знаю как поступить. Мне теперь каждый файл из сети вытягивать или я что-то недоустановил в пакетном менеджере? Судя по всему заголовочников мне не хватает.

JAVASCRIPT
$ make
Making all in src
make[1]: Entering directory `C:/cygwin64/home/usermvn2/projects/OpenSCADA/src'
C:/avr-gcc/utils/bin/make  all-recursive
make[2]: Entering directory `C:/cygwin64/home/usermvn2/projects/OpenSCADA/src'
Making all in moduls/bd/SQLite
make[3]: Entering directory `C:/cygwin64/home/usermvn2/projects/OpenSCADA/src/moduls/bd/SQLite'
C:/cygwin64/bin/sh.exe ../../../../libtool  --tag=CXX --tag=disable-shared  --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../../../src    -DMOD_INCL -fpic  -g -O2  -MT bd_SQLite_la-bd_sqlite.lo -MD -MP -MF .deps/bd_SQLite_la-bd_sqlite.Tpo -c -o bd_SQLite_la-bd_sqlite.lo `test -f 'bd_sqlite.cpp' || echo './'`bd_sqlite.cpp
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I../../../../src -DMOD_INCL -fpic -g -O2 -MT bd_SQLite_la-bd_sqlite.lo -MD -MP -MF .deps/bd_SQLite_la-bd_sqlite.Tpo -c bd_sqlite.cpp -o bd_SQLite_la-bd_sqlite.o
mv -f .deps/bd_SQLite_la-bd_sqlite.Tpo .deps/bd_SQLite_la-bd_sqlite.Plo
C:/cygwin64/bin/sh.exe ../../../../libtool  --tag=CXX --tag=disable-shared  --mode=link g++ -DMOD_INCL -fpic  -g -O2  -module -lsqlite3   -o bd_SQLite.la  bd_SQLite_la-bd_sqlite.lo
libtool: link: rm -fr  .libs/bd_SQLite.a .libs/bd_SQLite.la
libtool: link: ar cru .libs/bd_SQLite.a  bd_SQLite_la-bd_sqlite.o
libtool: link: ranlib .libs/bd_SQLite.a
libtool: link: ( cd ".libs" && rm -f "bd_SQLite.la" && ln -s "../bd_SQLite.la" "bd_SQLite.la" )
make[3]: Leaving directory `C:/cygwin64/home/usermvn2/projects/OpenSCADA/src/moduls/bd/SQLite'
Making all in .
make[3]: Entering directory `C:/cygwin64/home/usermvn2/projects/OpenSCADA/src'
C:/cygwin64/bin/sh.exe ../libtool  --tag=CXX --tag=disable-shared  --mode=compile g++ -DHAVE_CONFIG_H -I.     -g -O2  -MT liboscada_la-tsys.lo -MD -MP -MF .deps/liboscada_la-tsys.Tpo -c -o liboscada_la-tsys.lo `test -f 'tsys.cpp' || echo './'`tsys.cpp
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -g -O2 -MT liboscada_la-tsys.lo -MD -MP -MF .deps/liboscada_la-tsys.Tpo -c tsys.cpp -o liboscada_la-tsys.o
tsys.cpp:24:21: фатальная ошибка: syscall.h: No such file or directory
 #include <syscall.h>
                     ^
компиляция прервана.
make[3]: *** [liboscada_la-tsys.lo] Error 1
make[3]: Leaving directory `C:/cygwin64/home/usermvn2/projects/OpenSCADA/src'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `C:/cygwin64/home/usermvn2/projects/OpenSCADA/src'
make[1]: *** [all] Error 2
make[1]: Leaving directory `C:/cygwin64/home/usermvn2/projects/OpenSCADA/src'
make: *** [all-recursive] Error 1


П.С. make утилита используется из набора avr-gcc, видимо пути нужно поправить.


[This article was edited 2 times, at last 28.10.2015 at 08:23.]
Attachment

configure_20151028_2.log (File type: application/octet-stream, Size: 16.13 kilobytes) — 672 downloads
Written on: 28. 10. 2015 [10:52]
ViacheslavMezentsev
Вячеслав Мезенцев
Topic creator
registered since: 20.10.2015
Posts: 10
2) pthread_rwlock_timedwrlock (либо пробовать другую библиотеку, например от mingw, либо искать замену функции)

Дошёл до этого места. А что нужно сделать, чтобы pthread_rwlock_timedwrlock() можно было из mingw взять, а не комментировать? Сомневаюсь, что такое место можно просто убрать.

JAVASCRIPT
$ make
Making all in src
make[1]: вход в каталог «/home/usermvn2/projects/OpenSCADA/src»
make  all-recursive
make[2]: вход в каталог «/home/usermvn2/projects/OpenSCADA/src»
Making all in moduls/bd/SQLite
make[3]: вход в каталог «/home/usermvn2/projects/OpenSCADA/src/moduls/bd/SQLite»
/bin/sh ../../../../libtool  --tag=CXX --tag=disable-shared  --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../../../src    -DMOD_INCL -fpic  -g -O2  -MT bd_SQLite_la-bd_sqlite.lo -MD -MP -MF .deps/bd_SQLite_la-bd_sqlite.Tpo -c -o bd_SQLite_la-bd_sqlite.lo `test -f 'bd_sqlite.cpp' || echo './'`bd_sqlite.cpp
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I../../../../src -DMOD_INCL -fpic -g -O2 -MT bd_SQLite_la-bd_sqlite.lo -MD -MP -MF .deps/bd_SQLite_la-bd_sqlite.Tpo -c bd_sqlite.cpp -o bd_SQLite_la-bd_sqlite.o
mv -f .deps/bd_SQLite_la-bd_sqlite.Tpo .deps/bd_SQLite_la-bd_sqlite.Plo
/bin/sh ../../../../libtool  --tag=CXX --tag=disable-shared  --mode=link g++ -DMOD_INCL -fpic  -g -O2  -module -lsqlite3   -o bd_SQLite.la  bd_SQLite_la-bd_sqlite.lo 
libtool: link: rm -fr  .libs/bd_SQLite.a .libs/bd_SQLite.la
libtool: link: ar cru .libs/bd_SQLite.a  bd_SQLite_la-bd_sqlite.o
libtool: link: ranlib .libs/bd_SQLite.a
libtool: link: ( cd ".libs" && rm -f "bd_SQLite.la" && ln -s "../bd_SQLite.la" "bd_SQLite.la" )
make[3]: выход из каталога «/home/usermvn2/projects/OpenSCADA/src/moduls/bd/SQLite»
Making all in .
make[3]: вход в каталог «/home/usermvn2/projects/OpenSCADA/src»
/bin/sh ../libtool  --tag=CXX --tag=disable-shared  --mode=compile g++ -DHAVE_CONFIG_H -I.     -g -O2  -MT liboscada_la-tsys.lo -MD -MP -MF .deps/liboscada_la-tsys.Tpo -c -o liboscada_la-tsys.lo `test -f 'tsys.cpp' || echo './'`tsys.cpp
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -g -O2 -MT liboscada_la-tsys.lo -MD -MP -MF .deps/liboscada_la-tsys.Tpo -c tsys.cpp -o liboscada_la-tsys.o
mv -f .deps/liboscada_la-tsys.Tpo .deps/liboscada_la-tsys.Plo
/bin/sh ../libtool  --tag=CXX --tag=disable-shared  --mode=compile g++ -DHAVE_CONFIG_H -I.     -g -O2  -MT liboscada_la-resalloc.lo -MD -MP -MF .deps/liboscada_la-resalloc.Tpo -c -o liboscada_la-resalloc.lo `test -f 'resalloc.cpp' || echo './'`resalloc.cpp
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -g -O2 -MT liboscada_la-resalloc.lo -MD -MP -MF .deps/liboscada_la-resalloc.Tpo -c resalloc.cpp -o liboscada_la-resalloc.o
resalloc.cpp: В функции-члене «void OSCADA::Res::resRequestW(short unsigned int)»:
resalloc.cpp:59:44: ошибка: нет декларации «pthread_rwlock_timedwrlock» в этой области видимости
  rez = pthread_rwlock_timedwrlock(&rwc,&wtm);
                                            ^
resalloc.cpp: В функции-члене «void OSCADA::Res::resRequestR(short unsigned int)»:
resalloc.cpp:90:44: ошибка: нет декларации «pthread_rwlock_timedrdlock» в этой области видимости
  rez = pthread_rwlock_timedrdlock(&rwc,&wtm);
                                            ^
Makefile:620: ошибка выполнения рецепта для цели «liboscada_la-resalloc.lo»
make[3]: *** [liboscada_la-resalloc.lo] Ошибка 1
make[3]: выход из каталога «/home/usermvn2/projects/OpenSCADA/src»
Makefile:835: ошибка выполнения рецепта для цели «all-recursive»
make[2]: *** [all-recursive] Ошибка 1
make[2]: выход из каталога «/home/usermvn2/projects/OpenSCADA/src»
Makefile:468: ошибка выполнения рецепта для цели «all»
make[1]: *** [all] Ошибка 2
make[1]: выход из каталога «/home/usermvn2/projects/OpenSCADA/src»
Makefile:726: ошибка выполнения рецепта для цели «all-recursive»
make: *** [all-recursive] Ошибка 1
Written on: 02. 11. 2015 [22:04]
fido_max
Maxim Kochetkov
Contributor
registered since: 28.10.2010
Posts: 129
"ViacheslavMezentsev" wrote:

2) pthread_rwlock_timedwrlock (либо пробовать другую библиотеку, например от mingw, либо искать замену функции)

Дошёл до этого места. А что нужно сделать, чтобы pthread_rwlock_timedwrlock() можно было из mingw взять, а не комментировать? Сомневаюсь, что такое место можно просто убрать.

Удалил только лишь для того, чтобы скомпилировалось, а не для того чтобы работало. Иначе как можно адаптировать код, который не компилируется даже?
Я не знаю, что нужно сделать. Возможно стоит попробовать mingw в качестве компилятора (удалить gcc и поставить другой) с его библиотеками, т.к. в его либах упоминание такой функции я видел.
Тут посерьезней проблема есть: модули не подгружаются.
Written on: 03. 11. 2015 [06:36]
ViacheslavMezentsev
Вячеслав Мезенцев
Topic creator
registered since: 20.10.2015
Posts: 10
Я, пожалуй, пойду другим путём. Порежу исходники на части, выкину всё лишнее и POSIX этот тоже. Мне не нужны зависимости от кучи стороннего непонятно как и кем поддерживаемого ПО. Возможно, сделаю обёртки, чтобы переносимость была более реальной, чем я вижу её сейчас. Всё равно, если я хочу запустить OpenSCADA на панелях оператора с WinCE и выше, мне нужны исходники, полностью компилируемые в MSVC. Кроме того, архитектура с использованием БД не подходит, т.к. работа с базой (как мне думается) убьёт флешку. На всех таких малых ПК вроде ПЛК или панелей оператора используется (micro)SD-карта в качестве расширения для диска. Если СУБД интенсивно работает с диском, то флешка - не лучшее место для хранения базы.
Ах да, QT я пожалуй тоже выкину. У меня на панели доступен .Net 3.5 в коробке (WinEC7), с ним я гораздо более знаком. Я попробовал сборку и отладку приложений на С++ в чистом Win32API и C# в .Net 3.5 - всё практически как на настольном ПК. Ядро системы можно оставить на C++, а вот интерфейс весь будет у меня в .Net. Жаль только, что мне не удалось использовать C++/CLI, всё бы значительно упростилось. Теперь придётся придумывать как попроще реализовать обмен между управляемым и неуправляемым кодом.
Written on: 03. 11. 2015 [07:57]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
Пока перенёс в раздел "Разное", если просветления не наступит то просто удалю!

Learn, learn and learn better than work, work and work.
Written on: 04. 04. 2017 [10:42]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
На данный момент активно осуществляется адаптация к Android, что за собой тянет унификацию сборочной системы, на предмет зависимостей OpenSCADA и сборки со статическими библиотеками.

Если участникам данной темы форума серьёзно интересна задача адаптации к работе на OС "MS Windows", то Вы можете создать отдельную страницу адаптации где отслеживать и решать возникающие проблемы; по ходу с решением проблем адаптации на Android, которые могут быть общими!
Со своей стороны могу изучать проблемы, которые можно быстро воспроизвести по проторенной дороге, зафиксированной на отдельной странице адаптации.

Learn, learn and learn better than work, work and work.
Written on: 04. 04. 2017 [10:58]
ViacheslavMezentsev
Вячеслав Мезенцев
Topic creator
registered since: 20.10.2015
Posts: 10
В общем, я написал собственное приложение на основе .Net Compact, которое работает и под WinCE, и под настольные Windows. Заточено под работу с сенсорным экраном. Драйвера устройств и компоненты подключаются как внешние .Net сборки. Визуализация расширяемая. В планах поддержка скриптов на c# и vb.net (компилируемых и для .Net Compact в том числе). Такие скрипты являются объектно ориентированными и им доступны все возможности .Net. Что касается кросс-платформенности, жду .Net Core для arm'ов.

Это оказалось проще, чем разбираться с вашей системой. Подумайте об этом.

[This article was edited 1 times, at last 04.04.2017 at 10:59.]
Attachment

2017-04-04_12-49-07.png (File type: image/png, Size: 40.05 kilobytes) — 827 downloads
Written on: 04. 04. 2017 [11:54]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"ViacheslavMezentsev" wrote:

Это оказалось проще, чем разбираться с вашей системой. Подумайте об этом.

Ждите, по ходу думайте про кросплатформенность и то, что до .Net уже были такие потенциальные кросплатформенные окружения, как Java, чистый Qt как фреймворк, Python и ряд других, про которые я очевидно знаю! :)

Кстати, Вы вообще сильно адресом ошиблись и Вам на http://openscada.org где ровно такое с 2004 года делают.

Learn, learn and learn better than work, work and work.
Written on: 14. 04. 2017 [10:51]
3dlogin
Илья Кузнецов
registered since: 06.04.2016
Posts: 12
Роман, добрый день! Не то чтобы я лично заинтересован в портировании OpenSCADA под Windows,
скорее мне очень интересен вопрос реальной кроссплатформенности OpenSCADA. Много думал над тем,
как лучше всего это реализовать, и пришёл к выводу, что все специфичные места стоит переписать с использованием Qt.
Согласитесь, Qt уже давно вырос из "потенциально кроссплатформенного фреймворка".

На всякий случай сразу оговорюсь, что всё написанное - сугубо моё мнение, я не призываю и не агитирую.
Но очень интересно Ваше мнение: как считаете, стоит ли игра свеч, сможем ли мы получить действительно кроссплатформенный продукт
из OpenSCADA применив Qt в тех местах её архитектуры, где (в альтернативном варианте) необходимо было бы писать #ifdef _WIN32 #elif __linux

qmake, кстати, мог бы вполне органично заменить autotools, тоже уже дорос, я считаю.

Если вдруг Вы разделяете мою позицию, могу оказать вполне реальную помощь в разработке (переводе частей OpenSCADA под Qt).
Written on: 14. 04. 2017 [10:58]
3dlogin
Илья Кузнецов
registered since: 06.04.2016
Posts: 12
P.S.> Прекрасно понимаю, что объём работ получится немаленький, но считаю, что оно стоит того. А уж если основной разработчик поддержит, то и подавно.



7502