Отрубается Serial port

Тема в разделе "Arduino & Shields", создана пользователем Фисташка Трям, 27 мар 2016.

  1. Господа хорошие, может кто сталкивался с такой проблемой ?

    Иногда отрубаются usb порты,не важно что подключается, что отключается, почему отключается знает только Windows. Программно usb отключить нельзя никак. Можно только отлавливать WM_DEVICECHANGE

    К одному порту подключена Дуня. После отключения usb у Дуни отрубается com port. Система видит её но при обращении к порту Access Error возникает. И если ее не вытащить и заново не вставить, то порт работать не будет. Пробовал на разных компах с разными проводами.

    Бен, это Данила ай нид хелп.
     
  2. Кому интересно:

    Есть виндовская утилита DevCon версии 32 и 64 отличаются файлами.

    Из под Администратора перегружаем порты: devcon restart =ports

    И наша Дуня вновь определяется и порт работает. Придется вызывать devcon из приложения, а это не есть гуд...

    Сам спросил, сам ответил :))))))))))))))))))))))))
     
  3. Megakoteyka

    Megakoteyka Оракул Модератор

    Это борьба со следствием, а причина так и осталась невыясненной. Попробуйте сменить кабель, замерить потребление...
     
  4. Я написал, что менял кабеля. Попробуйте подключить hdmi кабель к телеку, другой в комп. Посмотрите как usb порты отрубаются. А иногда они отваливаются просто так....
     
  5. ostrov

    ostrov Гуру

    Это фигово. Значит сделать надежный интерфейс на ПС гарантий нет?
     
  6. Airbus

    Airbus Радиохулиган Модератор

    Ну это Ежу понятно связь то по USB идёт нафиг его отключать?Или он сам отключается?А Винда наверное 8 или 10?
     
  7. Megakoteyka

    Megakoteyka Оракул Модератор

    Почему нет? Порты валиться просто так не могут, где-то явно косяк - в софте на компе или в железе. Как вариант, проблемы с питанием.
     
  8. Onkel

    Onkel Гуру

    у меня есть кабели по 30 (еще довоенных, когда за бакс 32 дерева давали) и по 70 (опять же еще довоенных) рублей. При включении холодильника подключенные кабелями по 30 Usb отваливается всегда, по 70 - раз в 20 щелчков. Если воткнуть usb прямо в комп- вообще не отваливается.
     
  9. Airbus

    Airbus Радиохулиган Модератор

    Не пойму что то...Что именно отваливается?И откуда?
     
  10. Onkel

    Onkel Гуру

    например, терминал отваливается.
     
  11. !!! Serial отрубается, компом дуню определяется нормально....

    Порты отключаются сами иногда, может статика, может еще что-нибудь. Тестировалось на 7,8,10,XP. на разных компах. Это факт. И я в программе под винду отлавливаю все эти ошибки. Попробуйте сами тест.

    1. Подключите Дуню
    2. Запустите Терминал (Putty, IDE)
    3. Отключите Дуню
    4. Включите Дуню
    5. Запустите Терминал ( И вот тут Дуня определяется, !!!!!!!!!! но Serial не работает)
    6. Отключите Дуню
    7. Включите Дуню
    8. Запустите Terminal (Вуаля Serial опять живет)

    Это происходит не всегда. Поэтому в своей программе, с помощью функции FindWindow (MSDN) я ищу окно с ошибкой. (с классом и заголовком) , например. FindWindow('#32770','PuTTY Error') и закрываю его программно. И рестартую порты с помощью devcon.exe restart =ports.

    НО это полный изврат, но по другому никак.

    Второй способ. рестарта. Это отлавливать события WM_DEVICECHANGE. И если отвалилась именно дуня. То опять devcon.exe restart =ports.

    Попробую на Freebsd сегодня, если также отрубается то проблема в дуни, а не в ОС. Если есть идеи пишите....
     

    Вложения:

    • putty_error.jpg
      putty_error.jpg
      Размер файла:
      11,5 КБ
      Просмотров:
      472
  12. ostrov

    ostrov Гуру

    С другой стороны, если усб так неустрйчив, почему клава и мышь не отваливаются постоянно?
     
  13. Airbus

    Airbus Радиохулиган Модератор

    То есть Вы сознательно дёргаете Арду во время передачи а потом обратно её вставляете и удивляетесь почему USART не работает?Что то очень давно я про такое читал.Могу Вас отослать к алгоритму работы RS232 (это и есть тот протокол обмена данными который Вы принудительно нарушаете)Поищите в Гугле.От себя могу предположить что во избежание ошибок RS232 принудительно завершает сеанс обмена.Хотя могу быть и неправ.Здесь есть Зубры времён Радио-86РК (Onkel например)мож они чего нибуть помнят
     
  14. Да сознательно дергаю и включаю обратно... !!! В этот момент данные не передаются....

    Я четко написал, что отваливается ComPort. Возьмите сами попробуйте, ничего не передавая, Потом пишите про зубров и т.д....

    1. Подключаем Дуню (Определилась)
    2. Запустите Терминал (Putty, IDE) Проверяем сериал, работает...
    3. Отключаем Дуню
    4. Включаем Дуню обратно (Определилась)
    5. Запускаем Терминал Serial не работает
    6. Отключаем Дуню
    7. Включаем Дуню Определилась)
    8. Запускаем вновь Terminal (Вуаля Serial опять живет)


    У меня есть девайс от FTDI (USB-TO-RS485). Он почему то всегда работает, подключай не отключай.

    А дуня лажает. Кому интересно могу заснять видео, что происходит.... И как с этим бороться не программным способом на уровне железа. х.з.
     
  15. Airbus

    Airbus Радиохулиган Модератор

    А стесняюсь спросить зачем?
    А RS485 работает по другому алгоритму.Не так как RS232 Как с этим бороться?Думаю никак да и зачем?Чтобы дёргать USB порт?Но а если Вам интересно то сначала неплохо было бы изучить как работает RS232 за вас это никто не сможет сделать.Удачи!
     
  16. Затем, что у вас прога должна работать всегда, если даже что то отвалилось.... Поэтому и дергую дуню для ТЕСТА чтобы исключить все ошибки какие могут быть......

    ВЫ наверное не понимаете, чего я хочу добиться и не сталкивались с этим....
     
  17. ostrov

    ostrov Гуру

    Не знаю что у вас за клиент на Windows, я вот сделал на Visual Studio интерфейс пробный, он конектится по usb в любое время с устройством. В случае если связь отваливается просто закрывает порт и ждет когда она появится. Теоретически должно не замечать обрывов коротких. Во всяком случан так задумано. Вроде бы работает.
     
  18. Прога дуню определяет нормально, при попытке открыть Serial, вылетает ошибка. Порт отрубается.

    Мне интересно, как вы проверяете, что связь отвалилась?

    Я пытаюсь открыть ком порт. Если вылетает ошибка. То закрываю окно с ошибкой и рестартую порт. Затем вновь проверяю. Также стоит обработчик USB. Если дуня вдруг отключилась то, опять пытаюсь открыть порт. Если опять ошибка. То опять рестарт. Только тогда когда порт открыт я передаю данные.

    А вы как опрашиваете состояние ? По таймеру?
     
  19. ostrov

    ostrov Гуру

    Опрашивается по таймеру. Если в течении таймаута нет ответе, значит либо игнорирует либо закрывает. Еще можно настроить обработчик ошибок Try...Catch...Finally но это как то неуклюже, хотя без него программа просто крашится если что.
     
  20. Megakoteyka

    Megakoteyka Оракул Модератор

    Неуклюже - это когда программа падает :)
    По таймеру сразу читать начинаете или сперва проверяете готовность порта?