|
|
|
TComPort EX7 проблема при потери соединения с com-портом приложение подвисает
|
|||
|---|---|---|---|
|
#18+
проблема возникает когда соединение теряется с компортом. Компорт виртуальный работает через USB. Я так подозреваю. обработка исключительных ситуаций предложенных в самом компоненте не к чему не приводит - программа так и остается в зависшем состоянии. Может кто сталкивался с подобной проблемой, или может подскажите более новый компонент для работы с com-портом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 16:16 |
|
||
|
TComPort EX7 проблема при потери соединения с com-портом приложение подвисает
|
|||
|---|---|---|---|
|
#18+
Wolfpackподскажите более новый компонент для работы с com-портом Тынц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 16:24 |
|
||
|
TComPort EX7 проблема при потери соединения с com-портом приложение подвисает
|
|||
|---|---|---|---|
|
#18+
Бывает, что подвисает кривонаписанный драйвер железки. Проверить легко: когда программа зависает нужно выдернуть преобразователь. Если ошибка появится (ПО отвиснет), то с компонентой все нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 16:25 |
|
||
|
TComPort EX7 проблема при потери соединения с com-портом приложение подвисает
|
|||
|---|---|---|---|
|
#18+
wadmanБывает, что подвисает кривонаписанный драйвер железки. Проверить легко: когда программа зависает нужно выдернуть преобразователь. Если ошибка появится (ПО отвиснет), то с компонентой все нормально. были случаи, когда выдирание железяки не отвешивало софтину. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 16:31 |
|
||
|
TComPort EX7 проблема при потери соединения с com-портом приложение подвисает
|
|||
|---|---|---|---|
|
#18+
В том то и дело, что при выдергивании USB кабеля, через который идет соединение с виртуальным ком-портом, при открытом соединении прога виснет на глушняк. дрова используются вот эти - CP210x_Universal_Windows_Driver ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 16:37 |
|
||
|
TComPort EX7 проблема при потери соединения с com-портом приложение подвисает
|
|||
|---|---|---|---|
|
#18+
уже есть желание плюнуть на все сторонние компоненты и отписать все на чистом WinAPI пересмотрел много чего но более менее нормальный из бесплатных только TComPort но он уже старенький, он в свое время хорошо работал на 7-ых дельфях ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 16:39 |
|
||
|
TComPort EX7 проблема при потери соединения с com-портом приложение подвисает
|
|||
|---|---|---|---|
|
#18+
Wolfpackуже есть желание плюнуть на все сторонние компоненты и отписать все на чистом WinAPI пересмотрел много чего но более менее нормальный из бесплатных только TComPort но он уже старенький, он в свое время хорошо работал на 7-ых дельфях дебагером посмотри, где зависон происходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 16:41 |
|
||
|
TComPort EX7 проблема при потери соединения с com-портом приложение подвисает
|
|||
|---|---|---|---|
|
#18+
WolfpackЯ так подозреваю. обработка исключительных ситуаций предложенных в самом компоненте не к чему не приводит - программа так и остается в зависшем состоянии.Для того, чтобы программа не подвисала, с компортом необходимо работать асинхроннр. А "компонент" этого, видимо, не умеет. Либо умеет, но глючит. Выхода три: 1. Найти ошибку в компоненте и исправить (или переделать его); 2. Написать самому на winapi; 3. Найти новый компонент и молиться, чтобы он не глючил в этом или другом месте, а когда заглючит, снова делать этот выбор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 23:18 |
|
||
|
TComPort EX7 проблема при потери соединения с com-портом приложение подвисает
|
|||
|---|---|---|---|
|
#18+
YuRockWolfpackЯ так подозреваю. обработка исключительных ситуаций предложенных в самом компоненте не к чему не приводит - программа так и остается в зависшем состоянии.Для того, чтобы программа не подвисала, с компортом необходимо работать асинхроннр. А "компонент" этого, видимо, не умеет. Либо умеет, но глючит. Выхода три: 1. Найти ошибку в компоненте и исправить (или переделать его); 2. Написать самому на winapi; 3. Найти новый компонент и молиться, чтобы он не глючил в этом или другом месте, а когда заглючит, снова делать этот выбор. 4. Найти компонент и посмотреть в его исходный код, как он работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2018, 06:57 |
|
||
|
TComPort EX7 проблема при потери соединения с com-портом приложение подвисает
|
|||
|---|---|---|---|
|
#18+
пишу для тех кто столкнется с подобной проблемой, что была у меня с компонентом TComPort для того чтобы компонент не подвешивал программу при использовании виртуального ком порта через USB надо изменить метод TCustomComPort.WaitForAsync Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. вместо WaitForSingleObject(AsyncPtr^.Overlapped.hEvent, INFINITE); ставим WaitForSingleObject(AsyncPtr^.Overlapped.hEvent, 100); 100 миллисекунд ожидания, в противном случае если порт был открыт и из USB был вытащен шнур, прога зависнет на всегда в ожидании Изменил Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. может это и не совсем корректно - но он меня просто достал изменил Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. для того чтобы порт корректно закрывался если кабель был вытащен из USB теперь компонент работает более менее стабильно, если что еще найду по нему - отпишусь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 22:24 |
|
||
|
TComPort EX7 проблема при потери соединения с com-портом приложение подвисает
|
|||
|---|---|---|---|
|
#18+
Wolfpack100 миллисекунд ожиданияЭто ужасный подход. Так ты будешь терять ответы, которые приходят позже. Надо просто ждать 2 эвента одновременно - который в оверлаппед-структуре и эвент, который вызывается при отмене ожидания (например, по таймауту ожидания протокола верхнего уровня, или при закрытии проги). В таких случаях еще надо делать CancelIO, чтобы винда не отдуплилась не вовремя и не начала писать туда, чего уже нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2018, 12:11 |
|
||
|
TComPort EX7 проблема при потери соединения с com-портом приложение подвисает
|
|||
|---|---|---|---|
|
#18+
Вообще, для нормальной асинхронной работы нужен WaitCommEvent и его анализ, чего я не вижу. Как я и ожидал, этот "компонент" - мрак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2018, 12:15 |
|
||
|
TComPort EX7 проблема при потери соединения с com-портом приложение подвисает
|
|||
|---|---|---|---|
|
#18+
Не знаю, чем там пользуется ТС, но вот два компонента для работы с последовательными портами, которые себя зарекомендовали просто отлично: http://synapse.ararat.cz/doku.php/download и https://github.com/TurboPack/AsyncPro ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2018, 12:22 |
|
||
|
TComPort EX7 проблема при потери соединения с com-портом приложение подвисает
|
|||
|---|---|---|---|
|
#18+
defecatorНе знаю, чем там пользуется ТС, но вот два компонента для работы с последовательными портами, которые себя зарекомендовали просто отлично: http://synapse.ararat.cz/doku.php/download и https://github.com/TurboPack/AsyncPro AsyncPro - я так и не смог поставить на XE7 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2018, 14:14 |
|
||
|
TComPort EX7 проблема при потери соединения с com-портом приложение подвисает
|
|||
|---|---|---|---|
|
#18+
YuRockWolfpack100 миллисекунд ожиданияЭто ужасный подход. Так ты будешь терять ответы, которые приходят позже. Надо просто ждать 2 эвента одновременно - который в оверлаппед-структуре и эвент, который вызывается при отмене ожидания (например, по таймауту ожидания протокола верхнего уровня, или при закрытии проги). В таких случаях еще надо делать CancelIO, чтобы винда не отдуплилась не вовремя и не начала писать туда, чего уже нет. проблема в том, что сам компонент - даже если я ставлю последовательную работу с комом а не асинхронную, все равно выходит на работу через асинхрон. Мне уже проще написать свой компонент для работы с комом чем копать этот компонент дальше. по крайней мере меня сейчас работа компонента устраивает. При вытаскиваниии USB конектора - компонент не подвешивает программу, можно теперь корректно зарыть порт и открыть его заново. Если во время передачи данных на ком порт вытащить USB компонент тоже не вешает прогу на всегда - оставась в вечном ожидании. У меня с ком-порта все равно данные не приходят чаще чем 1 секунда, так что мне хватает времени, если что переподключиться, тем паче что ком-порт повторяет сигнал, даже если я один пропустил, я получу или второй или третий. А так по хорошему надо писать полностью свое либо покупать уже обкатанный компонент, который еще продолжют поддерживать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2018, 14:22 |
|
||
|
TComPort EX7 проблема при потери соединения с com-портом приложение подвисает
|
|||
|---|---|---|---|
|
#18+
YuRockВообще, для нормальной асинхронной работы нужен WaitCommEvent и его анализ, чего я не вижу. Как я и ожидал, этот "компонент" - мрак. вот метод Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Дальше копать чужой код я уже не стал - уже проще написать самому все и причем на чистом WinAPI ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2018, 14:27 |
|
||
|
TComPort EX7 проблема при потери соединения с com-портом приложение подвисает
|
|||
|---|---|---|---|
|
#18+
Wolfpackвот методЭто вызов каких-то внутренних методов компонента, что делают которые - неизвестно. Такое копипастить сюда нет смысла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2018, 14:58 |
|
||
|
TComPort EX7 проблема при потери соединения с com-портом приложение подвисает
|
|||
|---|---|---|---|
|
#18+
WolfpackДальше копать чужой код я уже не стал - уже проще написать самому все и причем на чистом WinAPIЭто проще было сделать и неделю назад, и две, и сейчас до сих пор. В итоге код окажется надежным и понятным, и размер его будет 2 страницы. И на XE18 установится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2018, 15:00 |
|
||
|
TComPort EX7 проблема при потери соединения с com-портом приложение подвисает
|
|||
|---|---|---|---|
|
#18+
Это п-цWolfpack Код: pascal 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2018, 17:37 |
|
||
|
TComPort EX7 проблема при потери соединения с com-портом приложение подвисает
|
|||
|---|---|---|---|
|
#18+
WolfpackdefecatorНе знаю, чем там пользуется ТС, но вот два компонента для работы с последовательными портами, которые себя зарекомендовали просто отлично: http://synapse.ararat.cz/doku.php/download и https://github.com/TurboPack/AsyncPro AsyncPro - я так и не смог поставить на XE7 по моей ссылке всё ставится на раз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2018, 07:38 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39668438&tid=2040647]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
212ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 247ms |
| total: | 568ms |

| 0 / 0 |
