Bagaimana cara mengaktifkan dan mengatur Karakter Kejadian untuk driver FTDI?

4

Saat mengirim hanya beberapa bit data melalui kabel USB-Serial FTDI ke PC, Anda harus menunggu salah satu dari kondisi berikut ini terjadi sebelum Anda mendapatkan data menurut FTDI. AN232B-04, Aliran Latensi Data :

  1. Buffer penuh
  2. Salah satu jalur status RS232 telah berubah
  3. Karakter acara telah diaktifkan dan terdeteksi dalam aliran data yang masuk
  4. Waktu yang tidak terpisahkan dengan chip telah habis.

Saya ingin menggunakan opsi 3, mengaktifkan karakter acara dan juga mendefinisikannya. Bagaimana saya melakukannya di Windows 7? Saya tidak dapat menemukan dokumentasi di dalamnya. Saya tidak ingin harus menulis kode untuk melakukannya, saya hanya ingin tahu di mana di sistem operasi saya (Windows 7) saya bisa mengubah pengaturan ini.

evsc
sumber

Jawaban:

3

Ini ditentukan dalam Blok Kontrol Perangkat pada Win32. Lihat EvtChar anggota.

Ben Voigt
sumber
Saya tidak melihatnya sebagai pertanyaan pengkodean, karena saya idealnya tidak ingin menulis kode untuk mengatur EvtChar. Saya hanya ingin mengubah pengaturan di suatu tempat di OS saya (Windows 7). Jika memungkinkan.
3
@ evsc: Aplikasi dapat memilih untuk membiarkan pengaturan tidak berubah, tetapi sebagian besar tidak. Tidak ada pengaturan global, karena nilai ini berpotensi merusak aplikasi.
Ben Voigt
baik. masuk akal. terimakasih atas infonya!
3

Saya menyadari pertanyaan aslinya terkait dengan Windows, tetapi berikut adalah petunjuk untuk sistem operasi lain:

Mac OS-X

Untuk penghitung waktu latensi - Setelah menginstal driver, buat salinan cadangan dan edit file /System/Library/Extensions/FTDIUSBSerialDriver.kext/Contents/Info.plist. Temukan bagian untuk perangkat Anda, mis

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

Dan tambahkan berikut ini setelah di atas

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

Saya menduga ini juga akan berfungsi untuk karakter acara, tapi saya tidak yakin yang benar <key> menggunakan.

Linux

Kernel Linux yang datang dengan Ubuntu 14.04 (Linux 3.13.0-24-generic) telah menetapkan timer latensi ke 1ms secara default. Namun parameter tersedia untuk diubah melalui sysfs. Temukan perangkat Anda di bawah /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

Anda dapat mengatur karakter acara dengan menggema nilai menjadi event_char. Nilainya adalah nilai ASCII dari karakter acara (misalnya 'A' adalah 65) ditambah 256 (ini menetapkan bit ke-9 ke 1 yang memungkinkan dukungan karakter acara) - jadi untuk 'A' nilainya 65 + 256 = 321:

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

Untuk menggunakan 0x00 sebagai karakter acara, cukup berikan nilai 256, sementara untuk menonaktifkan karakter acara, berikan nilai 0.

Anda juga harus dapat memodifikasi timer latensi dengan cara ini. Lihat apa yang sudah diatur sekarang:

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

Sekarang nonaktifkan flag low_latency, jika tidak latensi akan selalu dipaksa ke 1:

# setserial /dev/ttyUSB0 ^low_latency

Kemudian setel penghitung waktu latensi ke, mis., 4 ms

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

Tapi saya kira ini bukan masalah besar karena standarnya adalah minimum 1 ms.

Peter Gibson
sumber
Terima kasih atas hasil edit @MichaelZillich - tahukah Anda cat /sys/bus/usb-serial/devices/ttyUSB0/latency_timer akan kembali 4 setelah perbaikan ini? Jika demikian, saya akan memperbarui baris terakhir.
Peter Gibson