Allow specifying additional baud rates

This commit is contained in:
Gina Häußge 2015-08-12 13:39:12 +02:00
parent 7d6462b815
commit 963d590728
7 changed files with 30 additions and 0 deletions

View file

@ -33,6 +33,8 @@
before disconnecting from the printer for good. This way it is ensured that
the `beforePrinterDisconnected` script or any further GCODE injected into it
will actually get sent.
* Additional baud rates to allow for connecting can now be specified along side
additional serial ports via the settings dialog and the configuration file.
* Documentation improvements
### Bug Fixes

View file

@ -611,6 +611,10 @@ Use the following settings to configure the serial connection to the printer:
additionalPorts:
- /dev/myPrinterSymlink
# Use this to define additional baud rates to offer for connecting to serial ports. Must be a
# valid integer. Defaults to not set
- 123456
.. _sec-configuration-config_yaml-server:
Server

View file

@ -84,6 +84,7 @@ def getSettings():
"timeoutSdStatus": s.getFloat(["serial", "timeout", "sdStatus"]),
"log": s.getBoolean(["serial", "log"]),
"additionalPorts": s.get(["serial", "additionalPorts"]),
"additionalBaudrates": s.get(["serial", "additionalBaudrates"]),
"longRunningCommands": s.get(["serial", "longRunningCommands"])
},
"folder": {
@ -220,6 +221,7 @@ def setSettings():
if "timeoutTemperature" in data["serial"].keys(): s.setFloat(["serial", "timeout", "temperature"], data["serial"]["timeoutTemperature"])
if "timeoutSdStatus" in data["serial"].keys(): s.setFloat(["serial", "timeout", "sdStatus"], data["serial"]["timeoutSdStatus"])
if "additionalPorts" in data["serial"] and isinstance(data["serial"]["additionalPorts"], (list, tuple)): s.set(["serial", "additionalPorts"], data["serial"]["additionalPorts"])
if "additionalBaudrates" in data["serial"] and isinstance(data["serial"]["additionalBaudrates"], (list, tuple)): s.set(["serial", "additionalBaudrates"], data["serial"]["additionalBaudrates"])
if "longRunningCommands" in data["serial"] and isinstance(data["serial"]["longRunningCommands"], (list, tuple)): s.set(["serial", "longRunningCommands"], data["serial"]["longRunningCommands"])
oldLog = s.getBoolean(["serial", "log"])

View file

@ -83,6 +83,7 @@ default_settings = {
"sdStatus": 1
},
"additionalPorts": [],
"additionalBaudrates": [],
"longRunningCommands": ["G4", "G28", "G29", "G30", "G32", "M400", "M226"]
},
"server": {

View file

@ -131,6 +131,7 @@ $(function() {
self.serial_timeoutSdStatus = ko.observable(undefined);
self.serial_log = ko.observable(undefined);
self.serial_additionalPorts = ko.observable(undefined);
self.serial_additionalBaudrates = ko.observable(undefined);
self.serial_longRunningCommands = ko.observable(undefined);
self.folder_uploads = ko.observable(undefined);
@ -430,6 +431,7 @@ $(function() {
self.serial_timeoutSdStatus(response.serial.timeoutSdStatus);
self.serial_log(response.serial.log);
self.serial_additionalPorts(response.serial.additionalPorts.join("\n"));
self.serial_additionalBaudrates(response.serial.additionalBaudrates.join(", "));
self.serial_longRunningCommands(response.serial.longRunningCommands.join(", "));
self.folder_uploads(response.folder.uploads);
@ -518,6 +520,7 @@ $(function() {
"timeoutSdStatus": self.serial_timeoutSdStatus(),
"log": self.serial_log(),
"additionalPorts": commentableLinesToArray(self.serial_additionalPorts()),
"additionalBaudrates": _.map(splitTextToArray(self.serial_additionalBaudrates(), ",", true, function(item) { return !isNaN(parseInt(item)); }), function(item) { return parseInt(item); }),
"longRunningCommands": splitTextToArray(self.serial_longRunningCommands(), ",", true)
},
"folder": {

View file

@ -84,4 +84,11 @@
<span class="help-inline">{{ _('Use this to define additional <a href="%%(glob_url)s">glob patterns</a> matching serial ports to list for connecting against, e.g. <code>/dev/ttyAMA*</code>. One entry per line.')|format(glob_url="http://docs.python.org/2/library/glob.html") }}</span>
</div>
</div>
<div class="control-group">
<label class="control-label" for="settings-serialAdditionalBaudrates">{{ _('Additional baud rates') }}</label>
<div class="controls">
<input type="text" class="input-block-level" id="settings-serialAdditionalBaudrates" data-bind="value: serial_additionalBaudrates">
<span class="help-inline">{{ _('Use this to define additional serial port baud rates to list for connecting with, e.g. <code>123456</code>. Comma separated.')|format(glob_url="http://docs.python.org/2/library/glob.html") }}</span>
</div>
</div>
</form>

View file

@ -31,6 +31,8 @@ try:
except:
pass
_logger = logging.getLogger(__name__)
def serialList():
baselist=[]
if os.name=="nt":
@ -64,6 +66,15 @@ def serialList():
def baudrateList():
ret = [250000, 230400, 115200, 57600, 38400, 19200, 9600]
additionalBaudrates = settings().get(["serial", "additionalBaudrates"])
for additional in additionalBaudrates:
try:
ret.append(int(additional))
except:
_logger.warn("{} is not a valid additional baudrate, ignoring it".format(additional))
ret.sort(reverse=True)
prev = settings().getInt(["serial", "baudrate"])
if prev in ret:
ret.remove(prev)