<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: запуск консоли в фоновом режиме]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=15073</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=15073&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: запуск консоли в фоновом режиме».]]></description>
		<lastBuildDate>Sat, 18 Jan 2020 07:53:13 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: запуск консоли в фоновом режиме]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=137338#p137338</link>
			<description><![CDATA[<p>Доброго времени суток.</p><p>Протестировал утилиту modpol v3.6, <a href="https://www.modbusdriver.com/modpoll.html">https://www.modbusdriver.com/modpoll.html</a>. Может, кому будет интересно.</p><p>В принципе, неплохая попытка привести коммуникацию с Modbus устройствами в более удобоваримый вид и легко прикручивается к AHK, но пока сыровата. Некорректно работают некоторые функции (это до чего докопался, может еще что-то есть):</p><p>1) Некорректно обрабатываются ответы от Slave типа float32. Конкретно, точность ответа modpoll отличается от точности наладочных программ. Пример, показания счетчика электроэнергии, полученные через modpoll и другими программами: 188 и 188.8475 соответственно. Вероятно, при увеличении показаний точность будет еще уменьшатся. Конечно, в принципе можно получать ответы в шестнадцатеричном виде и конвертировать самому...</p><p>2) Утилита коряво работает с записью в регистры, то есть лишь ограниченно пригодна для управления исполнительными устройствами. Запись почти не документирована. На проверку оказалось, что утилита поддерживает только функцию 10 (write multiple coils) но не поддерживает 5 (write single coil). </p><p>3) Утилита не работает под WinXP (Not valid win32 application).</p><p>В общем, утилита на данный момент пригодна для опроса датчиков, с учетом изложенного в п.1. Однако все,&nbsp; что выходит за пределы 4 стандартных функций Modbus, ей не под силу.</p>]]></description>
			<author><![CDATA[null@example.com (equipment66)]]></author>
			<pubDate>Sat, 18 Jan 2020 07:53:13 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=137338#p137338</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: запуск консоли в фоновом режиме]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=136733#p136733</link>
			<description><![CDATA[<p>Спасибо,&nbsp; работает.</p><p>Modbus - это протокол коммуникаци оборудования над RS-485, по архитектуре Master/Slave. В основном используется в промышленности, но и в умных домах тоже. <br />Modpoll - comand line утилита для Modbus. Единственное, что пока нашел свободного и совместимого с АНК.</p>]]></description>
			<author><![CDATA[null@example.com (equipment66)]]></author>
			<pubDate>Mon, 02 Dec 2019 12:33:03 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=136733#p136733</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: запуск консоли в фоновом режиме]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=136725#p136725</link>
			<description><![CDATA[<p>Не в курсе, что такое ModBus и modpoll, но можно попробовать так запустить:<br /></p><div class="codebox"><pre><code>MsgBox, % CmdRet(CommandLine)

CmdRet(sCmd, callBackFuncObj := &quot;&quot;, encoding := &quot;CP866&quot;)
{
   static HANDLE_FLAG_INHERIT := 0x00000001, flags := HANDLE_FLAG_INHERIT
        , STARTF_USESTDHANDLES := 0x100, CREATE_NO_WINDOW := 0x08000000
   
   DllCall(&quot;CreatePipe&quot;, &quot;PtrP&quot;, hPipeRead, &quot;PtrP&quot;, hPipeWrite, &quot;Ptr&quot;, 0, &quot;UInt&quot;, 0)
   DllCall(&quot;SetHandleInformation&quot;, &quot;Ptr&quot;, hPipeWrite, &quot;UInt&quot;, flags, &quot;UInt&quot;, HANDLE_FLAG_INHERIT)
   
   VarSetCapacity(STARTUPINFO , siSize :=    A_PtrSize*4 + 4*8 + A_PtrSize*5, 0)
   NumPut(siSize              , STARTUPINFO)
   NumPut(STARTF_USESTDHANDLES, STARTUPINFO, A_PtrSize*4 + 4*7)
   NumPut(hPipeWrite          , STARTUPINFO, A_PtrSize*4 + 4*8 + A_PtrSize*3)
   NumPut(hPipeWrite          , STARTUPINFO, A_PtrSize*4 + 4*8 + A_PtrSize*4)
   
   VarSetCapacity(PROCESS_INFORMATION, A_PtrSize*2 + 4*2, 0)

   if !DllCall(&quot;CreateProcess&quot;, &quot;UInt&quot;, 0, &quot;Str&quot;, sCmd, &quot;UInt&quot;, 0, &quot;UInt&quot;, 0, &quot;UInt&quot;, true, &quot;UInt&quot;, CREATE_NO_WINDOW
                              , &quot;UInt&quot;, 0, &quot;UInt&quot;, 0, &quot;Ptr&quot;, &amp;STARTUPINFO, &quot;Ptr&quot;, &amp;PROCESS_INFORMATION)
   {
      DllCall(&quot;CloseHandle&quot;, &quot;Ptr&quot;, hPipeRead)
      DllCall(&quot;CloseHandle&quot;, &quot;Ptr&quot;, hPipeWrite)
      throw Exception(&quot;CreateProcess is failed&quot;)
   }
   DllCall(&quot;CloseHandle&quot;, &quot;Ptr&quot;, hPipeWrite)
   VarSetCapacity(sTemp, 4096), nSize := 0
   while DllCall(&quot;ReadFile&quot;, &quot;Ptr&quot;, hPipeRead, &quot;Ptr&quot;, &amp;sTemp, &quot;UInt&quot;, 4096, &quot;UIntP&quot;, nSize, &quot;UInt&quot;, 0) {
      sOutput .= stdOut := StrGet(&amp;sTemp, nSize, encoding)
      ( callBackFuncObj &amp;&amp; callBackFuncObj.Call(stdOut) )
   }
   DllCall(&quot;CloseHandle&quot;, &quot;Ptr&quot;, NumGet(PROCESS_INFORMATION))
   DllCall(&quot;CloseHandle&quot;, &quot;Ptr&quot;, NumGet(PROCESS_INFORMATION, A_PtrSize))
   DllCall(&quot;CloseHandle&quot;, &quot;Ptr&quot;, hPipeRead)
   Return sOutput
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sun, 01 Dec 2019 21:52:45 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=136725#p136725</guid>
		</item>
		<item>
			<title><![CDATA[AHK: запуск консоли в фоновом режиме]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=136724#p136724</link>
			<description><![CDATA[<p>Доброго времени суток.</p><p>Задача: достучатся до сети ModBus из AHK . Нашел консольное приложение modpoll, пример кода - из Help&#039;a AHK. Вызываю modpoll из скрипта с перехватом StdOut, все работает. </p><p>Код AHK: <br /></p><div class="codebox"><pre><code>
String = &quot; C:\Users\HP\Desktop\Log\win\modpoll -b 9600 -p none -s 1 -m tcp -o 3 -t 3:float -a 10 -r 256 -c 1 -1 192.168.10.245 &quot;
CommandLine = %ComSpec% /c %String%

shell := ComObjCreate(&quot;WScript.Shell&quot;)
exec := shell.Exec(CommandLine) 
Result := exec.StdOut.ReadAll()
</code></pre></div><p>Вопрос в том, как добиться, чтобы консоль запускалась в фоновом режиме и не докучала выскакивающим окном?</p>]]></description>
			<author><![CDATA[null@example.com (equipment66)]]></author>
			<pubDate>Sun, 01 Dec 2019 20:49:27 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=136724#p136724</guid>
		</item>
	</channel>
</rss>
