首先,我希望这是提出这个问题的正确地方。
我的问题还没有完全定义好,我希望你能帮助我弄清楚出了什么问题。
因此,对于我的电子考试项目,我和我的小组制作了一个心电图,主要用于监测心率。然后,我们希望获取得到的数据并将其发送到计算机,然后从那里绘制实际心电图的图表。电子板和它工作正常。我们获取心率频率并将其通过 AD 转换器(用汇编语言编写)。之后,我们通过光耦合器获取输出信号,然后从那里通过 RS232 电缆进入计算机。
我相信我已经正确安装了 FTDI 的 VCP 驱动程序。我说我相信是因为我遵循了安装说明并且一切顺利,但是当我尝试示例时,我收到错误:
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
这是我的第一个问题,我不确定如何全面检查驱动程序是否真正正常工作。执行以下命令时我可以完美地看到电缆:
casper@casper-ThinkPad-L530:~/Downloads/release/examples$ ls -h /dev/*tty*
我可以找到:
/dev/ttyUSB0
但有东西告诉我这不是 RS232 协议正常工作所需的虚拟 COM 端口。
这引出了我的第二个问题。这可能只是由于上述原因而导致的问题,但尽管如此:
我刚刚开始使用 PySerial 来处理电缆,但我似乎无法掌握如何做到这一点。执行以下操作时:
import serial
ser = serial.Serial('/dev/ttyUSB0', timeout=10)
x = ser.read()
print x
ser.close()
Shell 只是挂起,好像没有收到任何字节,10 秒超时后,它关闭。我确实知道我正在通过电缆发送信号,因为我能够在示波器上看到结果。
如果您需要更多信息或图片,请随时询问,我会很乐意为您提供所需的信息。
期待您的回复,谨致问候!
编辑:
在阅读更多 PySerial 文档时,我尝试了以下操作:
import serial
import io
ser = serial.Serial('/dev/ttyUSB0', timeout=1)
ser.baudrate = 19200
print ser
ser.close()
并得到结果:
Serial<id=0x98dad6c, open=True>(port='/dev/ttyUSB0', baudrate=19200, bytesize=8, parity='N', stopbits=1, timeout=1, xonxoff=False, rtscts=False, dsrdtr=False)
我也尝试过:
casper@casper-ThinkPad-L530:~$ python -m serial.tools.list_ports regexp
并得到:
Filtered list with regexp: 'regexp'
no ports found
希望这能有帮助吗?