<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Last forum posts : Разработка OpenSCADA</title>
		<link>http://oscada.org/en/forum/topics/razrabotka_openscada/</link>
		<description>Разработка OpenSCADA</description>
		<language>en</language>
		<lastbuilddate>Mon, 06 Apr 2026 09:04:13 +0300</lastbuilddate>
		<generator>mm_forum powered by TYPO3</generator>
		<ttl>60</ttl>
		
		
		<item>
			<title>Несколько предложений/замечаний...</title>
			<link>http://oscada.org/en/forum/posts///10270/</link>
			<pubDate>Tue, 16 May 2023 12:16:16 +0300</pubDate>
			<description>Доброго дня.  1. Касательно DAQ.System.      - при добавлении параметра (ну к примеру &quot;сетевой интерфейс&quot; - id() &quot;netstat&quot;) все отрабатывает хорошо, но при &quot;удалении&quot; сетевого интерфейса,      параметр остается... Может можно и удаление добавить?     - при добавлении параметра любого типа сначала вызывается CPU::init() потом CPU::deInit() (как &quot;первый стоящий&quot; при регистрации) и только      потом &quot;свой&quot; init(). Может можно как-то сразу &quot;свой&quot; init() вызывать?  2. Касательно Transport.SSL    -  CRYPTO_set_id_callback(); CRYPTO_set_locking_callback(); CRYPTO_set_dynlock_create_callback(); CRYPTO_set_dynlock_lock_callback();        CRYPTO_set_dynlock_destroy_callback(); вроде как &quot;устаревшие&quot; и не используются еще с версии 1.1.0.    Может их использование &quot;обложить&quot;:       #if OPENSSL_VERSION_NUMBER &lt; OPENSSL_VERSION_1_1_0                                                           #endif    или вообще убрать...  </description>
			<content:encoded><![CDATA[      Доброго дня.<br />
<br />
1. Касательно DAQ.System. <br />
    - при добавлении параметра (ну к примеру &quot;сетевой интерфейс&quot; - id() &quot;netstat&quot;) все отрабатывает хорошо, но при &quot;удалении&quot; сетевого интерфейса, <br />
    параметр остается... Может можно и удаление добавить?<br />
    - при добавлении параметра любого типа сначала вызывается CPU::init() потом CPU::deInit() (как &quot;первый стоящий&quot; при регистрации) и только <br />
    потом &quot;свой&quot; init(). Может можно как-то сразу &quot;свой&quot; init() вызывать?<br />
<br />
2. Касательно Transport.SSL<br />
   -  CRYPTO_set_id_callback(); CRYPTO_set_locking_callback(); CRYPTO_set_dynlock_create_callback(); CRYPTO_set_dynlock_lock_callback(); <br />
      CRYPTO_set_dynlock_destroy_callback(); вроде как &quot;устаревшие&quot; и не используются еще с версии 1.1.0.<br />
   Может их использование &quot;обложить&quot;:<br />
      #if OPENSSL_VERSION_NUMBER &lt; OPENSSL_VERSION_1_1_0                                                    <br />
      #endif<br />
   или вообще убрать...<br />
<br />
      ]]></content:encoded>
			<category>Разработка OpenSCADA</category>
			<dc:creator>mr_dsv</dc:creator>
		</item>
		
		<item>
			<title>Несколько предложений/замечаний...</title>
			<link>http://oscada.org/en/forum/posts///10242/</link>
			<pubDate>Wed, 22 Mar 2023 19:34:49 +0200</pubDate>
			<description>RHVoice це tts engine з дуже пристойною підтримкою української мови. Є для windows, android, можлива збірка під Linux. Для Arch Linux є бінарні пакети але не остання версія.</description>
			<content:encoded><![CDATA[      RHVoice це tts engine з дуже пристойною підтримкою української мови. Є для windows, android, можлива збірка під Linux. Для Arch Linux є бінарні пакети але не остання версія.      ]]></content:encoded>
			<category>Разработка OpenSCADA</category>
			<dc:creator>mr_dsv</dc:creator>
		</item>
		
		<item>
			<title>Несколько предложений/замечаний...</title>
			<link>http://oscada.org/en/forum/posts///10241/</link>
			<pubDate>Wed, 22 Mar 2023 18:47:05 +0200</pubDate>
			<description> 1. Знову стосовно мовного питання (LANG=uk_UA.UTF-8). На разі Notification2 (мова) працює як треба, але до тих пір доки у тексті не трапиться слово з апострофом. Тоді до апострофа додається зворотній слеш і TTS engine (RHVoice) веде себе так ніби їй ззаду щось задвинули :).  Так, слеш зайвий, прибрав разом із уніфікацією кодування за слешем.  RHVoice це що, голос для festival, чи щось окреме?   Не везде есть Phonon (или желание его использовать).  Воно і є у прикладах до конкретного візуалізатора, якщо не хочеться Phonon   3. Еще один вопрос. Планируется ли переход на SSL 3.1.0. Сборка с новыми библиотеками идет с кучей предупреждений об использовании устаревших функций. Да и на сайте openssl &quot;пугают&quot;: The previous LTS version (the 1.1.1 series) is also available and is supported until 11th September 2023.  У LTS дистрибутивах воно підтримуватиметься довго, а щойно потрапить до наступного LTS то і адаптується, або разом із адаптацією до ініціативних підключень, що лежить у оперативних планах.</description>
			<content:encoded><![CDATA[      <div class="tx-mmforum-pi1-pt-quote">&quot;mr_dsv&quot; wrote:<br /><br />
1. Знову стосовно мовного питання (LANG=uk_UA.UTF-8). На разі Notification2 (мова) працює як треба, але до тих пір доки у тексті не трапиться слово з апострофом. Тоді до апострофа додається зворотній слеш і TTS engine (RHVoice) веде себе так ніби їй ззаду щось задвинули :).<br />
</div><br />
Так, слеш зайвий, прибрав разом із уніфікацією кодування за слешем.<br />
<br />
RHVoice це що, голос для festival, чи щось окреме?<br />
<br />
<div class="tx-mmforum-pi1-pt-quote">&quot;mr_dsv&quot; wrote:<br /><br />
Не везде есть Phonon (или желание его использовать).<br />
</div><br />
Воно і є у прикладах до конкретного візуалізатора, якщо не хочеться Phonon<br />
<br />
<div class="tx-mmforum-pi1-pt-quote">&quot;mr_dsv&quot; wrote:<br /><br />
3. Еще один вопрос. Планируется ли переход на SSL 3.1.0. Сборка с новыми библиотеками идет с кучей предупреждений об использовании устаревших функций. Да и на сайте openssl &quot;пугают&quot;: The previous LTS version (the 1.1.1 series) is also available and is supported until 11th September 2023.<br />
</div><br />
У LTS дистрибутивах воно підтримуватиметься довго, а щойно потрапить до наступного LTS то і адаптується, або разом із адаптацією до ініціативних підключень, що лежить у оперативних планах.      ]]></content:encoded>
			<category>Разработка OpenSCADA</category>
			<dc:creator>roman</dc:creator>
		</item>
		
		<item>
			<title>Несколько предложений/замечаний...</title>
			<link>http://oscada.org/en/forum/posts///10240/</link>
			<pubDate>Wed, 22 Mar 2023 15:21:51 +0200</pubDate>
			<description>Доброго дня.  1. Знову стосовно мовного питання (LANG=uk_UA.UTF-8). На разі Notification2 (мова) працює як треба, але до тих пір доки у тексті не трапиться слово з апострофом. Тоді до апострофа додається зворотній слеш і TTS engine (RHVoice) веде себе так ніби їй ззаду щось задвинули :). До речі мовознавці що підтримують &quot;український&quot; RHVoice кажуть/пишуть що можливе застосування аж 4-х апострофів (' ’ ‘ ʼ) які RHVoice правильно опрацьовує, звізно якщо немає зворотнього слешу. Прикладаю файли для кращого розуміння. Можливо якось можна це вирішити.  2. Есть предложение дополнить JavaLike скрипт для Notification1 (Buzzer) if(doNtf) { 	if(en) {           if(SYS.fileSize(prcID+&quot;.pid&quot;) &lt;= 0) { 		if(res.length) { 			if((play=SYS.system(&quot;which play&quot;)).length) { 				SYS.fileWrite(prcID+&quot;.res&quot;, res); 				SYS.system(play.parseLine(0)+&quot; -q &quot;+prcID+&quot;.res &amp;\necho $! &gt; &quot;+prcID+&quot;.pid&quot;, true); 			} 		} 		else { 			if((beep=SYS.system(&quot;which beep&quot;)).length) 				SYS.system(beep.parse(0,&quot;\n&quot;)+&quot; -f 1000 -l 100000 &amp;\necho $! &gt; &quot;+prcID+&quot;.pid&quot;, true); 			else if((play=SYS.system(&quot;which play&quot;)).length) 				SYS.system(play.parse(0,&quot;\n&quot;)+&quot; -q -n synth 1000000 sin 1000 gain -20 &amp;\necho $! &gt; &quot;+prcID+&quot;.pid&quot;, true); 		} 	  }	 	} else SYS.system(&quot;if test -s &quot;+prcID+&quot;.pid; then kill $(cat &quot;+prcID+&quot;.pid); sleep 1; rm &quot;+prcID+&quot;.pid &quot;+prcID+&quot;.res; fi&quot;);  }......  Не везде есть Phonon (или желание его использовать).  3. Еще один вопрос. Планируется ли переход на SSL 3.1.0. Сборка с новыми библиотеками идет с кучей предупреждений об использовании устаревших функций. Да и на сайте openssl &quot;пугают&quot;: The previous LTS version (the 1.1.1 series) is also available and is supported until 11th September 2023.</description>
			<content:encoded><![CDATA[      Доброго дня.<br />
<br />
1. Знову стосовно мовного питання (LANG=uk_UA.UTF-8). На разі Notification2 (мова) працює як треба, але до тих пір доки у тексті не трапиться слово з апострофом. Тоді до апострофа додається зворотній слеш і TTS engine (RHVoice) веде себе так ніби їй ззаду щось задвинули :).<br />
До речі мовознавці що підтримують &quot;український&quot; RHVoice кажуть/пишуть що можливе застосування аж 4-х апострофів (' ’ ‘ ʼ) які RHVoice правильно опрацьовує, звізно якщо немає зворотнього слешу. Прикладаю файли для кращого розуміння. Можливо якось можна це вирішити.<br />
<br />
2. Есть предложение дополнить JavaLike скрипт для Notification1 (Buzzer)<br />
if(doNtf) {<br />
	if(en) {<br />
          <strong>if(SYS.fileSize(prcID+&quot;.pid&quot;) &lt;= 0) {</strong><br />
		if(res.length) {<br />
			if((play=SYS.system(&quot;which play&quot;)).length) {<br />
				SYS.fileWrite(prcID+&quot;.res&quot;, res);<br />
				SYS.system(play.parseLine(0)+&quot; -q &quot;+prcID+&quot;.res &amp;\necho $! &gt; &quot;+prcID+&quot;.pid&quot;, true);<br />
			}<br />
		}<br />
		else {<br />
			if((beep=SYS.system(&quot;which beep&quot;)).length)<br />
				SYS.system(beep.parse(0,&quot;\n&quot;)+&quot; -f 1000 -l 100000 &amp;\necho $! &gt; &quot;+prcID+&quot;.pid&quot;, true);<br />
			else if((play=SYS.system(&quot;which play&quot;)).length)<br />
				SYS.system(play.parse(0,&quot;\n&quot;)+&quot; -q -n synth 1000000 sin 1000 gain -20 &amp;\necho $! &gt; &quot;+prcID+&quot;.pid&quot;, true);<br />
		}<br />
	  <strong>}</strong>	<br />
	} else SYS.system(&quot;if test -s &quot;+prcID+&quot;.pid; then kill $(cat &quot;+prcID+&quot;.pid); <i>sleep 1;</i> rm &quot;+prcID+&quot;.pid &quot;+prcID+&quot;.res; fi&quot;);<br />
<br />
}......<br />
<br />
Не везде есть Phonon (или желание его использовать).<br />
<br />
3. Еще один вопрос. Планируется ли переход на SSL 3.1.0. Сборка с новыми библиотеками идет с кучей предупреждений об использовании устаревших функций. Да и на сайте openssl &quot;пугают&quot;: The previous LTS version (the 1.1.1 series) is also available and is supported until 11th September 2023.      ]]></content:encoded>
			<category>Разработка OpenSCADA</category>
			<dc:creator>mr_dsv</dc:creator>
		</item>
		
		<item>
			<title>Несколько предложений/замечаний...</title>
			<link>http://oscada.org/en/forum/posts///10231/</link>
			<pubDate>Tue, 07 Mar 2023 10:02:38 +0200</pubDate>
			<description>Доброго дня.  Есть некоторое недопонимание :bang:  1. В vcaBase для &quot;объекта&quot; anShow1 (и anShow) имеем код для Notification create ... 	else if(pErrCode == 3)	alarm = &quot;50|&quot;+pNAME+&quot;|&quot;+spName+&quot; &quot;+tr(&quot;above alarm border&quot;)+&quot;.|&quot;+alTp; 	else if(pErrCode == 4)	alarm = &quot;50|&quot;+pNAME+&quot;|&quot;+spName+&quot; &quot;+tr(&quot;bellow alarm border&quot;)+&quot;.|&quot;+alTp; 	else if(pErrCode == 5)	alarm = &quot;10|&quot;+pNAME+&quot;|&quot;+spName+&quot; &quot;+tr(&quot;above warning border&quot;)+&quot;.|&quot;+alTp; 	else if(pErrCode == 6)	alarm = &quot;10|&quot;+pNAME+&quot;|&quot;+spName+&quot; &quot;+tr(&quot;bellow warning border&quot;)+&quot;.|&quot;+alTp; ...  2. В vca для проекта AGLKS имеем, ну к примеру ... INSERT INTO prj_AGLKS_io VALUES('/prj_AGLKS/pg_so/pg_1/pg_mn/pg_10','spName','Pressure after first stage',33,'','Pressure after first stage','Pi_нд','Тиск після першої ступені','','Тиск після першої ступені','Давление после первой ступени','','Давление после первой ступени');  3. По факту (при выборе LANG=uk_UA.UTF-8) при возникновении Notification имеем текст для произношения: Pressure after first stage нижче норми.  Это так специально задумывалось, или нужно где-то подкрутить...  PS: openscada-1+r2870   </description>
			<content:encoded><![CDATA[      Доброго дня.<br />
<br />
Есть некоторое недопонимание :bang:<br />
<br />
1. В vcaBase для &quot;объекта&quot; anShow1 (и anShow) имеем код для Notification create<br />
...<br />
	else if(pErrCode == 3)	alarm = &quot;50|&quot;+pNAME+&quot;|&quot;+spName+&quot; &quot;+tr(&quot;above alarm border&quot;)+&quot;.|&quot;+alTp;<br />
	else if(pErrCode == 4)	alarm = &quot;50|&quot;+pNAME+&quot;|&quot;+spName+&quot; &quot;+tr(&quot;bellow alarm border&quot;)+&quot;.|&quot;+alTp;<br />
	else if(pErrCode == 5)	alarm = &quot;10|&quot;+pNAME+&quot;|&quot;+spName+&quot; &quot;+tr(&quot;above warning border&quot;)+&quot;.|&quot;+alTp;<br />
	else if(pErrCode == 6)	alarm = &quot;10|&quot;+pNAME+&quot;|&quot;+spName+&quot; &quot;+tr(&quot;bellow warning border&quot;)+&quot;.|&quot;+alTp;<br />
...<br />
<br />
2. В vca для проекта AGLKS имеем, ну к примеру ...<br />
INSERT INTO prj_AGLKS_io VALUES('/prj_AGLKS/pg_so/pg_1/pg_mn/pg_10','spName','Pressure after first stage',33,'','Pressure after first stage','Pi_нд','Тиск після першої ступені','','Тиск після першої ступені','Давление после первой ступени','','Давление после первой ступени');<br />
<br />
3. По факту (при выборе LANG=uk_UA.UTF-8) при возникновении Notification имеем текст для произношения:<br />
Pressure after first stage нижче норми.<br />
<br />
Это так специально задумывалось, или нужно где-то подкрутить...<br />
<br />
PS: openscada-1+r2870<br />
<br />
<br />
      ]]></content:encoded>
			<category>Разработка OpenSCADA</category>
			<dc:creator>mr_dsv</dc:creator>
		</item>
		
		<item>
			<title>Сборка OpenSCADA в Gentoo Linux</title>
			<link>http://oscada.org/en/forum/posts///10223/</link>
			<pubDate>Thu, 19 May 2022 00:47:40 +0300</pubDate>
			<description>После очередного обновления QT некоторые qt-шные файлы переехали. Для корректной сборки требуются две символические ссылки:  /usr/bin/rcc -&gt; /usr/lib64/qt5/bin/rcc /usr/bin/moc -&gt; /usr/lib64/qt5/bin/moc </description>
			<content:encoded><![CDATA[      После очередного обновления QT некоторые qt-шные файлы переехали. Для корректной сборки требуются две символические ссылки:<br />
<br />
/usr/bin/rcc -&gt; /usr/lib64/qt5/bin/rcc<br />
/usr/bin/moc -&gt; /usr/lib64/qt5/bin/moc<br />
      ]]></content:encoded>
			<category>Разработка OpenSCADA</category>
			<dc:creator>IrmIngeneer</dc:creator>
		</item>
		
		<item>
			<title>Несколько предложений/замечаний...</title>
			<link>http://oscada.org/en/forum/posts///10220/</link>
			<pubDate>Mon, 16 May 2022 11:40:08 +0300</pubDate>
			<description> Один вопрос по п.10. Если установить ClockRT в &quot;1&quot;, то уже вроде и не CLOCK_MONOTONIC в CondVar::wait(). Или ClockRT подразумевает работу без QT?  ClockRT в основном не ставится, поэтому CLOCK_MONOTONIC и исключено мертвое блокирование при скачках времени, а опцией для экзотических встраиваемых систем, где GUI часто нет вообще.</description>
			<content:encoded><![CDATA[      <div class="tx-mmforum-pi1-pt-quote">&quot;mr_dsv&quot; wrote:<br /><br />
Один вопрос по п.10. Если установить ClockRT в &quot;1&quot;, то уже вроде и не CLOCK_MONOTONIC в CondVar::wait(). Или ClockRT подразумевает работу без QT?<br />
</div><br />
ClockRT в основном не ставится, поэтому CLOCK_MONOTONIC и исключено мертвое блокирование при скачках времени, а опцией для экзотических встраиваемых систем, где GUI часто нет вообще.      ]]></content:encoded>
			<category>Разработка OpenSCADA</category>
			<dc:creator>roman</dc:creator>
		</item>
		
		<item>
			<title>Несколько предложений/замечаний...</title>
			<link>http://oscada.org/en/forum/posts///10219/</link>
			<pubDate>Mon, 16 May 2022 11:34:40 +0300</pubDate>
			<description>Доброго дня.  Один вопрос по п.10. Если установить ClockRT в &quot;1&quot;, то уже вроде и не CLOCK_MONOTONIC в CondVar::wait(). Или ClockRT подразумевает работу без QT?</description>
			<content:encoded><![CDATA[      Доброго дня.<br />
<br />
Один вопрос по п.10. Если установить ClockRT в &quot;1&quot;, то уже вроде и не CLOCK_MONOTONIC в CondVar::wait(). Или ClockRT подразумевает работу без QT?      ]]></content:encoded>
			<category>Разработка OpenSCADA</category>
			<dc:creator>mr_dsv</dc:creator>
		</item>
		
		<item>
			<title>Несколько предложений/замечаний...</title>
			<link>http://oscada.org/en/forum/posts///10216/</link>
			<pubDate>Wed, 11 May 2022 14:39:17 +0300</pubDate>
			<description> -    if(wThr &amp;&amp; wThr == pthread_self()) rez == EDEADLK; +    if(wThr &amp;&amp; wThr == pthread_self()) rez = EDEADLK; //clang_warn  Да, хотя этот код фактически не работает нигде.   -	return EVAL_REAL; +	return false; //clang_warn - !!! или все таки true  Да, хотя тут более важно чтобы прерывало связывание.   -	    memmove(str_tmp, items, rec_len+(attr-&gt;len_fild&lt;db_field_ptr.len_fild)?attr-&gt;len_fild:db_field_ptr.len_fild); +	    memmove(str_tmp, items, rec_len+((attr-&gt;len_fild&lt;db_field_ptr.len_fild)?attr-&gt;len_fild:db_field_ptr.len_fild)); //clang_warn- !!! мне так кажется...  Да, код древний и GCC последовательно правильно понимает.   -				if(isHistReq=(lstRdMess.categ.empty() &amp;&amp; !lstRdMess.mess.empty())) lstRdMess.mess = &quot;&quot;; +				if((isHistReq=(lstRdMess.categ.empty() &amp;&amp; !lstRdMess.mess.empty()))) lstRdMess.mess = &quot;&quot;; //clang_warn  Нет, хотя некоторые версии GCC на такое тоже ругаются, но что одинаково.    -	else if(data &amp;&amp; data-&gt;func() &amp;&amp; data-&gt;TPrmTempl::Impl::cntrCmdProc(opt,&quot;/cfg&quot;))	; +	else if(data &amp;&amp; data-&gt;func() &amp;&amp; data-&gt;TPrmTempl::Impl::cntrCmdProc(opt,&quot;/cfg&quot;))	{} //clang_warn- !!! &quot;пустой&quot; if   Нет, это вообще дурь от CLang и таких оборотов у меня много.    -	if(tmToRet != -1)	mIt.tmToRet = tmToRet; +	if(tmToRet != TimestampsToReturn(-1))	mIt.tmToRet = tmToRet; //clang_warn  Нет, правильно: + if((int)tmToRet != -1)	mIt.tmToRet = tmToRet;    -	void setMSS( unsigned vl )	{ mMSS = vl ? vmax(100,vmin(1000000,vl)) : 0; modif(); } +	void setMSS( unsigned vl )	{ mMSS = vl ? vmax(100,vmin(65535,vl)) : 0; modif(); } //clang_warn  Да, для входного транспорта так и есть.    - 		string reqPathEl = reqPath.substr(reqElPos+1), reqPath = reqPath.substr(0,reqElPos), selNds_lim; +//clang_warn +		string reqPathEl = reqPath.substr(reqElPos+1), selNds_lim; +		reqPath = reqPath.substr(0,reqElPos);  Да, reqPath определена уже.    9. Для Vision\vis_shapes.cpp и WebVision\vca_sess.cpp &quot;приложил&quot;  Да, в основном очистка fftOut через free(), а не delete, и прямое приведение curVal к int64_t.    10. Еще такое... Может для SCADAHost: public QThread (в QTCfg и Vision) использовать QMutex (вместо ResMtx) и QWaitCondition (вместо CondVar) для синхронизации? Добавится только &quot;&amp;&quot; в -&gt;  cond.wait(&amp;mtx, ...);  Нет, поскольку CondVar::wait() использует CLOCK_MONOTONIC, а QWaitCondition нет.</description>
			<content:encoded><![CDATA[      <div class="tx-mmforum-pi1-pt-quote">&quot;mr_dsv&quot; wrote:<br /><br />
-    if(wThr &amp;&amp; wThr == pthread_self()) rez == EDEADLK;<br />
+    if(wThr &amp;&amp; wThr == pthread_self()) rez = EDEADLK; //clang_warn<br />
</div><br />
Да, хотя этот код фактически не работает нигде.<br />
<br />
<div class="tx-mmforum-pi1-pt-quote">&quot;mr_dsv&quot; wrote:<br /><br />
-	return EVAL_REAL;<br />
+	return false; //clang_warn - <strong>!!!<span style="color:"> или все таки true</span></strong><br />
</div><br />
Да, хотя тут более важно чтобы прерывало связывание.<br />
<br />
<div class="tx-mmforum-pi1-pt-quote">&quot;mr_dsv&quot; wrote:<br /><br />
-	    memmove(str_tmp, items[i], rec_len+(attr-&gt;len_fild&lt;db_field_ptr[posField].len_fild)?attr-&gt;len_fild:db_field_ptr[posField].len_fild);<br />
+	    memmove(str_tmp, items[i], rec_len+((attr-&gt;len_fild&lt;db_field_ptr[posField].len_fild)?attr-&gt;len_fild:db_field_ptr[posField].len_fild)); //clang_warn- <strong>!!!<span style="color:"> мне так кажется...</span></strong><br />
</div><br />
Да, код древний и GCC последовательно правильно понимает.<br />
<br />
<div class="tx-mmforum-pi1-pt-quote">&quot;mr_dsv&quot; wrote:<br /><br />
-				if(isHistReq=(lstRdMess.categ.empty() &amp;&amp; !lstRdMess.mess.empty())) lstRdMess.mess = &quot;&quot;;<br />
+				if((isHistReq=(lstRdMess.categ.empty() &amp;&amp; !lstRdMess.mess.empty()))) lstRdMess.mess = &quot;&quot;; //clang_warn<br />
</div><br />
Нет, хотя некоторые версии GCC на такое тоже ругаются, но что одинаково.<br />
<br />
<div class="tx-mmforum-pi1-pt-quote">&quot;mr_dsv&quot; wrote:<br /> <br />
-	else if(data &amp;&amp; data-&gt;func() &amp;&amp; data-&gt;TPrmTempl::Impl::cntrCmdProc(opt,&quot;/cfg&quot;))	;<br />
+	else if(data &amp;&amp; data-&gt;func() &amp;&amp; data-&gt;TPrmTempl::Impl::cntrCmdProc(opt,&quot;/cfg&quot;))	{} //clang_warn- <strong>!!!<span style="color:"> &quot;пустой&quot; if </span></strong><br />
</div><br />
Нет, это вообще дурь от CLang и таких оборотов у меня много.<br />
<br />
<div class="tx-mmforum-pi1-pt-quote">&quot;mr_dsv&quot; wrote:<br /> <br />
-	if(tmToRet != -1)	mIt.tmToRet = tmToRet;<br />
+	if(tmToRet != TimestampsToReturn(-1))	mIt.tmToRet = tmToRet; //clang_warn<br />
</div><br />
Нет, правильно:<br />
+ if((int)tmToRet != -1)	mIt.tmToRet = tmToRet;<br />
<br />
<div class="tx-mmforum-pi1-pt-quote">&quot;mr_dsv&quot; wrote:<br /> <br />
-	void setMSS( unsigned vl )	{ mMSS = vl ? vmax(100,vmin(1000000,vl)) : 0; modif(); }<br />
+	void setMSS( unsigned vl )	{ mMSS = vl ? vmax(100,vmin(65535,vl)) : 0; modif(); } //clang_warn<br />
</div><br />
Да, для входного транспорта так и есть.<br />
<br />
<div class="tx-mmforum-pi1-pt-quote">&quot;mr_dsv&quot; wrote:<br /> <br />
- 		string reqPathEl = reqPath.substr(reqElPos+1), reqPath = reqPath.substr(0,reqElPos), selNds_lim;<br />
+//clang_warn<br />
+		string reqPathEl = reqPath.substr(reqElPos+1), selNds_lim;<br />
+		reqPath = reqPath.substr(0,reqElPos);<br />
</div><br />
Да, reqPath определена уже.<br />
<br />
<div class="tx-mmforum-pi1-pt-quote">&quot;mr_dsv&quot; wrote:<br /> <br />
9. Для Vision\vis_shapes.cpp и WebVision\vca_sess.cpp &quot;приложил&quot;<br />
</div><br />
Да, в основном очистка fftOut через free(), а не delete, и прямое приведение curVal к int64_t.<br />
<br />
<div class="tx-mmforum-pi1-pt-quote">&quot;mr_dsv&quot; wrote:<br /> <br />
10. Еще такое... Может для SCADAHost: public QThread (в QTCfg и Vision) использовать QMutex (вместо ResMtx) и QWaitCondition (вместо CondVar) для синхронизации? Добавится только &quot;&amp;&quot; в -&gt;  cond.wait(&amp;mtx, ...);<br />
</div><br />
Нет, поскольку CondVar::wait() использует CLOCK_MONOTONIC, а QWaitCondition нет.      ]]></content:encoded>
			<category>Разработка OpenSCADA</category>
			<dc:creator>roman</dc:creator>
		</item>
		
		<item>
			<title>Несколько предложений/замечаний...</title>
			<link>http://oscada.org/en/forum/posts///10215/</link>
			<pubDate>Wed, 11 May 2022 12:53:07 +0300</pubDate>
			<description>Добрый день Роман!  &quot;накопалось/наболелось&quot; (относится к релизу r2825)  При компиляции с помощью clang 14 выдается ряд предупреждений на которые можно обратить внимание:  1. --- resalloc.cpp	Sat Apr 02 10:50:07 2022 +++ resalloc.cpp.m	Fri Apr 29 09:39:36 2022 @@ -47,7 +52,7 @@      int rez = 0;  #if !__GLIBC_PREREQ(2,4)      //EDEADLK imitation -    if(wThr &amp;&amp; wThr == pthread_self()) rez == EDEADLK; +    if(wThr &amp;&amp; wThr == pthread_self()) rez = EDEADLK; //clang_warn      else  #endif      if(!tm) rez = pthread_rwlock_wrlock(&amp;rwc); @@ -80,7 +85,7 @@      int rez = 0;  #if !__GLIBC_PREREQ(2,4)      //EDEADLK imitation -    if(wThr &amp;&amp; wThr == pthread_self()) rez == EDEADLK; +    if(wThr &amp;&amp; wThr == pthread_self()) rez = EDEADLK; //clang_warn      else  #endif      if(!tm) rez = pthread_rwlock_rdlock(&amp;rwc);  2. --- tprmtmpl.cpp	Tue May 03 07:59:38 2022 +++ tprmtmpl.cpp.m	Tue May 10 14:12:45 2022 @@ -549,7 +549,7 @@  	it-&gt;second.addr = &quot;&quot;; it-&gt;second.con.free();  	it-&gt;second.hops = 0;  	mess_warning(obj-&gt;nodePath().c_str(), _(&quot;Detected of the link recursion.&quot;)); -	return EVAL_REAL; +	return false; //clang_warn - !!! или все таки true      }      it-&gt;second.hops++;  3. --- dbf.cpp	Sat Apr 02 10:50:07 2022 +++ dbf.cpp.m	Tue May 10 10:58:42 2022 @@ -296,7 +300,7 @@  	for(int i = 0; i &lt; db_head_ptr-&gt;numb_rec; i++)  	{  	    str_tmp = (char*)calloc(db_head_ptr-&gt;len_rec+attr-&gt;len_fild-db_field_ptr.len_fild, 1); -	    memmove(str_tmp, items, rec_len+(attr-&gt;len_fild&lt;db_field_ptr.len_fild)?attr-&gt;len_fild:db_field_ptr.len_fild); +	    memmove(str_tmp, items, rec_len+((attr-&gt;len_fild&lt;db_field_ptr.len_fild)?attr-&gt;len_fild:db_field_ptr.len_fild)); //clang_warn- !!! мне так кажется...  	    memmove(str_tmp+rec_len+attr-&gt;len_fild, (char*)items+rec_len+db_field_ptr.len_fild, db_head_ptr-&gt;len_rec-rec_len-db_field_ptr.len_fild);  	    free(items);  	    items = str_tmp;  4. --- daq_gate.cpp	Tue May 03 07:59:38 2022 +++ daq_gate.cpp.m	Tue May 10 14:22:11 2022 @@ -674,7 +674,7 @@  				lstRdMess = TMess::SRec(SYS-&gt;sysTm()-3600*cntr.restDtTm(), 0, &quot;&quot;, 0, cntr.restDtTm()?prmNd-&gt;attr(&quot;tm&quot;):&quot;&quot;);  			    else {  				//  First initial request for not active alarms -				if(isHistReq=(lstRdMess.categ.empty() &amp;&amp; !lstRdMess.mess.empty())) lstRdMess.mess = &quot;&quot;; +				if((isHistReq=(lstRdMess.categ.empty() &amp;&amp; !lstRdMess.mess.empty()))) lstRdMess.mess = &quot;&quot;; //clang_warn    				if(lstRdMess_.time &gt; lstRdMess.time) lstRdMess = lstRdMess_;  				else if(lstRdMess_.time) lstRdMess = TMess::SRec(lstRdMess_.time+1);  5. --- modbus_prt.cpp	Tue May 03 07:59:38 2022 +++ modbus_prt.cpp.m	Tue May 10 14:24:09 2022 @@ -1558,7 +1558,7 @@  				    compileFuncSnthHgl(TSYS::strParse(progLang(),1,&quot;.&quot;),*opt);  		} catch(...) { }  	} -	else if(data &amp;&amp; data-&gt;func() &amp;&amp; data-&gt;TPrmTempl::Impl::cntrCmdProc(opt,&quot;/cfg&quot;))	; +	else if(data &amp;&amp; data-&gt;func() &amp;&amp; data-&gt;TPrmTempl::Impl::cntrCmdProc(opt,&quot;/cfg&quot;))	{} //clang_warn- !!! &quot;пустой&quot; if       }      else TCntrNode::cntrCmdProc(opt);  }  6. --- libOPC_UA.cpp	Sat Apr 02 10:50:07 2022 +++ libOPC_UA.cpp.m	Tue May 10 11:21:17 2022 @@ -4540,7 +4540,7 @@  	}  	if(!nd.isNull())	mIt.nd = nd;  	if(aid != OpcUa_NPosID)	mIt.aid = aid; -	if(tmToRet != -1)	mIt.tmToRet = tmToRet; +	if(tmToRet != TimestampsToReturn(-1))	mIt.tmToRet = tmToRet; //clang_warn  	if(qSz != OpcUa_NPosID)	mIt.qSz = std::max(uint32_t(1), std::min(uint32_t(1000),qSz));	//?!?! Make the upper limit configurable  	if(dO &gt;= 0)		mIt.dO = dO;  	if(cH != OpcUa_NPosID)	mIt.cH = cH;  7. --- socket.h	Sat Apr 02 10:50:07 2022 +++ socket.h.m	Tue May 10 11:38:23 2022 @@ -196,7 +196,7 @@    	void setTimings( const string &amp;vl, bool isDef = false );  	void setAttempts( unsigned short vl ); -	void setMSS( unsigned vl )	{ mMSS = vl ? vmax(100,vmin(1000000,vl)) : 0; modif(); } +	void setMSS( unsigned vl )	{ mMSS = vl ? vmax(100,vmin(65535,vl)) : 0; modif(); } //clang_warn  	void setTmCon( int vl )		{ mTmCon = vmax(1,vmin(60000,vl)); }    	void start( int time = 0 );  8. --- qtcfg.cpp	Tue May 03 07:59:38 2022 +++ qtcfg.cpp.m	Tue May 10 14:53:53 2022 @@ -2544,7 +2544,13 @@  	    string reqPath = node.attr(&quot;path&quot;);  	    size_t reqElPos = reqPath.rfind(&quot;/&quot;);  	    if(reqElPos != string::npos) { - 		string reqPathEl = reqPath.substr(reqElPos+1), reqPath = reqPath.substr(0,reqElPos), selNds_lim; +//clang_warn +		string reqPathEl = reqPath.substr(reqElPos+1), selNds_lim; +		reqPath = reqPath.substr(0,reqElPos);  		vector&lt;string&gt; selNds;  		QList&lt;QTreeWidgetItem *&gt; sel_ls = CtrTree-&gt;selectedItems();  		for(unsigned iEl = 0; iEl &lt; sel_ls.size(); iEl++)  9. Для Vision\vis_shapes.cpp и WebVision\vca_sess.cpp &quot;приложил&quot;  10. Еще такое... Может для SCADAHost: public QThread (в QTCfg и Vision) использовать QMutex (вместо ResMtx) и QWaitCondition (вместо CondVar) для синхронизации? Добавится только &quot;&amp;&quot; в -&gt;  cond.wait(&amp;mtx, ...);   </description>
			<content:encoded><![CDATA[      Добрый день Роман!<br />
<br />
&quot;накопалось/наболелось&quot; (относится к релизу r2825)<br />
<br />
При компиляции с помощью clang 14 выдается ряд предупреждений на которые можно обратить внимание:<br />
<br />
1.<br />
--- resalloc.cpp	Sat Apr 02 10:50:07 2022<br />
+++ resalloc.cpp.m	Fri Apr 29 09:39:36 2022<br />
@@ -47,7 +52,7 @@<br />
     int rez = 0;<br />
 #if !__GLIBC_PREREQ(2,4)<br />
     //EDEADLK imitation<br />
-    if(wThr &amp;&amp; wThr == pthread_self()) rez == EDEADLK;<br />
+    if(wThr &amp;&amp; wThr == pthread_self()) rez = EDEADLK; //clang_warn<br />
     else<br />
 #endif<br />
     if(!tm) rez = pthread_rwlock_wrlock(&amp;rwc);<br />
@@ -80,7 +85,7 @@<br />
     int rez = 0;<br />
 #if !__GLIBC_PREREQ(2,4)<br />
     //EDEADLK imitation<br />
-    if(wThr &amp;&amp; wThr == pthread_self()) rez == EDEADLK;<br />
+    if(wThr &amp;&amp; wThr == pthread_self()) rez = EDEADLK; //clang_warn<br />
     else<br />
 #endif<br />
     if(!tm) rez = pthread_rwlock_rdlock(&amp;rwc);<br />
<br />
2.<br />
--- tprmtmpl.cpp	Tue May 03 07:59:38 2022<br />
+++ tprmtmpl.cpp.m	Tue May 10 14:12:45 2022<br />
@@ -549,7 +549,7 @@<br />
 	it-&gt;second.addr = &quot;&quot;; it-&gt;second.con.free();<br />
 	it-&gt;second.hops = 0;<br />
 	mess_warning(obj-&gt;nodePath().c_str(), _(&quot;Detected of the link recursion.&quot;));<br />
-	return EVAL_REAL;<br />
+	return false; //clang_warn - <strong>!!!<span style="color:"> или все таки true</span></strong><br />
     }<br />
     it-&gt;second.hops++;<br />
<br />
3.<br />
--- dbf.cpp	Sat Apr 02 10:50:07 2022<br />
+++ dbf.cpp.m	Tue May 10 10:58:42 2022<br />
@@ -296,7 +300,7 @@<br />
 	for(int i = 0; i &lt; db_head_ptr-&gt;numb_rec; i++)<br />
 	{<br />
 	    str_tmp = (char*)calloc(db_head_ptr-&gt;len_rec+attr-&gt;len_fild-db_field_ptr[posField].len_fild, 1);<br />
-	    memmove(str_tmp, items[i], rec_len+(attr-&gt;len_fild&lt;db_field_ptr[posField].len_fild)?attr-&gt;len_fild:db_field_ptr[posField].len_fild);<br />
+	    memmove(str_tmp, items[i], rec_len+((attr-&gt;len_fild&lt;db_field_ptr[posField].len_fild)?attr-&gt;len_fild:db_field_ptr[posField].len_fild)); //clang_warn- <strong>!!!<span style="color:"> мне так кажется...</span></strong><br />
 	    memmove(str_tmp+rec_len+attr-&gt;len_fild, (char*)items[i]+rec_len+db_field_ptr[posField].len_fild, db_head_ptr-&gt;len_rec-rec_len-db_field_ptr[posField].len_fild);<br />
 	    free(items[i]);<br />
 	    items[i] = str_tmp;<br />
<br />
4.<br />
--- daq_gate.cpp	Tue May 03 07:59:38 2022<br />
+++ daq_gate.cpp.m	Tue May 10 14:22:11 2022<br />
@@ -674,7 +674,7 @@<br />
 				lstRdMess = TMess::SRec(SYS-&gt;sysTm()-3600*cntr.restDtTm(), 0, &quot;&quot;, 0, cntr.restDtTm()?prmNd-&gt;attr(&quot;tm&quot;):&quot;&quot;);<br />
 			    else {<br />
 				//  First initial request for not active alarms<br />
-				if(isHistReq=(lstRdMess.categ.empty() &amp;&amp; !lstRdMess.mess.empty())) lstRdMess.mess = &quot;&quot;;<br />
+				if((isHistReq=(lstRdMess.categ.empty() &amp;&amp; !lstRdMess.mess.empty()))) lstRdMess.mess = &quot;&quot;; //clang_warn<br />
 <br />
 				if(lstRdMess_.time &gt; lstRdMess.time) lstRdMess = lstRdMess_;<br />
 				else if(lstRdMess_.time) lstRdMess = TMess::SRec(lstRdMess_.time+1);<br />
<br />
5.<br />
--- modbus_prt.cpp	Tue May 03 07:59:38 2022<br />
+++ modbus_prt.cpp.m	Tue May 10 14:24:09 2022<br />
@@ -1558,7 +1558,7 @@<br />
 				    compileFuncSnthHgl(TSYS::strParse(progLang(),1,&quot;.&quot;),*opt);<br />
 		} catch(...) { }<br />
 	}<br />
-	else if(data &amp;&amp; data-&gt;func() &amp;&amp; data-&gt;TPrmTempl::Impl::cntrCmdProc(opt,&quot;/cfg&quot;))	;<br />
+	else if(data &amp;&amp; data-&gt;func() &amp;&amp; data-&gt;TPrmTempl::Impl::cntrCmdProc(opt,&quot;/cfg&quot;))	{} //clang_warn- <strong>!!!<span style="color:"> &quot;пустой&quot; if </span></strong><br />
     }<br />
     else TCntrNode::cntrCmdProc(opt);<br />
 }<br />
<br />
6.<br />
--- libOPC_UA.cpp	Sat Apr 02 10:50:07 2022<br />
+++ libOPC_UA.cpp.m	Tue May 10 11:21:17 2022<br />
@@ -4540,7 +4540,7 @@<br />
 	}<br />
 	if(!nd.isNull())	mIt.nd = nd;<br />
 	if(aid != OpcUa_NPosID)	mIt.aid = aid;<br />
-	if(tmToRet != -1)	mIt.tmToRet = tmToRet;<br />
+	if(tmToRet != TimestampsToReturn(-1))	mIt.tmToRet = tmToRet; //clang_warn<br />
 	if(qSz != OpcUa_NPosID)	mIt.qSz = std::max(uint32_t(1), std::min(uint32_t(1000),qSz));	//?!?! Make the upper limit configurable<br />
 	if(dO &gt;= 0)		mIt.dO = dO;<br />
 	if(cH != OpcUa_NPosID)	mIt.cH = cH;<br />
<br />
7.<br />
--- socket.h	Sat Apr 02 10:50:07 2022<br />
+++ socket.h.m	Tue May 10 11:38:23 2022<br />
@@ -196,7 +196,7 @@<br />
 <br />
 	void setTimings( const string &amp;vl, bool isDef = false );<br />
 	void setAttempts( unsigned short vl );<br />
