No such file or directory: '/dev/ttyAMAO'

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
Goldener Ritter
User
Beiträge: 1
Registriert: Freitag 22. Dezember 2023, 12:26

Moin,

Ich habe einen Mycobot 280 Pi und möchte den Roboter mit dem Pi verbinden. Rein technisch sind sie schon verbunden, da sie fest miteinander verbaut sind (https://shop.elephantrobotics.com/en-de ... tive-robot).

Wenn ich das Programm starte

Code: Alles auswählen

import time
from pymycobot.mycobot import MyCobot

mc = MyCobot('/dev/ttyAMAO',1000000)
mc.power_on()
mc.set_color(255,255,255)
kommt diese Fehlermeldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 322, in open
    self.fd = os.open(self.portstr, os.O_RDWR | os.O_NOCTTY | os.O_NONBLOCK)
FileNotFoundError: [Errno 2] No such file or directory: '/dev/ttyAMAO'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/pi/Desktop/print.py", line 4, in <module>
    mc = MyCobot('/dev/ttyAMAO',1000000)
  File "/usr/local/lib/python3.9/dist-packages/pymycobot-3.3.3-py3.9.egg/pymycobot/mycobot.py", line 69, in __init__
    self._serial_port.open()
  File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 325, in open
    raise SerialException(msg.errno, "could not open port {}: {}".format(self._port, msg))
serial.serialutil.SerialException: [Errno 2] could not open port /dev/ttyAMAO: [Errno 2] No such file or directory: '/dev/ttyAMAO'
ich habe den Benutzer PI schon der Gruppe dialout zugeordnet.

ls -l /dev/tty*

Code: Alles auswählen

crw-rw-rw- 1 root tty       5,  0 Dec 21 19:00 /dev/tty
crw--w---- 1 root tty       4,  0 Dec 21 19:00 /dev/tty0
crw------- 1 pi   tty       4,  1 Dec 21 19:00 /dev/tty1
crw--w---- 1 root tty       4, 10 Dec 21 19:00 /dev/tty10
crw--w---- 1 root tty       4, 11 Dec 21 19:00 /dev/tty11
crw--w---- 1 root tty       4, 12 Dec 21 19:00 /dev/tty12
crw--w---- 1 root tty       4, 13 Dec 21 19:00 /dev/tty13
crw--w---- 1 root tty       4, 14 Dec 21 19:00 /dev/tty14
crw--w---- 1 root tty       4, 15 Dec 21 19:00 /dev/tty15
crw--w---- 1 root tty       4, 16 Dec 21 19:00 /dev/tty16
crw--w---- 1 root tty       4, 17 Dec 21 19:00 /dev/tty17
crw--w---- 1 root tty       4, 18 Dec 21 19:00 /dev/tty18
crw--w---- 1 root tty       4, 19 Dec 21 19:00 /dev/tty19
crw--w---- 1 root tty       4,  2 Dec 21 19:00 /dev/tty2
crw--w---- 1 root tty       4, 20 Dec 21 19:00 /dev/tty20
crw--w---- 1 root tty       4, 21 Dec 21 19:00 /dev/tty21
crw--w---- 1 root tty       4, 22 Dec 21 19:00 /dev/tty22
crw--w---- 1 root tty       4, 23 Dec 21 19:00 /dev/tty23
crw--w---- 1 root tty       4, 24 Dec 21 19:00 /dev/tty24
crw--w---- 1 root tty       4, 25 Dec 21 19:00 /dev/tty25
crw--w---- 1 root tty       4, 26 Dec 21 19:00 /dev/tty26
crw--w---- 1 root tty       4, 27 Dec 21 19:00 /dev/tty27
crw--w---- 1 root tty       4, 28 Dec 21 19:00 /dev/tty28
crw--w---- 1 root tty       4, 29 Dec 21 19:00 /dev/tty29
crw--w---- 1 root tty       4,  3 Dec 21 19:00 /dev/tty3
crw--w---- 1 root tty       4, 30 Dec 21 19:00 /dev/tty30
crw--w---- 1 root tty       4, 31 Dec 21 19:00 /dev/tty31
crw--w---- 1 root tty       4, 32 Dec 21 19:00 /dev/tty32
crw--w---- 1 root tty       4, 33 Dec 21 19:00 /dev/tty33
crw--w---- 1 root tty       4, 34 Dec 21 19:00 /dev/tty34
crw--w---- 1 root tty       4, 35 Dec 21 19:00 /dev/tty35
crw--w---- 1 root tty       4, 36 Dec 21 19:00 /dev/tty36
crw--w---- 1 root tty       4, 37 Dec 21 19:00 /dev/tty37
crw--w---- 1 root tty       4, 38 Dec 21 19:00 /dev/tty38
crw--w---- 1 root tty       4, 39 Dec 21 19:00 /dev/tty39
crw--w---- 1 root tty       4,  4 Dec 21 19:00 /dev/tty4
crw--w---- 1 root tty       4, 40 Dec 21 19:00 /dev/tty40
crw--w---- 1 root tty       4, 41 Dec 21 19:00 /dev/tty41
crw--w---- 1 root tty       4, 42 Dec 21 19:00 /dev/tty42
crw--w---- 1 root tty       4, 43 Dec 21 19:00 /dev/tty43
crw--w---- 1 root tty       4, 44 Dec 21 19:00 /dev/tty44
crw--w---- 1 root tty       4, 45 Dec 21 19:00 /dev/tty45
crw--w---- 1 root tty       4, 46 Dec 21 19:00 /dev/tty46
crw--w---- 1 root tty       4, 47 Dec 21 19:00 /dev/tty47
crw--w---- 1 root tty       4, 48 Dec 21 19:00 /dev/tty48
crw--w---- 1 root tty       4, 49 Dec 21 19:00 /dev/tty49
crw--w---- 1 root tty       4,  5 Dec 21 19:00 /dev/tty5
crw--w---- 1 root tty       4, 50 Dec 21 19:00 /dev/tty50
crw--w---- 1 root tty       4, 51 Dec 21 19:00 /dev/tty51
crw--w---- 1 root tty       4, 52 Dec 21 19:00 /dev/tty52
crw--w---- 1 root tty       4, 53 Dec 21 19:00 /dev/tty53
crw--w---- 1 root tty       4, 54 Dec 21 19:00 /dev/tty54
crw--w---- 1 root tty       4, 55 Dec 21 19:00 /dev/tty55
crw--w---- 1 root tty       4, 56 Dec 21 19:00 /dev/tty56
crw--w---- 1 root tty       4, 57 Dec 21 19:00 /dev/tty57
crw--w---- 1 root tty       4, 58 Dec 21 19:00 /dev/tty58
crw--w---- 1 root tty       4, 59 Dec 21 19:00 /dev/tty59
crw--w---- 1 root tty       4,  6 Dec 21 19:00 /dev/tty6
crw--w---- 1 root tty       4, 60 Dec 21 19:00 /dev/tty60
crw--w---- 1 root tty       4, 61 Dec 21 19:00 /dev/tty61
crw--w---- 1 root tty       4, 62 Dec 21 19:00 /dev/tty62
crw--w---- 1 root tty       4, 63 Dec 21 19:00 /dev/tty63
crw--w---- 1 root tty       4,  7 Dec 21 19:00 /dev/tty7
crw--w---- 1 root tty       4,  8 Dec 21 19:00 /dev/tty8
crw--w---- 1 root tty       4,  9 Dec 21 19:00 /dev/tty9
crw-rw---- 1 root dialout 204, 64 Dec 21 19:00 /dev/ttyAMA0
crw------- 1 root root      5,  3 Dec 21 19:00 /dev/ttyprintk
Habt ihr Tipps wie ich weiter vorgehen muss, um den Roboter anzusprechen?
Liebe Grüße der Goldene Ritter
__deets__
User
Beiträge: 14543
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich vermute ein Rechtsproblem, dein User muss in der Gruppe dialout sein. Zb mit “adduser <username> dialout”, und dann einfach neu starten & testen, dass der user drin ist, sollte mit dem “id” Kommando funktionieren. Dann nochmal probieren.
__deets__
User
Beiträge: 14543
Registriert: Mittwoch 14. Oktober 2015, 14:29

So, nochmal geschaut. Das Problem: der Dateiname endet auf O. Nicht 0 (null). Muss er aber. Das sind AMA0, AMA1, etc.
Benutzeravatar
__blackjack__
User
Beiträge: 13116
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Goldener Ritter: An der Stelle sollte man auch mal schauen ob man überall wo es relevant ist, eine Schriftart verwendet, bei der man das grosse O und die 0 optisch gut voneinander unterscheiden kann. Viele Schriftarten die in Editoren und IDEs verwendet werden, haben entweder einen Schrägstrich durch die 0 oder einen Punkt/Kreis oder ein Oval im Innenbereich der Null.

Das Problem wäre auch nicht aufgetreten wenn man die beiden Konstangen `PI_PORT` und `PI_BAUD` aus der Bibliothek verwendet.

`time` wird importiert, aber gar nicht verwendet‽

Das `MyCobot`-Objekt hat eine `close()`-Methode die man am Programmende aufrufen sollte. Dafür bietet sich die ``with``-Anweisung und `contextlib.closing()` an, weil das Objekt selbst leider kein Kontextmanager ist.

Namen sollten keine kryptischen Abkürzungen enthalten, oder gar nur daraus bestehen. Statt `mc` wäre etwas wie `robot` oder `robot_arm` sinnvoller als Name.

Ungetestet:

Code: Alles auswählen

#!/usr/bin/env python3
from contextlib import closing

from pymycobot import PI_BAUD, PI_PORT, MyCobot


def main():
    with closing(MyCobot(PI_PORT, PI_BAUD)) as robot:
        robot.power_on()
        robot.set_color(255, 255, 255)


if __name__ == "__main__":
    main()
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten