2017-07-31 5 views
0

sur Ubuntu 16.04 en VirtualBox, avec un noir BEAGLEBONE connecté à un port USB, exécutant le code suivant renvoie une erreur:pyserial: Impossible de configurer le port: (22, 'Invalid argument')

import serial 

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

erreur :

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

J'acquis le chemin du BBB en utilisant blkid dans le terminal. Le BBB est normalement accessible en utilisant SSH dans la machine virtuelle.

Quelle est l'origine de l'erreur, pourquoi Python ne peut-il pas ouvrir le port?


Modifier

La sortie de blkid est:

/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 est le chemin de la BHE et /dev/sdc1 chemin de la clé USB.


ls -l /dev/sd* retours:

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 retourne:

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_117
+1

'/ dev/sdb' est pas un port série - il est généralement un disque de stockage de fichiers d'un certain type. Un port série ressemble habituellement '/ dev/ttyS0' ou'/dev/ttyUSB0' ou similaire. – jszakmeister

+0

Si je branche une clé USB, son chemin est: '/ dev/sdc /'. Ce comportement peut-il être dû à VirtualBox? – Alexander

+0

Partagez votre sortie blkid, comme @jszakmeister a écrit/dev/sdb est généralement mappé sur les disques durs – Vinny

Répondre

2

Vous avez probablement le nom du périphérique mal: lire le lien à la fin de cette Cas, VirtualBox peut mal comprendre les périphériques série USB de l'hôte, et donc avoir attribué le mauvais nom de périphérique (/ dev).

"/ dev/sdb" est probablement un périphérique de type bloc, par exemple un disque dur.

$ 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 

Les ports série seront tels que "/ dev/ttyUSB0"

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

ports série ont souvent un groupe réglé sur 'dialout' - mais cela est juste pour information, cela devient fixé dans le cadre de reconnaissance que c'est un port série.

Vous pouvez également lire cet article sur l'utilisation de périphériques USB série hôte sous VirtualBox: https://techtooltip.wordpress.com/2008/09/12/using-host-serial-port-from-guest-in-virtual-box/

+0

Je me suis ajouté au groupe dialout, l'erreur persiste toujours. J'ai ajouté quelques sorties à la question originale, veuillez voir ci-dessus – Alexander

+0

Lisez cet article que j'ai posté - votre adhésion à dialout n'a aucune incidence sur le sujet. – MikeW

+0

Merci pour la réponse, il semble que le problème réside dans les paramètres du port série de VirtualBoxe. J'ai suivi le tutoriel ci-dessus, mais je reçois une autre erreur lors de l'exécution de la machine invité. J'ai posté [une nouvelle question concernant l'erreur] (https://stackoverflow.com/questions/45439160/virtualbox-failed-to-open-host-device-com1-verr-file-not-found) – Alexander