Wir versuchen, Firmware-Updates mit CANopenNode durchzuführen. Es scheint, dass dazu das neue Firmware-Image an den Objektverzeichniseintrag 0x1F50:1 gesendet werden muss. Wenn wir dies versuchen, wird der Prozess früh beendet und nicht immer nach dem Senden der gleichen Anzahl von Bytes. Manchmal kann es schon nach dem Versenden einiger Dutzend fehlschlagen, manchmal können bis zu 5.000 gesendet werden. Dies scheint kein Fehler auf der Empfängerseite zu sein, da alle anderen CAN-Kommunikationen nach dem Abbruch der Dateiübertragung normal ausgeführt werden. Der spezifische Fehler, der über Python zurückgemeldet wird, ist Code 0x05040001, Unbekannter SDO-Befehl angegeben. Natürlich haben wir nach dieser Fehlercodenummer gesucht, aber die Suchergebnisse haben keine hilfreichen Hinweise darauf ergeben, warum dieser Vorgang möglicherweise fehlschlägt. Die Routine in Python zum Senden der Datei lautet wie folgt:
Wir versuchen, Firmware-Updates mit CANopenNode durchzuführen. Es scheint, dass dazu das neue Firmware-Image an den Objektverzeichniseintrag 0x1F50:1 gesendet werden muss. Wenn wir dies versuchen, wird der Prozess früh beendet und nicht immer nach dem Senden der gleichen Anzahl von Bytes. Manchmal kann es schon nach dem Versenden einiger Dutzend fehlschlagen, manchmal können bis zu 5.000 gesendet werden. Dies scheint kein Fehler auf der Empfängerseite zu sein, da alle anderen CAN-Kommunikationen nach dem Abbruch der Dateiübertragung normal ausgeführt werden. Der spezifische Fehler, der über Python zurückgemeldet wird, ist Code 0x05040001, Unbekannter SDO-Befehl angegeben. Natürlich haben wir nach dieser Fehlercodenummer gesucht, aber die Suchergebnisse haben keine hilfreichen Hinweise darauf ergeben, warum dieser Vorgang möglicherweise fehlschlägt. Die Routine in Python zum Senden der Datei lautet wie folgt: [code]def do_sdo_file_upload(filename, index : int, subindex : int = 0x0) : info_text = "@[" + hex(index) + "][" + hex(subindex) + "]" try : logger.info("doing file upload") logger.info("OD entry supports 'open' method: " \ + str(hasattr(node.sdo, 'open'))) filesize = os.path.getsize(filename) logger.info("size of " + filename + " is " + str(filesize) + " bytes") node.sdo.MAX_RETRIES = 6 node.sdo.PAUSE_BEFORE_SEND = 0.001 node.sdo.RESPONSE_TIMEOUT = 1.0 with open(args.filename, 'rb') as f_in, \ node.sdo.open(\ index = index, subindex = subindex, \ mode = 'wb', size = filesize, buffering = 0x00, block_transfer = False) as f_out : bytes_sent = 0x00 chunk_size_max = 0x40 while bytes_sent < filesize : if chunk_size_max
Ich habe eine Methode in meinem Fragment, um meine App mit Intent.createChooser() zu teilen. Das untere Blatt mit den Freigabeoptionen wird vorübergehend geöffnet, die App wird jedoch geschlossen,...
Ich habe eine Methode in meinem Fragment, um meine App mit Intent.createChooser() zu teilen. Das untere Blatt mit den Freigabeoptionen wird vorübergehend geöffnet, die App wird jedoch geschlossen,...