4

При отправке на ПК только нескольких битов данных через USB-последовательный кабель FTDI вам необходимо подождать, пока не произойдет одно из следующих условий, прежде чем вы получите свои данные в соответствии с AND232B-04 FTDI, Поток задержки данных:

  1. Буфер заполнен
  2. Одна из строк состояния RS232 изменилась
  3. Символ события был включен и был обнаружен во входящем потоке данных
  4. Таймер, встроенный в чип, истек.

Я хочу использовать вариант 3, включить символ события, а также определить его. Как мне это сделать в Windows 7? Я не могу найти документацию по этому вопросу. Я не хочу писать код для этого, я просто хочу знать, где в моей операционной системе (Windows 7) я мог бы изменить эти настройки.

2 ответа2

3

Я понимаю, что первоначальный вопрос касался Windows, но вот инструкции для других операционных систем:

Mac OS X

Для таймера задержки - после установки драйвера сделайте резервную копию и отредактируйте файл /System/Library/Extensions/FTDIUSBSerialDriver.kext/Contents/Info.plist . Найдите раздел для вашего устройства, например,

    <key>FTDI2XXBM</key>
    <dict>
        <key>CFBundleIdentifier</key>
        <string>com.FTDI.driver.FTDIUSBSerialDriver</string>

И добавить следующее после вышеупомянутого

        <key>ConfigData</key>
        <dict>
            <key>LatencyTimer</key>
            <integer>1</integer>
        </dict>

Я подозреваю, что это также будет работать для персонажа события, но я не уверен в правильности <key> для использования.

Linux

Ядро Linux, которое поставляется с Ubuntu 14.04 (Linux 3.13.0-24-generic), уже устанавливает таймер задержки по умолчанию на 1 мс. Однако параметры доступны для изменения через sysfs . Найдите ваше устройство в /sys/bus/usb-serial/devices

$ ls /sys/bus/usb-serial/devices/
ttyUSB0
$ ls /sys/bus/usb-serial/devices/ttyUSB0
driver  event_char  latency_timer  port_number  power  subsystem  tty  uevent

Вы можете установить символ события, отображая значение в event_char . Значение представляет собой значение ASCII символа события (например, «A» равно 65) плюс 256 (это устанавливает 9-й бит в 1, что обеспечивает поддержку символа события), поэтому для «A» значение равно 65 + 256 = 321:

$ sudo -i
<authenticate>
# echo 321 > /sys/bus/usb-serial/devices/ttyUSB0/event_char

Чтобы использовать 0x00 в качестве символа события, просто передайте значение 256, а для отключения символа события - значение 0.

Вы также должны быть в состоянии изменить таймер задержки таким образом. Посмотрите, что установлено сейчас:

# cat /sys/bus/usb-serial/devices/ttyUSB0/latency_timer
1

Теперь отключите флаг low_latency, иначе задержка всегда будет равна 1:

# setserial /dev/ttyUSB0 ^low_latency

Затем установите таймер задержки, например, на 4 мс

# echo 4 > /sys/bus/usb-serial/devices/ttyUSB0/latency_timer
# cat /sys/bus/usb-serial/devices/ttyUSB0/latency_timer
1

Но я думаю, что это не имеет большого значения, так как по умолчанию он составляет минимум 1 мс.

3

Это указано в блоке управления устройством на Win32. Смотрите участника EvtChar .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .