Folgend alle Änderungen, die an 0.6. gemacht werden müssen, damit es mit uPy 1.11 läuft.
Und um es vorweg zu nehmen: es läuft!
- /, /lib & /dist-packages reichen:
umal.py
, l.65ff:
if sys.platform in ['WiPy', 'LoPy', 'GPy', 'FiPy']:
# Extend by path containing frozen modules.
sys.path[0:0] = ['/flash/lib-mpy']
# Extend by all paths required for running the sandboxed firmware.
sys.path.extend(['/flash/dist-packages', '/flash/terkin', '/flash/hiveeyes'])
else:
# Extend by all paths required for running the sandboxed firmware.
sys.path.extend(['/dist-packages'])
- Timer.Chrono() gibt es nicht. Braucht man zumindest für die uptime auch nicht. Wird aber glaub ich irgendwo noch zum Zeitnehmen verwendet.
Logging:
def getLogger(name=None, level=logging.INFO):
global _chrono
# Keep track of time since boot.
if sys.platform in ['WiPy', 'LoPy', 'GPy', 'FiPy']:
if _chrono is None:
from machine import Timer
_chrono = Timer.Chrono()
_chrono.start()
-
s.oben utime.time() = Sekunden seit boot
class TimedLogRecord(logging.LogRecord):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if sys.platform in ['WiPy', 'LoPy', 'GPy', 'FiPy']:
try:
self.tdelta = _chrono.read()
except:
self.tdelta = None
else:
self.tdelta = utime.time()
-
sys.exc_info existiert nicht. Habe auch keinen Ersatz gefunden, also erstmal None
Dist-packages/logging/init.py:
def exception(self, msg, *args):
if sys.platform in ['WiPy', 'LoPy', 'GPy', 'FiPy']:
self.exc(sys.exc_info()[1], msg, *args)
else:
self.exc(None, msg, *args)
- wie gesagt, /flash existiert nicht. Außerdem gibt es /backup nicht. Ich vermute, das wird von make erzeugt, fehlt dann aber im VSC.
Terkin/configuration:
if sys.platform in ['WiPy', 'LoPy', 'GPy', 'FiPy']:
CONFIG_PATH = '/flash'
BACKUP_PATH = '/flash/backup'
else:
CONFIG_PATH = '/'
BACKUP_PATH = '/backup'
- das ganze LTE Zeug fehlt natürlich und pycom auch
Terkin/device:
if sys.platform in ['WiPy', 'LoPy', 'GPy', 'FiPy']:
import pycom
…
-
syntax für mac ist unterschiedlich
Terkin/network/wifi:
def print_address_status(self):
if sys.platform in ['WiPy', 'LoPy', 'GPy', 'FiPy']:
mac_address = self.humanize_mac_addresses(self.station.mac())
else:
mac_address = self.humanize_mac_addresses(self.config('mac'))
ifconfig = self.station.ifconfig()
log.info('WiFi STA: Networking address (MAC): %s', mac_address)
log.info('WiFi STA: Networking address (IP): %s', ifconfig)
-
pycom pins sind strings, uPy ints. Das ist nicht hübsch, geht aber
Terkin/sensor/system:
# ADC channel used for sampling the raw value.
try:
self.adc = ADC(id=0)
except TypeError:
from machine import Pin
if type(self.pin) == str:
self.adc = ADC(Pin(int(self.pin[1:])))
else:
self.adc = ADC(Pin(self.pin))
Und das wars schon.