Похоже, проблема связана с аппаратной проблемой: COM-порты исчезают после некоторое время, и в последнее время это происходит чаще. Однако я уже реализовал обработку исключений для решения этой проблемы. Предполагается, что программа перехватит исключение, когда COM-порты исчезнут, и продолжит работу. И какое-то время он именно это и делает — ловит ошибку и поддерживает выполнение тестов. Но через некоторое время он просто переходит в режим останова без какой-либо видимой причины.
Странно то, что обработка исключений работает какое-то время, но в конце концов сдается, и я не знаю, почему . Может ли быть ограничение на то, сколько раз исключение может быть вызвано в IDE, прежде чем оно перейдет в режим останова? Или существует ограничение по времени, по истечении которого приложение больше не может восстановиться после исключения?
Мы будем очень признательны за любую информацию от сообщества!
Я загрузил конец журнала отладки. Большая часть журнала является избыточной. Возникают ошибки, из-за которых он не получает доступа к COM-порту. Я обрабатываю исключение, регистрируя электронное сообщение и закрывая порт. Этот способ обработки работает нормально, но внезапно он переходит в режим останова, и я не показываю какое-либо конкретное место в коде, где он решил прерваться. Так что я слеп, когда дело доходит до устранения этой проблемы.
Я также приложил скриншот IDE, когда это произошло. ВЫ можете видеть, что определенный вызов заблокирован. Кто-нибудь может пролить свет на то, что здесь происходит?
Скриншот IDE
Код: Выделить всё
2024-10-08 01:32:13.3191 | INFO | 2024-10-08T01:28:44**********COM94**********2**********CE24140001D********************10/8/2024 1:32:13 AM**********Void RebootCheck(System.String, Int32, Boolean, Boolean)**********
\n
2024-10-08 01:32:32.9861 | ERROR | Exception Could not find file 'COM90'. for port COM90 \n
2024-10-08 01:32:32.9861 | ERROR | stack 1: Void HandleException(System.Exception) \n
2024-10-08 01:32:32.9861 | ERROR | stack 2: Boolean SendCommandWithoutQuery(System.String) \n
2024-10-08 01:32:32.9861 | ERROR | stack 3: Boolean CANDown() \n
2024-10-08 01:32:32.9861 | ERROR | stack 4: Boolean PenguinPostStartupCommands(Int32) \n
2024-10-08 01:32:32.9861 | ERROR | stack 5: Void RebootCheck(System.String, Int32, Boolean, Boolean) \n
2024-10-08 01:32:33.0243 | ERROR | Exception Could not find file 'COM90'. for port COM90 \n
2024-10-08 01:32:33.0243 | ERROR | stack 1: Void HandleException(System.Exception) \n
2024-10-08 01:32:33.0243 | ERROR | stack 2: Boolean SendCommandWithoutQuery(System.String) \n
2024-10-08 01:32:33.0243 | ERROR | stack 3: Boolean WifiDown() \n
2024-10-08 01:32:33.0243 | ERROR | stack 4: Boolean PenguinPostStartupCommands(Int32) \n
2024-10-08 01:32:33.0243 | ERROR | stack 5: Void RebootCheck(System.String, Int32, Boolean, Boolean) \n
2024-10-08 01:32:51.9409 | INFO | 2024-10-08T01:28:44**********COM94**********2**********CE24140001D********************10/8/2024 1:32:51 AM**********Void PingLTETest(System.String, Int32)**********
\n
2024-10-08 01:32:54.0729 | INFO | ./LTEping
microcom: can't create '/var/lock/LCK..ttyS3': File exists
microcom: can't create '/var/lock/LCK..ttyS3': File exists
APCBPGN2101-CE24140001D ~ #
APCBPGN2101-CE24140001D ~ #
APCBPGN2101-CE24140001D ~ # \n
2024-10-08 01:32:56.2052 | INFO | ./LTEping
microcom: can't create '/var/lock/LCK..ttyS3': File exists
microcom: can't create '/var/lock/LCK..ttyS3': File exists
APCBPGN2101-CE24140001D ~ #
APCBPGN2101-CE24140001D ~ #
APCBPGN2101-CE24140001D ~ # \n
2024-10-08 01:32:58.3388 | INFO | ./LTEping
microcom: can't create '/var/lock/LCK..ttyS3': File exists
microcom: can't create '/var/lock/LCK..ttyS3': File exists
APCBPGN2101-CE24140001D ~ #
APCBPGN2101-CE24140001D ~ #
APCBPGN2101-CE24140001D ~ # \n
2024-10-08 01:32:59.8681 | INFO | 2024-10-08T01:28:44**********COM94**********2**********CE24140001D********************10/8/2024 1:32:59 AM**********Void eMMCTest(System.String, Int32)**********
\n
2024-10-08 01:33:03.4663 | INFO | 2024-10-08T01:28:44**********COM94**********2**********CE24140001D********************10/8/2024 1:33:03 AM**********Void LTETransmitTest(System.String, Int32)**********
\n
2024-10-08 01:33:04.5915 | INFO | ./LTEtransmit
microcom: can't create '/var/lock/LCK..ttyS3': File exists
microcom: can't create '/var/lock/LCK..ttyS3': File exists
microcom: can't create '/var/lock/LCK..ttyS3': File exists
APCBPGN2101-CE24140001D ~ \n
2024-10-08 01:33:05.7169 | INFO | ./LTEtransmit
microcom: can't create '/var/lock/LCK..ttyS3': File exists
microcom: can't create '/var/lock/LCK..ttyS3': File exists
microcom: can't create '/var/lock/LCK..ttyS3': File exists
APCBPGN2101-CE24140001D ~ \n
2024-10-08 01:33:06.8420 | INFO | ./LTEtransmit
microcom: can't create '/var/lock/LCK..ttyS3': File exists
microcom: can't create '/var/lock/LCK..ttyS3': File exists
microcom: can't create '/var/lock/LCK..ttyS3': File exists
APCBPGN2101-CE24140001D ~ \n
2024-10-08 01:33:08.2868 | INFO | time taken for LTETransmit test4 \n
2024-10-08 01:33:18.3677 | INFO | 2024-10-08T01:28:44**********COM74**********3**********CE241400075********************10/8/2024 1:33:18 AM**********Void RebootCheck(System.String, Int32, Boolean, Boolean)**********
\n
2024-10-08 01:33:41.0991 | ERROR | Exception Could not find file 'COM90'. for port COM90 \n
2024-10-08 01:33:41.0991 | ERROR | stack 1: Void HandleException(System.Exception) \n
2024-10-08 01:33:41.0991 | ERROR | stack 2: Boolean SendCommandWithoutQuery(System.String) \n
2024-10-08 01:33:41.0991 | ERROR | stack 3: Boolean CANDown() \n
2024-10-08 01:33:41.0991 | ERROR | stack 4: Boolean PenguinPostStartupCommands(Int32) \n
2024-10-08 01:33:41.0991 | ERROR | stack 5: Void RebootCheck(System.String, Int32, Boolean, Boolean) \n
2024-10-08 01:33:41.1358 | ERROR | Exception Could not find file 'COM90'. for port COM90 \n
2024-10-08 01:33:41.1358 | ERROR | stack 1: Void HandleException(System.Exception) \n
2024-10-08 01:33:41.1358 | ERROR | stack 2: Boolean SendCommandWithoutQuery(System.String) \n
2024-10-08 01:33:41.1358 | ERROR | stack 3: Boolean WifiDown() \n
2024-10-08 01:33:41.1358 | ERROR | stack 4: Boolean PenguinPostStartupCommands(Int32) \n
2024-10-08 01:33:41.1358 | ERROR | stack 5: Void RebootCheck(System.String, Int32, Boolean, Boolean) \n
В файле журнала нет ничего необычного. Возникают ошибки из-за сбоя одного из последовательных портов, но программа продолжает выполнение, как и ожидалось, благодаря методу обработки ошибок. Непонятно, почему через некоторое время это перестает делать.
В коде не реализована параллельная архитектура. Это циклический сценарий. Тесты выполняются на каждом последовательном устройстве последовательно.

Подробнее здесь: https://stackoverflow.com/questions/790 ... son-even-w
Мобильная версия