Проверьте, слушает ли последовательный порт

Из документов Julia , MethodError: no method matching выбрасывается, когда нет метода с сигнатурой типа, совпадающей с той, которую вы вызываете. У Джулии есть динамическая система типов, но она позволяет создавать аннотации типов, которые выдают исключение, если значение не относится к ожидаемому типу. Так как вы широко используете пользовательские типы данных, может случиться так, что вы передаете значение пользовательского типа данных методу в ForwardDiff / ReverseDiff, который ожидает другой тип - трудно подтвердить, не видя код, но именно здесь я ' начну искать.

6
задан Peter Mortensen 7 October 2012 в 02:44
поделиться

3 ответа

У Вас есть ограниченные возможности обнаружить, если существует что-то слушающее с другой стороны при помощи контактов DSR/DTR.

При открытии последовательного порта на машине сценарии работают, это должно повысить свой контакт DTR (или необходимо смочь убедить это делать так: документация библиотеки, которой Вы пользуетесь для управления COM-портом, должна сказать Вам как).

Затем на Вашем Ардуино можно проверить его контакт DSR (принимающий проводное соединение нуль-модема с квитированием, где контакт DTR ПК соединен проводом к DSR+CD на Ардуино), равномерно, и дескриптор, 'никто не соединился', сценарий всегда Вы считаете целесообразным.

Одна проблема с этим подходом состоит в том, что Ваш сценарий ПК не может закрыть последовательный порт, когда он отказывает/останавливает ответ, оставление контакта DTR включило, как будто все все еще в порядке. Кроме того, Ваш сценарий может просто пропустить сообщение из Ардуино из-за ошибок на последовательной линии.

По этой причине необходимо всегда реализовывать тайм-аут в Вашем получать стандартные программы: даже если существует партийное слушание с другой стороны, нет никакой гарантии, оно получило Ваше сообщение (или что его ответ достигнет Вас неповрежденный).

Повторная отправка сообщения, по крайней мере, однажды (принятие DSR повышено), если тайм-аут происходит, делает Ваш протокол более надежным.

7
ответ дан 16 December 2019 в 21:48
поделиться

Я соглашаюсь с mdb, что тайм-ауты необходимы, но также добавили бы, что Вы могли бы хотеть реализовать простую систему проблемы/ответа, которая периодически проверяет, слушает ли кто-либо. (Мне нравится аналогия Пинг-понга ircd).

0
ответ дан 16 December 2019 в 21:48
поделиться

Arduino не использует линию DSR или любую другую линию квитирования, поэтому вы не можете делать то, что предлагаете.

1
ответ дан 16 December 2019 в 21:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: