src/eric7/MicroPython/Devices/TeensyDevices.py

Tue, 10 Dec 2024 15:46:34 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 10 Dec 2024 15:46:34 +0100
branch
eric7
changeset 11090
f5f5f5803935
parent 11034
7b8a21fd2d58
permissions
-rw-r--r--

Updated copyright for 2025.

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
11090
f5f5f5803935 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11034
diff changeset
3 # Copyright (c) 2023 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
9755
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
10806
2f6df822e3b9 Moved some functions to the EricUtilities package for consistency and adapted the code base accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10683
diff changeset
14 from eric7 import EricUtilities, Preferences
9755
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(
11034
7b8a21fd2d58 Extended the EricMessageBox module to determine a parent widget if none was given and extended the EricApplication class to store a reference to the main widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
189 self.microPython,
9755
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:]
10806
2f6df822e3b9 Moved some functions to the EricUtilities package for consistency and adapted the code base accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10683
diff changeset
216 latestVersion = EricUtilities.versionToTuple(tag)
9755
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"]
10806
2f6df822e3b9 Moved some functions to the EricUtilities package for consistency and adapted the code base accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10683
diff changeset
223 currentVersion = EricUtilities.versionToTuple(currentVersionStr)
9755
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(
11034
7b8a21fd2d58 Extended the EricMessageBox module to determine a parent widget if none was given and extended the EricApplication class to store a reference to the main widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
236 self.microPython,
9755
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 """
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9927
diff changeset
246 if self.microPython.isConnected():
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9927
diff changeset
247 self.executeCommands(
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9927
diff changeset
248 "import machine\nmachine.reset()\n", mode=self._submitMode
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9927
diff changeset
249 )
9927
fa258d559f01 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9820
diff changeset
250
9765
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
251 ##################################################################
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
252 ## time related methods below
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
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
255 def _getSetTimeCode(self):
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
256 """
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
257 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
258
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
259 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
260 subclasses.
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
261
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
262 @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
263 @rtype str
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
264 """
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
265 # rtc_time[0] - year 4 digit
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
266 # rtc_time[1] - month 1..12
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
267 # rtc_time[2] - day 1..31
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
268 # 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
269 # rtc_time[4] - hour 0..23
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
270 # rtc_time[5] - minute 0..59
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
271 # rtc_time[6] - second 0..59
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
272 # rtc_time[7] - yearday 1..366
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
273 # 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
274
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
275 # 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
276 # 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
277 # subseconds)
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
278 # 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
279 return """
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
280 def set_time(rtc_time):
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
281 import machine
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
282 rtc = machine.RTC()
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
283 rtc.init(rtc_time[:7] + (0,))
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
284 """
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
285
9755
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286
10683
779cda568acb Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
287 def createDevice(microPythonWidget, deviceType, _vid, _pid, _boardName, _serialNumber):
9755
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
288 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289 Function to instantiate a MicroPython device object.
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
290
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291 @param microPythonWidget reference to the main MicroPython widget
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 @type MicroPythonWidget
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 @param deviceType device type assigned to this device interface
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 @type str
10683
779cda568acb Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
295 @param _vid vendor ID (unused)
9755
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
296 @type int
10683
779cda568acb Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
297 @param _pid product ID (unused)
9755
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
298 @type int
10683
779cda568acb Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
299 @param _boardName name of the board (unused)
9755
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
300 @type str
10683
779cda568acb Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
301 @param _serialNumber serial number of the board (unused)
9755
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302 @type str
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
303 @return reference to the instantiated device object
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
304 @rtype PyBoardDevice
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
305 """
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
306 return TeensyDevice(microPythonWidget, deviceType)
9820
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
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
309 @pyqtSlot()
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
310 def showTeensyFlashInstructions():
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
311 """
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
312 Slot to show a message box with instruction to flash the Teensy.
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
313 """
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
314 EricMessageBox.information(
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
315 None,
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
316 QCoreApplication.translate("TeensyDevice", "Flash MicroPython Firmware"),
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
317 QCoreApplication.translate(
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
318 "TeensyDevice",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
319 """<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
320 """ application. Make sure you downloaded the MicroPython or"""
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
321 """ CircuitPython .hex file.</p>"""
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
322 """<p>See <a href="{0}">the PJRC Teensy web site</a>"""
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
323 """ for details.</p>""",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
324 ).format("https://www.pjrc.com/teensy/loader.html"),
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
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
328 @pyqtSlot()
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
329 def startTeensyLoader():
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
330 """
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
331 Slot to start the 'Teensy Loader' application.
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
332
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
333 Note: The application must be accessible via the application search path.
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
334 """
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
335 ok, _ = QProcess.startDetached("teensy")
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
336 if not ok:
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
337 EricMessageBox.warning(
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
338 None,
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
339 QCoreApplication.translate("TeensyDevice", "Start 'Teensy Loader'"),
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
340 QCoreApplication.translate(
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
341 "TeensyDevice",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
342 """<p>The 'Teensy Loader' application <b>teensy</b> could not"""
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
343 """ be started. Ensure it is in the application search path or"""
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
344 """ start it manually.</p>""",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
345 ),
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
346 )

eric ide

mercurial