Problemas com o cabo RS232 e a comunicação

1

Deixe-me começar dizendo que espero que este seja o lugar certo para perguntar.

Meu problema ainda não está definido e espero que você possa me ajudar a esclarecer o que está errado.

Então, o negócio é que, para meu projeto de exame de eletrônica, meu grupo e eu fizemos um ECG principalmente para monitorar a frequência cardíaca. Gostaríamos, então, de pegar os dados que recebemos e enviá-los para o computador e, a partir daí, desenhar um gráfico do ECG real. A placa eletrônica e isso está funcionando perfeitamente. Nós tomamos nossa freqüência de freqüência cardíaca e colocá-lo através de AD-conversor (escrito em Assembler). Depois disso, pegamos o sinal de saída através de um optoacoplador e, a partir daí, para o nosso cabo RS232 e para o computador.

Acredito que eu tenha instalado corretamente os drivers VCP do FTDI. Quando eu digo eu acredito que é porque eu segui as instruções de instalação e tudo correu bem, no entanto, quando eu tento o exemplo, recebo um erro:

casper@casper-ThinkPad-L530:~/Downloads/release/examples$ make -B
for n in BitMode EEPROM/erase EEPROM/read EEPROM/write EEPROM/user/read EEPROM/user/size EEPROM/user/write Events LargeRead MultiThread SetVIDPID Simple Timeouts ; do make -C $n || exit 1; done
make[1]: Entering directory '/home/casper/Downloads/release/examples/BitMode'
gcc main.c -o bitmode -Wall -Wextra -L. -lftd2xx -Wl,-rpath /usr/local/lib  
/usr/local/lib/libftd2xx.a(ftd2xx.o): In function 'InitCheckDevice':
ftd2xx.c:(.text+0x315): undefined reference to 'dlopen'
ftd2xx.c:(.text+0x33b): undefined reference to 'dlopen'
ftd2xx.c:(.text+0x378): undefined reference to 'dlsym'
ftd2xx.c:(.text+0x383): undefined reference to 'dlerror'
/usr/local/lib/libftd2xx.a(ftd2xx.o): In function 'my_init':
ftd2xx.c:(.text+0x44c): undefined reference to 'dlclose'
ftd2xx.c:(.text+0x488): undefined reference to 'pthread_create'
/usr/local/lib/libftd2xx.a(ftd2xx.o): In function 'my_fini':
ftd2xx.c:(.text+0x4cd): undefined reference to 'pthread_join'
/usr/local/lib/libftd2xx.a(ftd2xx.o): In function 'DeviceMatch':
ftd2xx.c:(.text+0x537): undefined reference to 'dlclose'
/usr/local/lib/libftd2xx.a(ftd2xx.o): In function 'FTCommonOpen':
ftd2xx.c:(.text+0x229c): undefined reference to 'pthread_create'
ftd2xx.c:(.text+0x22dd): undefined reference to 'pthread_create'
ftd2xx.c:(.text+0x232b): undefined reference to 'pthread_create'
/usr/local/lib/libftd2xx.a(ftd2xx.o): In function 'FT_Close':
ftd2xx.c:(.text+0x2630): undefined reference to 'pthread_join'
ftd2xx.c:(.text+0x2670): undefined reference to 'pthread_join'
ftd2xx.c:(.text+0x26dd): undefined reference to 'pthread_join'
/usr/local/lib/libftd2xx.a(io.o): In function 'libusb_try_lock_events':
io.c:(.text+0x8d5): undefined reference to 'pthread_mutex_trylock'
/usr/local/lib/libftd2xx.a(linux_usbfs.o): In function 'find_monotonic_clock':
linux_usbfs.c:(.text+0x180): undefined reference to 'clock_gettime'
/usr/local/lib/libftd2xx.a(linux_usbfs.o): In function 'op_clock_gettime':
linux_usbfs.c:(.text+0x323b): undefined reference to 'clock_gettime'
linux_usbfs.c:(.text+0x3250): undefined reference to 'clock_gettime'
collect2: ld returned 1 exit status
make[1]: *** [bitmode] Error 1
make[1]: Leaving directory '/home/casper/Downloads/release/examples/BitMode'
make: *** [subdirs] Error 1

Este é o meu primeiro problema, não tenho certeza de como verificar se o driver está funcionando ou não. Eu posso ver o cabo perfeitamente ao executar:

casper@casper-ThinkPad-L530:~/Downloads/release/examples$ ls -h /dev/*tty*

Eu posso encontrar:

/dev/ttyUSB0

Mas algo me diz que esta NÃO é a porta COM virtual que deve estar em ordem para o protocolo RS232 funcionar.

O que leva ao meu segundo problema. Isso provavelmente é apenas um problema por causa do acima, mas ainda assim:

Estou apenas começando a usar o PySerial para trabalhar com o cabo, mas não consigo entender como fazer isso. Ao executar o seguinte:

import serial

ser = serial.Serial('/dev/ttyUSB0', timeout=10)

x = ser.read()

print x

ser.close()

O Shell simplesmente trava, como se nenhum byte fosse recebido, após o tempo limite de 10 segundos, ele fecha. Eu sei que estou enviando um sinal pelo cabo, já que consigo ver o resultado no osciloscópio.

Se você precisar de mais informações ou fotos de qualquer coisa, por favor, não hesite em perguntar, terei prazer em lhe fornecer o que você precisa.

Ansioso por ouvir de você, Atenciosamente!

EDITAR:

Enquanto pesquisava mais sobre a documentação do PySerial, tentei o seguinte:

import serial
import io

ser = serial.Serial('/dev/ttyUSB0', timeout=1)
ser.baudrate = 19200

print ser

ser.close()

E obtenha o resultado:

Serial<id=0x98dad6c, open=True>(port='/dev/ttyUSB0', baudrate=19200, bytesize=8, parity='N', stopbits=1, timeout=1, xonxoff=False, rtscts=False, dsrdtr=False)

Eu também tentei:

casper@casper-ThinkPad-L530:~$ python -m serial.tools.list_ports regexp

E obtenha:

Filtered list with regexp: 'regexp'
no ports found

Espero que isso ajude alguma coisa?

    
por Evilunclebill 25.04.2014 / 18:02

0 respostas