我目前正在进行一个项目,在这个项目中,我必须通过USB与定制的声纳板通信,串行连接CTS/RTS硬件流量控制,波特率为4499456。
用于发送和接收数据的Matlab代码已经可用,并在Windows上进行了全面测试。
在Linux(Ubuntu14.10/15.04)上尝试执行Matlab代码时会出现问题。切换板上的LED(写入)和接收信息(读取)的命令都不起作用。
python端口的matlab代码使用pyserial和pylibftdi库确实允许写入,但也可以挂起接收数据。
有人知道为什么它在windows上工作而在ubuntu上不工作吗?可能是司机的问题?或者与Linux上的CTS/RTS有关?lsusb
输出
Bus 002 Device 004: ID 0403:6014 Future Technology Devices International, Ltd FT232H Single HS USB-UART/FIFO IC
dmesg
输出[11906.209231] usb 2-3: new high-speed USB device number 5 using ehci-pci
[11906.346701] usb 2-3: New USB device found, idVendor=0403, idProduct=6014
[11906.346713] usb 2-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[11906.346720] usb 2-3: Product: USB <-> Serial Converter
[11906.346725] usb 2-3: Manufacturer: FTDI
[11906.346730] usb 2-3: SerialNumber: FT69T4N
[11906.351716] ftdi_sio 2-3:1.0: FTDI USB Serial Device converter detected
[11906.351800] usb 2-3: Detected FT232H
[11906.352234] usb 2-3: FTDI USB Serial Device converter now attached to ttyUSB1
编辑:只是记录我的进展,以防有人遇到同样的问题。问题似乎在于波特率;将其更改为115200允许从设备中读取数据,但会使向设备发送数据时出错。
最佳答案
显然,ftdi驱动程序在非常高/非标准波特率的情况下不能很好地工作。最后我用3000000的波特率解决了这个问题