src/eric7/MicroPython/Devices/TeensyDevices.py

Tue, 21 Mar 2023 11:45:08 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 21 Mar 2023 11:45:08 +0100
branch
eric7
changeset 9928
f98f0c28c1eb
parent 9927
fa258d559f01
child 9989
286c2a21f36f
permissions
-rw-r--r--

MicroPython
- Changed the 'fileSystemInfo()' method such, that it finds mounted file systems as well.

9755
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2023 Detlev Offenbach <detlev@die-offenbachs.de>
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the device interface class for Teensy boards with MicroPython.
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
10 from PyQt6.QtCore import QCoreApplication, QProcess, QUrl, pyqtSlot
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
11 from PyQt6.QtNetwork import QNetworkReply, QNetworkRequest
9755
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 from PyQt6.QtWidgets import QMenu
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 from eric7 import Globals, Preferences
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 from eric7.EricWidgets import EricMessageBox
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 from eric7.EricWidgets.EricApplication import ericApp
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
9765
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
18 from ..MicroPythonWidget import HAS_QTCHART
9756
9854647c8c5c Reorganized the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9755
diff changeset
19 from . import FirmwareGithubUrls
9854647c8c5c Reorganized the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9755
diff changeset
20 from .DeviceBase import BaseDevice
9755
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
9756
9854647c8c5c Reorganized the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9755
diff changeset
23 class TeensyDevice(BaseDevice):
9755
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 Class implementing the device for Teensy boards with MicroPython.
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 def __init__(self, microPythonWidget, deviceType, parent=None):
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 Constructor
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 @param microPythonWidget reference to the main MicroPython widget
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 @type MicroPythonWidget
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 @param deviceType device type assigned to this device interface
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 @type str
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 @param parent reference to the parent object
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 @type QObject
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 super().__init__(microPythonWidget, deviceType, parent)
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 self.__createTeensyMenu()
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 def setButtons(self):
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 Public method to enable the supported action buttons.
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 super().setButtons()
9763
52f982c08301 Removed the 'Open' and 'Save' buttons from the MicroPython widget and made the repl and file manager start automatically upon connecting to the selected device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9756
diff changeset
48
9755
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 self.microPython.setActionButtons(
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 run=True, repl=True, files=True, chart=HAS_QTCHART
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 )
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 def forceInterrupt(self):
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 Public method to determine the need for an interrupt when opening the
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 serial connection.
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 @return flag indicating an interrupt is needed
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 @rtype bool
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 return False
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 def deviceName(self):
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 Public method to get the name of the device.
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 @return name of the device
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 @rtype str
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 return self.tr("Teensy")
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 def canStartRepl(self):
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 Public method to determine, if a REPL can be started.
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 @return tuple containing a flag indicating it is safe to start a REPL
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 and a reason why it cannot.
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 @rtype tuple of (bool, str)
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 return True, ""
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 def canStartPlotter(self):
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 Public method to determine, if a Plotter can be started.
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 @return tuple containing a flag indicating it is safe to start a
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 Plotter and a reason why it cannot.
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 @rtype tuple of (bool, str)
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 return True, ""
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 def canRunScript(self):
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 Public method to determine, if a script can be executed.
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 @return tuple containing a flag indicating it is safe to start a
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 Plotter and a reason why it cannot.
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 @rtype tuple of (bool, str)
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 return True, ""
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 def runScript(self, script):
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 Public method to run the given Python script.
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 @param script script to be executed
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 @type str
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 pythonScript = script.split("\n")
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 self.sendCommands(pythonScript)
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 def canStartFileManager(self):
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 Public method to determine, if a File Manager can be started.
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 @return tuple containing a flag indicating it is safe to start a
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 File Manager and a reason why it cannot.
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 @rtype tuple of (bool, str)
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 return True, ""
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 def getDocumentationUrl(self):
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 Public method to get the device documentation URL.
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 @return documentation URL of the device
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 @rtype str
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 return Preferences.getMicroPython("MicroPythonDocuUrl")
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 def getFirmwareUrl(self):
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 Public method to get the device firmware download URL.
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 @return firmware download URL of the device
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 @rtype str
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 return Preferences.getMicroPython("MicroPythonFirmwareUrl")
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 def __createTeensyMenu(self):
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 Private method to create the microbit submenu.
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 self.__teensyMenu = QMenu(self.tr("Teensy Functions"))
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 self.__showMpyAct = self.__teensyMenu.addAction(
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 self.tr("Show MicroPython Versions"), self.__showFirmwareVersions
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 )
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 self.__teensyMenu.addSeparator()
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 self.__teensyMenu.addAction(
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
151 self.tr("MicroPython Flash Instructions"), showTeensyFlashInstructions
9755
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 )
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 self.__flashMpyAct = self.__teensyMenu.addAction(
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
154 self.tr("Flash MicroPython Firmware"), startTeensyLoader
9755
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 )
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 self.__flashMpyAct.setToolTip(
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 self.tr("Start the 'Teensy Loader' application to flash the Teensy device.")
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 )
9927
fa258d559f01 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9820
diff changeset
159 self.__teensyMenu.addSeparator()
fa258d559f01 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9820
diff changeset
160 self.__resetAct = self.__teensyMenu.addAction(
fa258d559f01 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9820
diff changeset
161 self.tr("Reset Device"), self.__resetDevice
fa258d559f01 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9820
diff changeset
162 )
9755
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 def addDeviceMenuEntries(self, menu):
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 Public method to add device specific entries to the given menu.
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 @param menu reference to the context menu
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 @type QMenu
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 connected = self.microPython.isConnected()
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 linkConnected = self.microPython.isLinkConnected()
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 self.__showMpyAct.setEnabled(connected)
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 self.__flashMpyAct.setEnabled(not linkConnected)
9927
fa258d559f01 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9820
diff changeset
176 self.__resetAct.setEnabled(connected)
9755
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 menu.addMenu(self.__teensyMenu)
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 @pyqtSlot()
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 def __showFirmwareVersions(self):
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 Private slot to show the firmware version of the connected device and the
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 available firmware version.
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 if self.microPython.isConnected():
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 if self._deviceData["mpy_name"] != "micropython":
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 EricMessageBox.critical(
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 None,
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 self.tr("Show MicroPython Versions"),
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 self.tr(
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 """The firmware of the connected device cannot be"""
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 """ determined or the board does not run MicroPython."""
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 """ Aborting..."""
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 ),
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 )
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 else:
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 ui = ericApp().getObject("UserInterface")
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 request = QNetworkRequest(QUrl(FirmwareGithubUrls["micropython"]))
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 reply = ui.networkAccessManager().head(request)
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 reply.finished.connect(lambda: self.__firmwareVersionResponse(reply))
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
203 @pyqtSlot(QNetworkReply)
9755
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 def __firmwareVersionResponse(self, reply):
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 """
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
206 Private slot handling the response of the latest version request.
9755
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 @param reply reference to the reply object
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 @type QNetworkReply
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 latestUrl = reply.url().toString()
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 tag = latestUrl.rsplit("/", 1)[-1]
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 while tag and not tag[0].isdecimal():
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 # get rid of leading non-decimal characters
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 tag = tag[1:]
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 latestVersion = Globals.versionToTuple(tag)
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 if self._deviceData["mpy_version"] == "unknown":
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 currentVersionStr = self.tr("unknown")
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 currentVersion = (0, 0, 0)
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221 else:
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 currentVersionStr = self._deviceData["mpy_version"]
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223 currentVersion = Globals.versionToTuple(currentVersionStr)
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225 msg = self.tr(
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 "<h4>MicroPython Version Information</h4>"
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 "<table>"
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228 "<tr><td>Installed:</td><td>{0}</td></tr>"
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 "<tr><td>Available:</td><td>{1}</td></tr>"
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 "</table>"
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 ).format(currentVersionStr, tag)
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 if currentVersion < latestVersion:
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 msg += self.tr("<p><b>Update available!</b></p>")
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 EricMessageBox.information(
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 None,
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 self.tr("MicroPython Version"),
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 msg,
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 )
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240
9927
fa258d559f01 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9820
diff changeset
241 @pyqtSlot()
fa258d559f01 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9820
diff changeset
242 def __resetDevice(self):
fa258d559f01 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9820
diff changeset
243 """
fa258d559f01 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9820
diff changeset
244 Private slot to reset the connected device.
fa258d559f01 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9820
diff changeset
245 """
fa258d559f01 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9820
diff changeset
246 self.microPython.deviceInterface().execute(
fa258d559f01 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9820
diff changeset
247 "import machine\nmachine.reset()\n", mode=self._submitMode
fa258d559f01 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9820
diff changeset
248 )
fa258d559f01 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9820
diff changeset
249
9765
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
250 ##################################################################
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
251 ## time related methods below
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
252 ##################################################################
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
253
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
254 def _getSetTimeCode(self):
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
255 """
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
256 Protected method to get the device code to set the time.
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
257
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
258 Note: This method must be implemented in the various device specific
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
259 subclasses.
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
260
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
261 @return code to be executed on the connected device to set the time
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
262 @rtype str
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
263 """
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
264 # rtc_time[0] - year 4 digit
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
265 # rtc_time[1] - month 1..12
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
266 # rtc_time[2] - day 1..31
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
267 # rtc_time[3] - weekday 1..7 1=Monday
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
268 # rtc_time[4] - hour 0..23
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
269 # rtc_time[5] - minute 0..59
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
270 # rtc_time[6] - second 0..59
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
271 # rtc_time[7] - yearday 1..366
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
272 # rtc_time[8] - isdst 0, 1, or -1
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
273
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
274 # The machine.RTC.init() function takes the arguments in the
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
275 # order: (year, month, day, weekday, hour, minute, second,
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
276 # subseconds)
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
277 # https://docs.micropython.org/en/latest/library/machine.RTC.html#machine-rtc
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
278 return """
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
279 def set_time(rtc_time):
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
280 import machine
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
281 rtc = machine.RTC()
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
282 rtc.init(rtc_time[:7] + (0,))
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
283 """
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
284
9755
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
285
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286 def createDevice(microPythonWidget, deviceType, vid, pid, boardName, serialNumber):
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
287 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
288 Function to instantiate a MicroPython device object.
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
290 @param microPythonWidget reference to the main MicroPython widget
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291 @type MicroPythonWidget
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 @param deviceType device type assigned to this device interface
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 @type str
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 @param vid vendor ID
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
295 @type int
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
296 @param pid product ID
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
297 @type int
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
298 @param boardName name of the board
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
299 @type str
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
300 @param serialNumber serial number of the board
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
301 @type str
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302 @return reference to the instantiated device object
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
303 @rtype PyBoardDevice
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
304 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
305 return TeensyDevice(microPythonWidget, deviceType)
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
306
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
307
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
308 @pyqtSlot()
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
309 def showTeensyFlashInstructions():
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
310 """
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
311 Slot to show a message box with instruction to flash the Teensy.
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
312 """
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
313 EricMessageBox.information(
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
314 None,
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
315 QCoreApplication.translate("TeensyDevice", "Flash MicroPython Firmware"),
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
316 QCoreApplication.translate(
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
317 "TeensyDevice",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
318 """<p>Teensy 4.0 and Teensy 4.1 are flashed using the 'Teensy Loader'"""
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
319 """ application. Make sure you downloaded the MicroPython or"""
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
320 """ CircuitPython .hex file.</p>"""
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
321 """<p>See <a href="{0}">the PJRC Teensy web site</a>"""
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
322 """ for details.</p>""",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
323 ).format("https://www.pjrc.com/teensy/loader.html"),
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
324 )
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
325
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
326
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
327 @pyqtSlot()
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
328 def startTeensyLoader():
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
329 """
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
330 Slot to start the 'Teensy Loader' application.
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
331
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
332 Note: The application must be accessible via the application search path.
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
333 """
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
334 ok, _ = QProcess.startDetached("teensy")
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
335 if not ok:
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
336 EricMessageBox.warning(
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
337 None,
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
338 QCoreApplication.translate("TeensyDevice", "Start 'Teensy Loader'"),
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
339 QCoreApplication.translate(
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
340 "TeensyDevice",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
341 """<p>The 'Teensy Loader' application <b>teensy</b> could not"""
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
342 """ be started. Ensure it is in the application search path or"""
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
343 """ start it manually.</p>""",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
344 ),
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
345 )

eric ide

mercurial