Bagaimana cara menggunakan chip FDTI dalam mode VCP?

Saya mencoba agar papan relai USB SainSmart berdasarkan chip FT245RL berfungsi dan mengalami saat-saat yang buruk. Saya mendapat kesan bahwa saya dapat mengontrol relay dari baris perintah dengan sesuatu seperti:

echo -e -n "\xFF\x1\x1" > /dev/ttyUSB1

Meskipun perangkat dipasang secara otomatis dan saya rasa saya sudah mengatur baud rate dan izin, tidak ada yang terjadi pada mesin Debian atau CentOS 5 saya. Dukungan SainSmart tidak ada gunanya.

Saya memutuskan untuk mencoba di windows, jadi saya menginstal driver dan menulis program kecil dengan python:

import serial
ser = serial.Serial(2) #COM3
ser.write(chr(255) + chr(0) + chr(1))
ser.close

Tetap tidak ada. Mungkin ini masalah hardware jadi saya menginstal program windows yang disediakan. Ia melihat perangkat dan berfungsi ketika saya mengklik tombol relai. Karena putus asa, saya keluar dari program mereka, mencari bug di program saya (tidak dapat menemukannya) tetapi tetap mencobanya, dan berhasil! Saya menulis program yang jauh lebih besar untuk melakukan segala macam hal keren dan hal keren terjadi sampai saya mencabut perangkat. Saat saya mencolokkannya kembali, tidak ada yang berfungsi. Saya harus menjalankan dan keluar dari program kontrol relai sebelum kode saya melakukan apa pun.

Saya menduga saya harus melakukan sesuatu dengan driver d2xx seperti FT_SetBitMode(). Apakah ada cara untuk menggunakan mode VCP saja? PyUSB tidak dapat diinstal di komputer saya dan tidak tersedia untuk Linux.

Yang saya inginkan hanyalah cara sederhana untuk mengontrol relay di Linux menggunakan python.


person RyanN    schedule 23.04.2013    source sumber
comment
Saya juga. Apakah Anda melangkah lebih jauh sejak pertanyaan ini diposting? Adalah ini rangkaian pesan dukungan Anda? Saya telah mengirim komentar di Facebook SainSmart; Saya akan memperbarui di sini jika saya mendapat balasan. Saya ingin tahu apakah lembar data FT245R adalah jawabannya -- mungkin kita perlu mencari dokumentasi Perangkat Teknologi Masa Depan, daripada dokumentasi SainSmart.   -  person Rich    schedule 11.09.2013
comment
Adakah orang lain yang beruntung mencoba menyelesaikan ini? Sepertinya ini sangat mudah dilakukan melalui VCP tetapi saya tidak bisa membuatnya berfungsi. Panduan atau beberapa contoh akan sangat bagus.   -  person GrizzlyGuru    schedule 13.03.2015
comment
Saya menyerah dan beralih ke proyek lain. Saya rasa ini bukan masalah baud rate karena saya mengonfigurasinya melalui OS. Saya pikir Anda perlu mengintip jalur USB dan melihat apa yang dikirimkan oleh program windows.   -  person RyanN    schedule 14.03.2015


Jawaban (4)


Saya memiliki masalah yang sama, saya rasa Anda benar tentang FT_SetBitMode(). Akhirnya saya berhasil menggunakan ftd2xx (yang bisa Anda dapatkan dengan pip). Anda juga perlu menginstal driver D2XX.

import ftd2xx
if ftd2xx.listDevices() < 1:
    print "No relays found. Exiting..."
    exit()
else: print "Initializing relays..."
relays = ftd2xx.open(0)
relays.setBitMode(255,1) # I think this uses FT_SetBitMode()
relays.write(b'\01\01')  # relay one on
relays.write(b'\01\01')  # relay two on
relays.write(b'\00\00')  # all relays off
relays.close()
person Octavi Escala Semonin    schedule 11.10.2017

Saya pertama-tama menyarankan Anda untuk mencoba hyperterminal terlebih dahulu.

Dari cuplikan kode Anda, tampaknya Anda kehilangan baudrate (dengan asumsi sisanya akan menjadi nilai default). Dan saya tidak begitu tahu apakah itu penting tetapi saya selalu secara eksplisit menetapkan port sebagai Serial('COM3'), mengurangi satu titik kegagalan yang mungkin terjadi dengan cara ini :)

person Alex    schedule 23.04.2013

Mungkin Anda tidak memiliki masalah dengan Python, tetapi dengan pengontrolan perangkat seperti itu.

Anda harus mencoba mencari tahu apakah perangkat memiliki persyaratan khusus tentang keadaan jalur kontrol (DST, DTR, dll.).

Dan jangan lupa, kecepatan komunikasi yang sudah disebutkan Alex.

person glglgl    schedule 23.04.2013

Menggunakan port com virtual di Windows saya menemukan saya harus menggunakan 115k baud

person johnlon    schedule 19.01.2021