-	void setMSS( unsigned vl )	{ mMSS = vl ? vmax(100,vmin(1000000,vl)) : 0; modif(); }<br />
+	void setMSS( unsigned vl )	{ mMSS = vl ? vmax(100,vmin(65535,vl)) : 0; modif(); } //clang_warn<br />
 	void setTmCon( int vl )		{ mTmCon = vmax(1,vmin(60000,vl)); }<br />
 <br />
 	void start( int time = 0 );<br />
<br />
8.<br />
--- qtcfg.cpp	Tue May 03 07:59:38 2022<br />
+++ qtcfg.cpp.m	Tue May 10 14:53:53 2022<br />
@@ -2544,7 +2544,13 @@<br />
 	    string reqPath = node.attr(&quot;path&quot;);<br />
 	    size_t reqElPos = reqPath.rfind(&quot;/&quot;);<br />
 	    if(reqElPos != string::npos) {<br />
- 		string reqPathEl = reqPath.substr(reqElPos+1), reqPath = reqPath.substr(0,reqElPos), selNds_lim;<br />
+//clang_warn<br />
+		string reqPathEl = reqPath.substr(reqElPos+1), selNds_lim;<br />
+		reqPath = reqPath.substr(0,reqElPos);<br />
 		vector&lt;string&gt; selNds;<br />
 		QList&lt;QTreeWidgetItem *&gt; sel_ls = CtrTree-&gt;selectedItems();<br />
 		for(unsigned iEl = 0; iEl &lt; sel_ls.size(); iEl++)<br />
<br />
9. Для Vision\vis_shapes.cpp и WebVision\vca_sess.cpp &quot;приложил&quot;<br />
<br />
10. Еще такое... Может для SCADAHost: public QThread (в QTCfg и Vision) использовать QMutex (вместо ResMtx) и QWaitCondition (вместо CondVar) для синхронизации? Добавится только &quot;&amp;&quot; в -&gt;  cond.wait(&amp;mtx, ...);<br />
<br />
<br />
      ]]></content:encoded>
			<category>Разработка OpenSCADA</category>
			<dc:creator>mr_dsv</dc:creator>
		</item>
		
		<item>
			<title>Сборка OpenSCADA в Gentoo Linux</title>
			<link>http://oscada.org/en/forum/posts///10186/</link>
			<pubDate>Mon, 28 Feb 2022 19:39:22 +0200</pubDate>
			<description>Ebuild для v.0.9.5</description>
			<content:encoded><![CDATA[      Ebuild для v.0.9.5      ]]></content:encoded>
			<category>Разработка OpenSCADA</category>
			<dc:creator>IrmIngeneer</dc:creator>
		</item>
		
		<item>
			<title>Сборка OpenSCADA в Gentoo Linux</title>
			<link>http://oscada.org/en/forum/posts///10154/</link>
			<pubDate>Sun, 24 Oct 2021 18:00:05 +0300</pubDate>
			<description> Поправил хэши.  Выгрузил</description>
			<content:encoded><![CDATA[      <div class="tx-mmforum-pi1-pt-quote">&quot;IrmIngeneer&quot; wrote:<br /><br />
Поправил хэши.<br />
</div><br />
Выгрузил      ]]></content:encoded>
			<category>Разработка OpenSCADA</category>
			<dc:creator>roman</dc:creator>
		</item>
		
		<item>
			<title>Сборка OpenSCADA в Gentoo Linux</title>
			<link>http://oscada.org/en/forum/posts///10153/</link>
			<pubDate>Sun, 24 Oct 2021 17:51:24 +0300</pubDate>
			<description>Поправил хэши. </description>
			<content:encoded><![CDATA[      Поправил хэши.<br />
      ]]></content:encoded>
			<category>Разработка OpenSCADA</category>
			<dc:creator>IrmIngeneer</dc:creator>
		</item>
		
		<item>
			<title>Сборка OpenSCADA в Debian 11</title>
			<link>http://oscada.org/en/forum/posts///10146/</link>
			<pubDate>Wed, 22 Sep 2021 16:22:01 +0300</pubDate>
			<description>Отлично. Я смотрел только на страницу загрузки на сайте (русская версия). И, если ничего не путаю, ещё вчера там не было указано наличия пакета. Спасибо за ответ.</description>
			<content:encoded><![CDATA[      Отлично. Я смотрел только на страницу загрузки на сайте (русская версия). И, если ничего не путаю, ещё вчера там не было указано наличия пакета. Спасибо за ответ.      ]]></content:encoded>
			<category>Разработка OpenSCADA</category>
			<dc:creator>walhi</dc:creator>
		</item>
		
		<item>
			<title>Сборка OpenSCADA в Debian 11</title>
			<link>http://oscada.org/en/forum/posts///10145/</link>
			<pubDate>Wed, 22 Sep 2021 15:56:00 +0300</pubDate>
			<description>Давно появилось (19-Aug-2021 11:30) и все необходимые зависимости для сборки DEB-пакетов целиком с пакетами из официального репозитория в файле debian/control указано!!!</description>
			<content:encoded><![CDATA[      Давно появилось (19-Aug-2021 11:30) и все необходимые зависимости для сборки DEB-пакетов целиком с пакетами из официального репозитория в файле debian/control указано!!!      ]]></content:encoded>
			<category>Разработка OpenSCADA</category>
			<dc:creator>roman</dc:creator>
		</item>
		
		<item>
			<title>Сборка OpenSCADA в Debian 11</title>
			<link>http://oscada.org/en/forum/posts///10144/</link>
			<pubDate>Wed, 22 Sep 2021 15:27:38 +0300</pubDate>
			<description>Добрый день! Не знаю, когда появится официальная сборка под 11 версию, так что поделюсь &quot;опытом&quot;. Собирал в первый раз за всю жизнь и наткнулся на одну небольшую проблемку. Отсутствие Qt5 в репозитории (*qt*-dev). В сети есть упоминание данной &quot;проблемы&quot;. Так что его приходится устанавливать с официального сайта и подсовывать перед выполнением ./configure. $ ~/software/OpenSCADA$ export PKG_CONFIG_PATH=~/Qt/5.12.11/gcc_64/lib/pkgconfig/   $ ~/software/OpenSCADA$ ./configure  Остальные зависимости доустанавливать как обычно и все вполне собирается.</description>
			<content:encoded><![CDATA[      Добрый день! Не знаю, когда появится официальная сборка под 11 версию, так что поделюсь &quot;опытом&quot;. Собирал в первый раз за всю жизнь и наткнулся на одну небольшую проблемку. Отсутствие Qt5 в репозитории (*qt*-dev). В сети есть <a href="https://www.opennet.ru/opennews/art.shtml?num=53568" target="_blank" class="link_10">упоминание</a> данной &quot;проблемы&quot;. Так что его приходится устанавливать с официального сайта и подсовывать перед выполнением ./configure.<br />
<div class="tx-mmforum-pi1-codeheader">JAVASCRIPT</div><div class="tx-mmforum-pi1-codeblock"><style type="text/css"><!----></style><pre style="margin:0px;">$ ~/software/OpenSCADA$ export PKG_CONFIG_PATH=~/Qt/5.12.11/gcc_64/lib/pkgconfig/  
$ ~/software/OpenSCADA$ ./configure</pre></div><br />
Остальные зависимости доустанавливать как обычно и все вполне собирается.      ]]></content:encoded>
			<category>Разработка OpenSCADA</category>
			<dc:creator>walhi</dc:creator>
		</item>
		
		<item>
			<title>Сборка OpenSCADA в Gentoo Linux</title>
			<link>http://oscada.org/en/forum/posts///10110/</link>
			<pubDate>Sat, 03 Jul 2021 10:19:09 +0300</pubDate>
			<description> В соответствие с темой http://oscada.org/ru/forum/posts/otslezhivanie_oshibok/vision_gentoo_qt_5152_ne_raskryvajutsja_sostavnye_attributy/ добавил пач.  Выгрузил. Однако запустил последнюю сборку 0.9.4 LTS с рядом исправлений, поэтому хеши там слетят!</description>
			<content:encoded><![CDATA[      <div class="tx-mmforum-pi1-pt-quote">&quot;IrmIngeneer&quot; wrote:<br /><br />
В соответствие с темой<br />
<a href="http://oscada.org/ru/forum/posts/otslezhivanie_oshibok/vision_gentoo_qt_5152_ne_raskryvajutsja_sostavnye_attributy/" target="_blank" class="link_10">http://oscada.org/ru/forum/posts/otslezhivanie_oshibok/vision_gentoo_qt_5152_ne_raskryvajutsja_sostavnye_attributy/</a><br />
добавил пач.<br />
</div><br />
Выгрузил.<br />
Однако запустил последнюю сборку 0.9.4 LTS с рядом исправлений, поэтому хеши там слетят!      ]]></content:encoded>
			<category>Разработка OpenSCADA</category>
			<dc:creator>roman</dc:creator>
		</item>
		
		<item>
			<title>Сборка OpenSCADA в Gentoo Linux</title>
			<link>http://oscada.org/en/forum/posts///10108/</link>
			<pubDate>Wed, 30 Jun 2021 01:27:22 +0300</pubDate>
			<description>В соответствие с темой http://oscada.org/ru/forum/posts/otslezhivanie_oshibok/vision_gentoo_qt_5152_ne_raskryvajutsja_sostavnye_attributy/ добавил пач. </description>
			<content:encoded><![CDATA[      В соответствие с темой<br />
<a href="http://oscada.org/ru/forum/posts/otslezhivanie_oshibok/vision_gentoo_qt_5152_ne_raskryvajutsja_sostavnye_attributy/" target="_blank" class="link_10">http://oscada.org/ru/forum/posts/otslezhivanie_oshibok/vision_gentoo_qt_5152_ne_raskryvajutsja_sostavnye_attributy/</a><br />
добавил пач.<br />
      ]]></content:encoded>
			<category>Разработка OpenSCADA</category>
			<dc:creator>IrmIngeneer</dc:creator>
		</item>
		
		<item>
			<title>Отображение логарифмических значений в виджете /wlb_Main/wdg_ElViewGraph</title>
			<link>http://oscada.org/en/forum/posts///10050/</link>
			<pubDate>Sat, 16 Jan 2021 22:02:09 +0200</pubDate>
			<description>Роман, большое спасибо!  Хотел только заметить, что если значение prec отрицательно, то код все равно будет отображать в десятичной форме. Может быть, есть смысл сразу брать abs(prec), а не ветвить код в зависимости от знака prec?  то есть, вместо   else lb_val_arg0val = prec.isEVal() ? varEl.toPrecision(6) : ((prec &lt; 0) ? varEl.toPrecision(abs(prec)) : (log?varEl.toExponential(prec):varEl.toFixed(prec)));   сразу:  else lb_val_arg0val =  prec.isEVal() ? varEl.toPrecision(6) : (log?varEl.toExponential(abs(prec)):varEl.toFixed(abs(prec)));    Также, я поглядел код виджетов /wlb_Main/wdg_anShow, /wlb_Main/wdg_anShow1 и /wlb_Main/wdg_anShow1s. Там в общем аналогичная история - проверки на log=true нигде нет. Может быть, стоило бы ее ввести?   </description>
			<content:encoded><![CDATA[      Роман, большое спасибо!<br />
<br />
Хотел только заметить, что если значение prec отрицательно, то код все равно будет отображать в десятичной форме.<br />
Может быть, есть смысл сразу брать abs(prec), а не ветвить код в зависимости от знака prec?<br />
<br />
то есть, вместо<br />
<br />
<div class="tx-mmforum-pi1-codeheader">JAVASCRIPT</div><div class="tx-mmforum-pi1-codeblock"><style type="text/css"><!----></style><pre style="margin:0px;">else lb_val_arg0val = prec.isEVal() ? varEl.toPrecision(6) : ((prec &lt; 0) ? varEl.toPrecision(abs(prec)) : (log?varEl.toExponential(prec):varEl.toFixed(prec)));</pre></div><br />
<br />
сразу:<br />
<div class="tx-mmforum-pi1-codeheader">JAVASCRIPT</div><div class="tx-mmforum-pi1-codeblock"><style type="text/css"><!----></style><pre style="margin:0px;">else lb_val_arg0val =  prec.isEVal() ? varEl.toPrecision(6) : (log?varEl.toExponential(abs(prec)):varEl.toFixed(abs(prec)));</pre></div><br />
<br />
<br />
Также, я поглядел код виджетов /wlb_Main/wdg_anShow, /wlb_Main/wdg_anShow1 и /wlb_Main/wdg_anShow1s. Там в общем аналогичная история - проверки на log=true нигде нет. Может быть, стоило бы ее ввести?<br />
<br />
<br />
      ]]></content:encoded>
			<category>Разработка OpenSCADA</category>
			<dc:creator>samsond</dc:creator>
		</item>
		
		<item>
			<title>Сборка OpenSCADA в Gentoo Linux</title>
			<link>http://oscada.org/en/forum/posts///10048/</link>
			<pubDate>Sat, 16 Jan 2021 20:01:15 +0200</pubDate>
			<description> ebuild для v.0.9.3.  Выгрузил!   Всех со всеми прошедшими.  Спасибо, идентично.</description>
			<content:encoded><![CDATA[      <div class="tx-mmforum-pi1-pt-quote">&quot;IrmIngeneer&quot; wrote:<br /><br />
ebuild для v.0.9.3.<br />
</div><br />
Выгрузил!<br />
<br />
<div class="tx-mmforum-pi1-pt-quote">&quot;IrmIngeneer&quot; wrote:<br /><br />
Всех со всеми прошедшими.<br />
</div><br />
Спасибо, идентично.      ]]></content:encoded>
			<category>Разработка OpenSCADA</category>
			<dc:creator>roman</dc:creator>
		</item>
		
		<item>
			<title>Отображение логарифмических значений в виджете /wlb_Main/wdg_ElViewGraph</title>
			<link>http://oscada.org/en/forum/posts///10047/</link>
			<pubDate>Sat, 16 Jan 2021 19:55:42 +0200</pubDate>
			<description> Для улучшения читаемости показаний, предлагаю скорректировать поведение виджета /wlb_Main/wdg_ElViewGraph следующим образом.  Что делается проще:  else lb_val_arg0val = prec.isEVal() ? varEl.toPrecision(6) : ((prec &lt; 0) ? varEl.toPrecision(abs(prec)) : (log?varEl.toExponential(prec):varEl.toFixed(prec)));   Включил в библиотеку!</description>
			<content:encoded><![CDATA[      <div class="tx-mmforum-pi1-pt-quote">&quot;samsond&quot; wrote:<br /><br />
Для улучшения читаемости показаний, предлагаю скорректировать поведение виджета /wlb_Main/wdg_ElViewGraph следующим образом.<br />
</div><br />
Что делается проще:<br />
<div class="tx-mmforum-pi1-codeheader">JAVASCRIPT</div><div class="tx-mmforum-pi1-codeblock"><style type="text/css"><!----></style><pre style="margin:0px;">else lb_val_arg0val = prec.isEVal() ? varEl.toPrecision(6) : ((prec &lt; 0) ? varEl.toPrecision(abs(prec)) : (log?varEl.toExponential(prec):varEl.toFixed(prec)));</pre></div><br />
<br />
Включил в библиотеку!      ]]></content:encoded>
			<category>Разработка OpenSCADA</category>
			<dc:creator>roman</dc:creator>
		</item>
		
		<item>
			<title>Сборка OpenSCADA в Gentoo Linux</title>
			<link>http://oscada.org/en/forum/posts///10043/</link>
			<pubDate>Thu, 14 Jan 2021 20:04:13 +0200</pubDate>
			<description>ebuild для v.0.9.3. Всех со всеми прошедшими.</description>
			<content:encoded><![CDATA[      ebuild для v.0.9.3.<br />
Всех со всеми прошедшими.      ]]></content:encoded>
			<category>Разработка OpenSCADA</category>
			<dc:creator>IrmIngeneer</dc:creator>
		</item>
		
		<item>
			<title>Отображение логарифмических значений в виджете /wlb_Main/wdg_ElViewGraph</title>
			<link>http://oscada.org/en/forum/posts///10041/</link>
			<pubDate>Wed, 13 Jan 2021 18:04:07 +0200</pubDate>
			<description>Для улучшения читаемости показаний, предлагаю скорректировать поведение виджета /wlb_Main/wdg_ElViewGraph следующим образом. В случае, если значение привязанного к нему параметра имеет логарифмическую шкалу (значение атрибута log = true), то выводить это значение в экспоненциальной записи. Для изменения поведения предлагается следующая модификация в коде обработчика виджета:  Было:  if(varEl.isEVal()) 	lb_val_arg0val = &quot;-&quot;; else if(!digStts.isEVal() &amp;&amp; digStts.length) 	lb_val_arg0val = (varEl^digRevers) ? digStts.parse(0,&quot;;&quot;).parse(0,&quot;-&quot;) : digStts.parse(1,&quot;;&quot;).parse(0,&quot;-&quot;); else 	lb_val_arg0val = prec.isEVal() ? varEl.toPrecision(6) : ((prec &lt; 0) ? varEl.toPrecision(abs(prec)) : varEl.toFixed(prec));   Стало:  if(varEl.isEVal()) 	lb_val_arg0val = &quot;-&quot;; else if(!digStts.isEVal() &amp;&amp; digStts.length) 	lb_val_arg0val = (varEl^digRevers) ? digStts.parse(0,&quot;;&quot;).parse(0,&quot;-&quot;) : digStts.parse(1,&quot;;&quot;).parse(0,&quot;-&quot;); else if(log) 	lb_val_arg0val = prec.isEVal() ? varEl.toPrecision(6) : ((prec &lt; 0) ? varEl.toPrecision(abs(prec)) : varEl.toExponential(prec)); else 	lb_val_arg0val = prec.isEVal() ? varEl.toPrecision(6) : ((prec &lt; 0) ? varEl.toPrecision(abs(prec)) : varEl.toFixed(prec));   В своей локальной копии библиотеки сделал такую замену. Стало заметно удобнее.</description>
			<content:encoded><![CDATA[      Для улучшения читаемости показаний, предлагаю скорректировать поведение виджета /wlb_Main/wdg_ElViewGraph следующим образом.<br />
В случае, если значение привязанного к нему параметра имеет логарифмическую шкалу (значение атрибута log = true), то выводить это значение в экспоненциальной записи.<br />
Для изменения поведения предлагается следующая модификация в коде обработчика виджета:<br />
<br />
<strong>Было:</strong><br />
<div class="tx-mmforum-pi1-codeheader">JAVASCRIPT</div><div class="tx-mmforum-pi1-codeblock"><style type="text/css"><!----></style><pre style="margin:0px;">if(varEl.isEVal())
	lb_val_arg0val = &quot;-&quot;;
else if(!digStts.isEVal() &amp;&amp; digStts.length)
	lb_val_arg0val = (varEl^digRevers) ? digStts.parse(0,&quot;;&quot;).parse(0,&quot;-&quot;) : digStts.parse(1,&quot;;&quot;).parse(0,&quot;-&quot;);
else
	lb_val_arg0val = prec.isEVal() ? varEl.toPrecision(6) : ((prec &lt; 0) ? varEl.toPrecision(abs(prec)) : varEl.toFixed(prec));</pre></div><br />
<br />
<strong>Стало:</strong><br />
<div class="tx-mmforum-pi1-codeheader">JAVASCRIPT</div><div class="tx-mmforum-pi1-codeblock"><style type="text/css"><!----></style><pre style="margin:0px;">if(varEl.isEVal())
	lb_val_arg0val = &quot;-&quot;;
else if(!digStts.isEVal() &amp;&amp; digStts.length)
	lb_val_arg0val = (varEl^digRevers) ? digStts.parse(0,&quot;;&quot;).parse(0,&quot;-&quot;) : digStts.parse(1,&quot;;&quot;).parse(0,&quot;-&quot;);
else if(log)
	lb_val_arg0val = prec.isEVal() ? varEl.toPrecision(6) : ((prec &lt; 0) ? varEl.toPrecision(abs(prec)) : varEl.toExponential(prec));
else
	lb_val_arg0val = prec.isEVal() ? varEl.toPrecision(6) : ((prec &lt; 0) ? varEl.toPrecision(abs(prec)) : varEl.toFixed(prec));</pre></div><br />
<br />
В своей локальной копии библиотеки сделал такую замену. Стало заметно удобнее.      ]]></content:encoded>
			<category>Разработка OpenSCADA</category>
			<dc:creator>samsond</dc:creator>
		</item>
		
		<item>
			<title>Несколько предложений/замечаний...</title>
			<link>http://oscada.org/en/forum/posts///10038/</link>
			<pubDate>Fri, 01 Jan 2021 14:59:12 +0200</pubDate>
			<description> там написано, что так и должно быть. Но из за этого случайно удадял весь код пару раз. Хорошо бы если эту операцию нужно было пдтвердить.  Мне не нужно такое, а восстановить всегда можно перезагрузкой и бекапами.</description>
			<content:encoded><![CDATA[      <div class="tx-mmforum-pi1-pt-quote">&quot;tka4ev_s&quot; wrote:<br /><br />
там написано, что так и должно быть. Но из за этого случайно удадял весь код пару раз. Хорошо бы если эту операцию нужно было пдтвердить.<br />
</div><br />
Мне не нужно такое, а восстановить всегда можно перезагрузкой и бекапами.      ]]></content:encoded>
			<category>Разработка OpenSCADA</category>
			<dc:creator>roman</dc:creator>
		</item>
		
		<item>
			<title>Несколько предложений/замечаний...</title>
			<link>http://oscada.org/en/forum/posts///10037/</link>
			<pubDate>Fri, 01 Jan 2021 14:55:37 +0200</pubDate>
			<description>там написано, что так и должно быть. Но из за этого случайно удадял весь код пару раз. Хорошо бы если эту операцию нужно было пдтвердить.</description>
			<content:encoded><![CDATA[      там написано, что так и должно быть. Но из за этого случайно удадял весь код пару раз. Хорошо бы если эту операцию нужно было пдтвердить.      ]]></content:encoded>
			<category>Разработка OpenSCADA</category>
			<dc:creator>tka4ev_s</dc:creator>
		</item>
		
		<item>
			<title>Несколько предложений/замечаний...</title>
			<link>http://oscada.org/en/forum/posts///10036/</link>
			<pubDate>Fri, 01 Jan 2021 14:39:35 +0200</pubDate>
			<description> Периодически сталкиваюсь с неудобством когда прокручиваешь колесико мыши на поле &quot;Язык процедуры&quot; очищается поле кода программы. если есть возможность сделать чтобы текст программы не удолялся.  Может подсказку почитать?</description>
			<content:encoded><![CDATA[      <div class="tx-mmforum-pi1-pt-quote">&quot;tka4ev_s&quot; wrote:<br /><br />
Периодически сталкиваюсь с неудобством когда прокручиваешь колесико мыши на поле &quot;Язык процедуры&quot; очищается поле кода программы.<br />
если есть возможность сделать чтобы текст программы не удолялся.<br />
</div><br />
Может подсказку почитать?      ]]></content:encoded>
			<category>Разработка OpenSCADA</category>
			<dc:creator>roman</dc:creator>
		</item>
		
		<item>
			<title>Несколько предложений/замечаний...</title>
			<link>http://oscada.org/en/forum/posts///10033/</link>
			<pubDate>Fri, 01 Jan 2021 12:32:03 +0200</pubDate>
			<description>Добрый день ! Периодически сталкиваюсь с неудобством когда прокручиваешь колесико мыши на поле &quot;Язык процедуры&quot; очищается поле кода программы. если есть возможность сделать чтобы текст программы не удолялся.</description>
			<content:encoded><![CDATA[      Добрый день !<br />
Периодически сталкиваюсь с неудобством когда прокручиваешь колесико мыши на поле &quot;Язык процедуры&quot; очищается поле кода программы.<br />
если есть возможность сделать чтобы текст программы не удолялся.      ]]></content:encoded>
			<category>Разработка OpenSCADA</category>
			<dc:creator>tka4ev_s</dc:creator>
		</item>
		
		<item>
			<title>Сборка OpenSCADA в Gentoo Linux</title>
			<link>http://oscada.org/en/forum/posts///10010/</link>
			<pubDate>Fri, 27 Nov 2020 21:23:41 +0200</pubDate>
			<description> Спасибо, работает.  Пожалуйста.   Обновите, пожалуйста, архив с ebuild.  Обновил</description>
			<content:encoded><![CDATA[      <div class="tx-mmforum-pi1-pt-quote">&quot;IrmIngeneer&quot; wrote:<br /><br />
Спасибо, работает.<br />
</div><br />
Пожалуйста.<br />
<br />
<div class="tx-mmforum-pi1-pt-quote">&quot;IrmIngeneer&quot; wrote:<br /><br />
Обновите, пожалуйста, архив с ebuild.<br />
</div><br />
Обновил      ]]></content:encoded>
			<category>Разработка OpenSCADA</category>
			<dc:creator>roman</dc:creator>
		</item>
		
		<item>
			<title>Сборка OpenSCADA в Gentoo Linux</title>
			<link>http://oscada.org/en/forum/posts///10009/</link>
			<pubDate>Thu, 26 Nov 2020 01:24:11 +0200</pubDate>
			<description>Спасибо, работает. Обновите, пожалуйста, архив с ebuild. </description>
			<content:encoded><![CDATA[      Спасибо, работает.<br />
Обновите, пожалуйста, архив с ebuild.<br />
      ]]></content:encoded>
			<category>Разработка OpenSCADA</category>
			<dc:creator>IrmIngeneer</dc:creator>
		</item>
		
		<item>
			<title>Сборка OpenSCADA в Gentoo Linux</title>
			<link>http://oscada.org/en/forum/posts///10008/</link>
			<pubDate>Tue, 24 Nov 2020 18:23:26 +0200</pubDate>
			<description> Вновь обновились Qt, нынче стабильна 5.15, и вновь OpenSCADA перестала собираться, лог сборки прилагаю.  Ну так, правьте, вроде всё очевидно: Index: src/moduls/ui/QTStarter/tuimod.cpp =================================================================== --- src/moduls/ui/QTStarter/tuimod.cpp  (revision 2720) +++ src/moduls/ui/QTStarter/tuimod.cpp  (working copy) @@ -45,6 +45,7 @@  #include &lt;QStyle&gt;  #include &lt;QScrollBar&gt;  #include &lt;QPainter&gt; +#include &lt;QPainterPath&gt;   #include &lt;tsys.h&gt;  #include &lt;tmess.h&gt;</description>
			<content:encoded><![CDATA[      <div class="tx-mmforum-pi1-pt-quote">&quot;IrmIngeneer&quot; wrote:<br /><br />
Вновь обновились Qt, нынче стабильна 5.15, и вновь OpenSCADA перестала собираться, лог сборки прилагаю.<br />
</div><br />
Ну так, правьте, вроде всё очевидно:<br />
<div class="tx-mmforum-pi1-pt-quote">Index: src/moduls/ui/QTStarter/tuimod.cpp<br />
===================================================================<br />
--- src/moduls/ui/QTStarter/tuimod.cpp  (revision 2720)<br />
+++ src/moduls/ui/QTStarter/tuimod.cpp  (working copy)<br />
@@ -45,6 +45,7 @@<br />
 #include &lt;QStyle&gt;<br />
 #include &lt;QScrollBar&gt;<br />
 #include &lt;QPainter&gt;<br />
+#include &lt;QPainterPath&gt;<br />
<br />
 #include &lt;tsys.h&gt;<br />
 #include &lt;tmess.h&gt;</div>      ]]></content:encoded>
			<category>Разработка OpenSCADA</category>
			<dc:creator>roman</dc:creator>
		</item>
		
	</channel>
</rss>
