Pyserial:无法配置端口:(22,'Invalid argument')

Pyserial: Could not configure port: (22, 'Invalid argument')

在 VirtualBox 中的 Ubuntu 16.04 上,将 Beaglebone Black 连接到 USB 端口,运行 以下代码 returns 出错:

import serial

ser = serial.Serial()
ser.port = '/dev/sdb'
ser.baudrate = 9600
ser.open()

错误:

Could not configure port: (22, 'Invalid argument')

我在终端中使用 blkid 获取了 BBB 的路径。通常可以在虚拟机中使用 SSH 访问 BBB。

什么原因导致错误,为什么Python 无法打开端口?


编辑

blkid 的输出是:

/dev/sr0: UUID="2017-07-17-16-26-18-00" LABEL="VBOXADDITIONS_5.1.24_117012" TYPE="iso9660"
/dev/sda1: UUID="58957263-a785-44f1-89a0-a66efd56623f" TYPE="ext4" PARTUUID="306fada4-01"
/dev/sda5: UUID="2e8ad169-1527-4336-9169-e189688038cd" TYPE="swap" PARTUUID="306fada4-05"
/dev/sdb: SEC_TYPE="msdos" LABEL="boot" UUID="0CD5-4AE7" TYPE="vfat"
/dev/sdc1: LABEL="WATTO" UUID="BAF1-8FE6" TYPE="vfat" PARTUUID="1299f9fa-01"

其中 /dev/sdb 是 BBB 的路径,/dev/sdc1 U 盘的路径。


ls -l /dev/sd* returns:

brw-rw---- 1 root disk 8,  0 jul 31 11:14 /dev/sda
brw-rw---- 1 root disk 8,  1 jul 31 11:14 /dev/sda1
brw-rw---- 1 root disk 8,  2 jul 31 11:14 /dev/sda2
brw-rw---- 1 root disk 8,  5 jul 31 11:14 /dev/sda5
brw-rw-rw- 1  666 disk 8, 16 jul 31 16:32 /dev/sdb
brw------- 1 root root 8, 32 jul 31 16:52 /dev/sdc
brw------- 1 root root 8, 33 jul 31 16:52 /dev/sdc1


lsblk returns:

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   12G  0 disk 
├─sda1   8:1    0   10G  0 part /
├─sda2   8:2    0    1K  0 part 
└─sda5   8:5    0    2G  0 part [SWAP]
sdb      8:16   1   96M  0 disk /media/alexander/boot
sdc      8:32   1  7,5G  0 disk 
└─sdc1   8:33   1  7,5G  0 part /media/alexander/WATTO
sr0     11:0    1 56,8M  0 rom  /media/alexander/VBOXADDITIONS_5.1.24_1170123

您可能输入了错误的设备名称:请阅读最后的 link 在这种情况下,VirtualBox 可能会误解主机 USB 串行设备,因此分配了错误的设备 (/dev) 名称。

"/dev/sdb"大概是硬盘之类的块设备

$ ls -l /dev/sd*
brw-rw---- 1 root disk 8, 0 Jul 31 13:59 /dev/sda
brw-rw---- 1 root disk 8, 1 Jul 31 13:59 /dev/sda1
brw-rw---- 1 root disk 8, 2 Jul 31 13:59 /dev/sda2
brw-rw---- 1 root disk 8, 5 Jul 31 13:59 /dev/sda5
^
Note 'b' for block device

串口将如“/dev/ttyUSB0”

$ ls -l /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 0 Jul 31 14:34 /dev/ttyUSB0
^
Note 'c' for character device

串行端口通常将组设置为 'dialout' - 但这仅供参考,这被设置为识别它是串行端口的一部分。

您可能还希望阅读有关在 VirtualBox 下使用主机串行 USB 设备的文章:https://techtooltip.wordpress.com/2008/09/12/using-host-serial-port-from-guest-in-virtual-box/

Beaglebone 似乎只通过 USB 连接显示其文件系统:/dev/sdb 如果你想通过串口连接到它,你需要一个 USB 到 TTY 转换器。 (例如 PL2303HX,2$-10$)。 您也可以按照本教程将电脑连接到串口。

http://www.dummies.com/computers/beaglebone/how-to-connect-the-beaglebone-black-via-serial-over-usb/