示例#1
0
class SettingContents(object):
    """
    Defines common functionality of classes to "own" contents of
    GridSizer set up to display basic settings of the XBee device.
    """
    TIMEOUT = 2  # seconds
    "Timeout for serial port reads"

    def __init__(self, names, labels, entries, baud_rate):
        """
        @param names: Names for the settings displayed (any of the ones defined
        in settings module)
        @type: string iterable
        @param labels: Widgets to display labels for fields
        @type labels: iterable of Gtk.Label or equivalent
        @param entries: Widgets for entry and display of setting value
        @type entries: iterable of Gtk.Entry or equivalent
        @param baud_rate: baud rate for Serial port
        @type baud_rate: integer in Serial.BAUDRATES
        """
        # print(names)
        self.settings = Settings(names)
        self.baud_rate = baud_rate
        self.stg_lbls = labels
        """Gtk.Label objects for page, indexed by label's text."""
        self.stg_entries = entries
        """Gtk.Entry objects for page, indexed by label's text."""
        self.current_port = None
        self.xb_radio = None

    def _set_device(self, device_name):
        "Binds this object to device, allowing it to display/edit settings for that device."
# args to serial
#         port = None,           # number of device, numbering starts at
#                                # zero. if everything fails, the user
#                                # can specify a device string, note
#                                # that this isn't portable anymore
#                                # port will be opened if one is specified
#         baudrate=9600,         # baud rate
#         bytesize=EIGHTBITS,    # number of data bits
#         parity=PARITY_NONE,    # enable parity checking
#         stopbits=STOPBITS_ONE, # number of stop bits
#         timeout=None,          # set a timeout value, None to wait forever
#         xonxoff=False,         # enable software flow control
#         rtscts=False,          # enable RTS/CTS flow control
#         writeTimeout=None,     # set a timeout for writes
#         dsrdtr=False,          # None: use rtscts setting, dsrdtr
#                                #override if True or False
#         interCharTimeout=None  # Inter-character timeout, None to disable
        self.current_port = Serial(port=device_name, baudrate=self.baud_rate, timeout=self.TIMEOUT)
        self.xb_radio = ZigBee(self.current_port, shorthand=True, escaped=False)
        assert self.xb_radio
        self.settings.bind(self.xb_radio)

    def populate(self):
        "Read settings from device and save them."
        curr_vals = self.settings.read_all()
        for stg in self.settings:
            val = curr_vals[stg]
            self.stg_entries[stg].set_text(val)
示例#2
0
 def __init__(self, names, labels, entries, baud_rate):
     """
     @param names: Names for the settings displayed (any of the ones defined
     in settings module)
     @type: string iterable
     @param labels: Widgets to display labels for fields
     @type labels: iterable of Gtk.Label or equivalent
     @param entries: Widgets for entry and display of setting value
     @type entries: iterable of Gtk.Entry or equivalent
     @param baud_rate: baud rate for Serial port
     @type baud_rate: integer in Serial.BAUDRATES
     """
     # print(names)
     self.settings = Settings(names)
     self.baud_rate = baud_rate
     self.stg_lbls = labels
     """Gtk.Label objects for page, indexed by label's text."""
     self.stg_entries = entries
     """Gtk.Entry objects for page, indexed by label's text."""
     self.current_port = None
     self.xb_radio = None