Вверх ↑
Этот топик читают: Гость
Ответов: 17
Рейтинг: 0
#1: 2021-03-25 13:46:42 ЛС | профиль | цитата
Добрый день! ситуация такая! при посылке чтений или записи информации с компорта программа зависает до тех пор пока не дочитает!
потом выдает все что как надо!
хочу прикрутить Status Bar но он тоже тормозит вместе с прогой!
ниже программа над которой работаю!
может кто подскажет как победить эту эпопею?
спасибо зарание!
карма: 0

0
файлы: 1CAN TERMINAL EL327v1.zip [16.9KB] [331]
Ответов: 4628
Рейтинг: 749
#2: 2021-03-25 14:20:08 ЛС | профиль | цитата
Используй компонент COMEX.
Или, если текущие возможности компонента тебя устраивают, то выполнять чтение/запись можно в параллельном потоке - используй компонент Thread (FastStop=True) перед COM.

Редактировалось 1 раз(а), последний 2021-03-26 11:35:00
карма: 26

0
Ответов: 8921
Рейтинг: 823
#3: 2021-03-25 15:23:55 ЛС | профиль | цитата
Netspirit, вы экстрасенс? Ни схемы, ни толкового описания
карма: 19

0
Ответов: 17
Рейтинг: 0
#4: 2021-03-25 15:41:00 ЛС | профиль | цитата
Леонид писал(а):
Netspirit, вы экстрасенс? Ни схемы, ни толкового описания


так я наработку кинул! в zip!
а описание какое?
когда
включаю цикл на передачю допустим 30 програма работает но основное окно зависает!
и statusbar останавливается!
карма: 0

0
Ответов: 8921
Рейтинг: 823
#5: 2021-03-25 17:23:28 ЛС | профиль | цитата
benea333, так это не схема, а нагромождение
Например объясните, зачем вы применили Sleep на чтение порта -- как раз этот элемент и грузит процессор и останавливает на заданное время выполнение.
карма: 19

0
Ответов: 17
Рейтинг: 0
#6: 2021-03-25 18:20:58 ЛС | профиль | цитата
Леонид писал(а):
benea333, так это не схема, а нагромождение
Например объясните, зачем вы применили Sleep на чтение порта -- как раз этот элемент и грузит процессор и останавливает на заданное время выполнение.


буду очень благодарен если подскажете какой элемент использовать вместо sleep?
карма: 0

0
Ответов: 8921
Рейтинг: 823
#7: 2021-03-25 19:11:01 ЛС | профиль | цитата
benea333, да вопрос-то не какой компонент, а зачем?
Там у вас задержка 1 миллисекунду (1000 микросекунд), эту задержку вполне обеспечит Thread в режиме FastStop = True
А работу Sleep посмотрите через Диспетчер задач:
Sleep


Add(Button,10927921,105,126)
{
Left=25
Top=20
Caption="++"
link(onClick,13407188:doWork2,[])
}
Add(Edit,2312345,196,77)
{
Left=100
Top=20
Text="2"
}
Add(Edit,13947573,252,77)
{
Left=170
Top=20
Text="2"
}
Add(Button,3218601,105,168)
{
Left=10
Top=55
Caption="Sleep"
link(onClick,16578243:doSleepMks,[])
}
Add(Label,10818399,322,126)
{
Left=250
Top=25
Font=[MS Sans Serif,10,1,0,1]
Caption="= ?"
}
Add(Label,5721521,322,77)
{
Left=155
Top=20
Width=16
Height=28
Font=[MS Sans Serif,14,1,0,1]
Caption="+"
}
Add(Math,2067745,210,126)
{
link(onResult,8627571:doStrCat,[])
link(Op1,2312345:Text,[(216,117)(202,117)])
link(Op2,13947573:Text,[(223,117)(258,117)])
}
Add(StrCat,8627571,266,126)
{
Str1="= "
link(onStrCat,10818399:doText,[])
}
Add(Sleep,16578243,147,168)
{
Delay=5000000
link(onSleep,13407188:doWork3,[(193,174)])
}
Add(HubEx,13407188,189,126)
{
link(onEvent,2067745:doOperation,[])
}
Add(Thread,9788367,147,210)
{
FastStop=0
}

карма: 19

0
Ответов: 17
Рейтинг: 0
#8: 2021-03-25 21:49:13 ЛС | профиль | цитата
спасибо конечно! но с компонентом thread компорт не отвечает только запись а ответа нет!
карма: 0

0
Ответов: 8921
Рейтинг: 823
#9: 2021-03-25 22:39:20 ЛС | профиль | цитата
benea333, там миллисекунды, надо поставить "1".
Есть-ли соответствие числа обращения/сек на чтение, количества считываемых байт и установленной скорости порта? Буфер у него не очень большой и не прочитанные байты пропадают. Выбор скорости у вас через цикл, что несколько странно. Да и большие скорости обозначены круглыми числами, тоже не привычно. (Скорость 8 Мбит не встречал )
При странностях в работе схемы лучше проблемный элемент испытывать отдельно, убедиться в его способности работать с нужными параметрами.

Редактировалось 1 раз(а), последний 2021-03-25 22:40:13
карма: 19

0
Ответов: 17
Рейтинг: 0
#10: 2021-03-25 22:56:18 ЛС | профиль | цитата
Леонид писал(а):
benea333, там миллисекунды, надо поставить "1".
Есть-ли соответствие числа обращения/сек на чтение, количества считываемых байт и установленной скорости порта? Буфер у него не очень большой и не прочитанные байты пропадают. Выбор скорости у вас через цикл, что несколько странно. Да и большие скорости обозначены круглыми числами, тоже не привычно. (Скорость 8 Мбит не встречал )
При странностях в работе схемы лучше проблемный элемент испытывать отдельно, убедиться в его способности работать с нужными параметрами.

Редактировалось 1 раз(а), последний 2021-03-25 22:40:13

программа работает четко ! вот только зависает и статус бар тоже во время чтения или передачи!
карма: 0

0
Ответов: 168
Рейтинг: 7
#11: 2021-03-25 23:15:58 ЛС | профиль | цитата
Леонид у чела кан интерфейс,он через елм-ку машинам мозги вправляет,там любые нестандартные могут быть
карма: 1

0
Ответов: 4628
Рейтинг: 749
#12: 2021-03-26 11:39:51 ЛС | профиль | цитата
Леонид писал(а):
как раз этот элемент и грузит процессор и останавливает на заданное время выполнение
Чтение-запись в COM-порт - сама по себе блокирующая операция, если не использовать "overlapped I/O", как делает COMEX.
А Sleep - требует переработки, тогда грузить не будет. Правда, это все равно не позволит получить точной задержки для чтения/записи с требуемым битрейтом.

Редактировалось 2 раз(а), последний 2021-03-26 11:40:28
карма: 26

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