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/
在 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/