Nano Hash - криптовалюты, майнинг, программирование

Убедитесь, что данные сбрасываются при закрытии последовательного соединения на Mac

Я пытаюсь подключить осциллограф Agilent 54622D к Mac OS и использую последовательный USB-кабель ftdi. Я наблюдаю следующее поведение: если я закрываю файловый дескриптор последовательного соединения сразу после команды записи (я не ожидаю ответа от устройства, просто отправляю команду), соединение будет немедленно закрыто, что приводит к не все данные отправлено на устройство. Это кажется несколько логичным, но я никогда не видел, чтобы кто-то добавлял какие-то специальные задержки перед закрытием последовательного соединения.

Что я мог пропустить здесь?

Вот простой скрипт на Python, иллюстрирующий проблему:

import serial
port=serial.Serial(port="/dev/cu.usbserial-A603PQBN",baudrate=57600,timeout=1, rtscts=True, dsrdtr=False, stopbits=serial.STOPBITS_ONE)
port.write(":RUN\n")
port.close()

Обновление:

Я попробовал тот же скрипт в VirtualBox под управлением Linux и не заметил никаких подобных проблем. Теперь мне интересно, является ли это драйвером UART для Mac или проблемами с драйвером FTDI.

07.05.2014

Ответы:


1

Действительно похоже, что вы раньше закрываете соединение, тогда данные действительно обрабатываются, хотя скорость вашего соединения достаточно высока (я привык к 9600).

Так почему бы не попробовать использовать flush(), который описан в документе:

«Сброс файлов, подобных объектам. В этом случае подождите, пока все данные не будут записаны».

import serial
port=serial.Serial(port="/dev/cu.usbserial-A603PQBN",baudrate=57600,timeout=1, rtscts=True, dsrdtr=False, stopbits=serial.STOPBITS_ONE)
port.write(":RUN\n")
port.flush() # this might help
port.close()
07.05.2014
  • Я пробовал делать как flush, так и flushInput, и это, похоже, не помогает. Похоже, что закрытие соединения просто немедленно прерывает передачу. 07.05.2014
  • @dgdmitry Спасибо, что поделились этим опытом, я тоже иногда использую сериал. Я спрошу своего коллегу, который является экспертом по HW и C, это звучит очень странно. 07.05.2014
  • Спасибо! Я также хочу проверить это поведение в Linux, я подозреваю, что разница может быть в драйверах UART в Mac, хотя они должны быть совместимы с posix. 07.05.2014
  • Да, не воспроизводится с Linux в виртуальной коробке на той же машине. Вздох. 07.05.2014

  • 2

    Я попробовал официальные драйверы FTDI, и проблема исчезла. Это может быть ошибка в реализации драйвера Mavericks FTDI (сообщил об ошибке).

    07.05.2014
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..