Вверх ↑
Этот топик читают: Гость
Ответов: 59
Рейтинг: 1
#1: 2022-09-17 12:53:32 ЛС | профиль | цитата
Всех приветствую.
Ниже я постараюсь объяснить проблему.
Есть счетчик написаны в Python он работает в консольном режиме, он отсчитывает каждую секунду и выводит это событие в консоль, имеет такой вид
53423424.PNG
Так вот если запустить программу 1.exe( она же консоль питона) то все отрабатывается корректно, но вот если открыть эту консоль через WinExec то данные из 1.exe не приходят в WinExec по мере поступления, а приходят "пакетами" по ~250строчек раз в ~25 секунд.( причем первый "пакет" приходит только через ~50 секунд.)
3213131313.PNG
Соответственно у меня вопрос от чего такие невменяемые задержки могут быть ?

Схема и сам файл 1.exe https://wdfiles.ru/82660b

P.S. Буду крайне признателен за любую помощь.

Редактировалось 1 раз(а), последний 2022-09-18 12:18:17
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 462
Рейтинг: 160
#2: 2022-09-17 22:00:46 ЛС | профиль | цитата
Pavel,
Pavel писал(а):
Схема и сам файл

А где схема.jpg
карма: 4

0
Ответов: 59
Рейтинг: 1
#3: 2022-09-18 12:19:30 ЛС | профиль | цитата
tig-rrr,
Поправил ссылку на архив в первом посте.
карма: 0

0
Ответов: 59
Рейтинг: 1
#4: 2022-09-18 14:59:02 ЛС | профиль | цитата
Заметил странную закономерность! Если увеличить скорость счетчика в питоне (с 0.1 до 0.01 секунды) то количество принятых строк в WinExec примерно тоже 228 строк, но вот период принятия этих строк значительно уменьшился с ~25сек до ~3сек.
укеупвап.PNG

Такое ощущение, что WinExec ожидает накопления ~228 строк для того чтобы их получить.

Еще одно занятное наблюдение: если увеличеть строку до такого размера
Строка
"До завершения программы: 1107 сек.---------------> (тут 700 пробелов. форум подтирает их ) Конец."
то скорость приема WinExe уже равна сек.1 стр.13
упвпвапвп.PNG

Какие мысли могут быть господа ?

Редактировалось 4 раз(а), последний 2022-09-18 15:23:27
карма: 0

0
Ответов: 462
Рейтинг: 160
#5: 2022-09-18 21:42:14 ЛС | профиль | цитата
Pavel, а обязательно данные из Python в Hiasm передавать через консоль?
Тест передачи данных из Python в Hiasm через сокет

Add(MainForm,2004744,322,322)
{
Width=350
Height=607
Caption="Test PY =› HIASM socket"
link(onCreate,9564573:doOpen,[])
}
Add(TCP_Server,9564573,378,336)
{
Port=4545
link(onRead,8529979:doSplit,[])
link(onConnect,9564573:doSend,[(422,349)(422,377)(366,377)(366,356)])
AddHint(-7,54,39,13,Port)
}
Add(TCP_Client,13546269,420,210)
{
Port=4545
IP="127.0.0.1"
link(onRead,13345042:doData,[])
AddHint(-10,-34,39,13,Port)
}
Add(DoData,13345042,469,210)
{
Data=String(HIASM)
link(onEventData,8505971:doEvent1,[(522,216)(522,256)(370,256)(370,230)])
}
Add(Hub,8505971,385,224)
{
link(onEvent1,13546269:doSend,[])
link(onEvent2,13546269:doClose,[(409,237)(409,223)])
}
Add(MT_Part,8529979,434,336)
{
link(onPart,8769512:doCharset,[])
}
Add(ListBox,5219673,581,392)
{
Left=25
Top=65
Width=295
Height=485
Point(doSelect)
Point(doSelectString)
}
Add(Button,2666426,322,210)
{
Left=175
Top=10
Width=145
Caption="Hiasm -› Socet"
link(onClick,13546269:doOpen,[])
}
Add(StrList,949306,742,245)
{
FileName="socet+.py"
Point(doSave)
}
Add(WinExec,6178432,742,301)
{
FileName="socet+.py"
Mode=0
Point(doConsoleExec)
Point(onConsoleResult)
AddHint(-18,46,61,13,FileName)
}
Add(Hub,5253073,700,266)
{
OutCount=3
link(onEvent1,949306:doText,[])
link(onEvent2,949306:doSave,[])
link(onEvent3,6178432:doShellExec,[(724,286)(724,314)])
}
Add(Charset,4850732,644,266)
{
Type=6
link(onCharset,5253073:doEvent1,[])
link(Text,4632261:FString,[])
}
Add(FormatStr,4632261,644,217)
{
DataCount=0
Mask="import socket\r\nimport os, time\r\nconn = socket.socket()\r\nconn.connect( ("127.0.0.1", 4545) )\r\nfor i in range(1, 999, +1):\r\n conn.send('До завершения программы: '.encode("utf-8") + str(i).encode("utf-8")+ ' сек.'.encode("utf-8"))\r\n time.sleep(0.01)\r\nconn.send("Программа завершена.".encode("utf-8")) \r\nconn.recv(1024)\r\nconn.close()"
Point(FString)
link(onFString,949306:doClear,[(704,223)(704,258)])
}
Add(Hub,14196284,602,217)
{
link(onEvent1,4632261:doString,[])
link(onEvent2,4850732:doCharset,[(630,230)(630,272)])
}
Add(Button,12174706,553,217)
{
Left=25
Top=10
Width=140
Caption="Python -› Socet"
link(onClick,14196284:doEvent1,[])
}
Add(Charset,8769512,483,343)
{
Type=7
link(onCharset,8616788:doEvent1,[])
}
Add(Hub,8616788,532,343)
{
link(onEvent1,15698041:doText,[])
link(onEvent2,5219673:doAdd,[(560,356)(560,398)])
}
Add(Edit,15698041,581,343)
{
Left=25
Top=35
Width=295
Text=""
}

Редактировалось 2 раз(а), последний 2022-09-18 22:44:52
карма: 4

1
Голосовали:Pavel
Ответов: 59
Рейтинг: 1
#6: 2022-09-19 14:19:35 ЛС | профиль | цитата
tig-rrr, Спасибо огромное !


а обязательно данные из Python в Hiasm передавать через консоль?
Совсем не обязательно, просто как-то приноровился и привык к ней.

Насчет cmd есть какие-то мысли почему так получается ?

Редактировалось 2 раз(а), последний 2022-09-19 14:20:11
карма: 0

0
Ответов: 4587
Рейтинг: 732
#7: 2022-09-19 18:13:12 ЛС | профиль | цитата
А компонент WinExec обновлен? Там внутри есть задержка, но явно не в 25 секунд.
Схему твою не видел - посмотри нет ли там тормозов: отключи выход WinExec от вывода куда-либо (вывод в Memo очень тормозит при больших объемах, для теста поставь вывод в Label).
карма: 26

0
Ответов: 59
Рейтинг: 1
#8: 2022-09-20 13:34:19 ЛС | профиль | цитата
Netspirit,
А компонент WinExec обновлен?
обновлен.
Обновления.PNG

посмотри нет ли там тормозов: отключи выход WinExec от вывода куда-либо (вывод в Memo очень тормозит при больших объемах, для теста поставь вывод в Label
в первую очередь так проверил, результат тот же, не лучше не хуже = тот же.
карма: 0

0
8
Сообщение
...
Прикрепленные файлы
(файлы не залиты)