Skip to content

Commit c0869f8

Browse files
authored
Merge pull request #10 from riptideio/python3
Python3
2 parents ec6491a + a46c601 commit c0869f8

File tree

4 files changed

+25
-11
lines changed

4 files changed

+25
-11
lines changed

modbus_simulator/ui/datamodel.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,8 @@ class ErrorPopup(Popup):
6060
"""
6161
def __init__(self, **kwargs):
6262
# print kwargs
63-
super(ErrorPopup, self).__init__(**kwargs)
63+
super(ErrorPopup, self).__init__()
64+
# super(ErrorPopup, self).__init__(**kwargs)
6465
content = BoxLayout(orientation="vertical")
6566
content.add_widget(Label(text=kwargs['text'], font_size=20))
6667
mybutton = Button(text="Dismiss", size_hint=(1,.20), font_size=20)
@@ -422,7 +423,7 @@ def on_data_update(self, index, data):
422423
if self.blockname in ['input_registers', 'holding_registers']:
423424
self.list_view.adapter.data[index]['value'] = float(data)
424425
else:
425-
self.list_view.adapter.data.update({index: float(data)})
426+
self.list_view.adapter.data[index]['value'] = int(data)
426427
self.list_view._trigger_reset_populate()
427428
data = {'event': 'sync_data',
428429
'data': {index: self.list_view.adapter.data[index]}}
@@ -462,7 +463,7 @@ def update_registers(self, new_values, update_info):
462463
to_remove = None
463464
if count > 1:
464465
offset = int(offset)
465-
to_remove = [str(o) for o in list(xrange(offset+1, offset+count))]
466+
to_remove = [str(o) for o in list(range(offset+1, offset+count))]
466467

467468
self.list_view.adapter.update_for_new_data()
468469
self.refresh(new_values, to_remove)

modbus_simulator/ui/gui.py

+17-7
Original file line numberDiff line numberDiff line change
@@ -544,8 +544,8 @@ def _update_data_models(self, active, tab, value):
544544
registers = sum(
545545
map(
546546
lambda val: int(
547-
filter(
548-
str.isdigit, str(val.get('formatter', '16')))
547+
''.join(list(filter(
548+
str.isdigit, str(val.get('formatter', '16')))))
549549
), _data['data'].values()))/16
550550

551551
# Old schema
@@ -588,9 +588,12 @@ def sync_data_callback(self, blockname, data):
588588
v['formatter']
589589
)
590590
else:
591+
# v = dict(value=int(v))
592+
if not isinstance(v, dict):
593+
v = dict(value=v)
591594
self.modbus_device.set_values(int(self.active_slave),
592595
current_tab,
593-
k, int(v['value']))
596+
k, v.get('value'))
594597
except KeyError:
595598
pass
596599
except struct.error:
@@ -604,11 +607,17 @@ def sync_formatter_callback(self, blockname, data, old_formatter):
604607
try:
605608
_data = self.data_map[self.active_slave][current_tab]
606609
_updated = {}
607-
for k, v in data.items():
608-
old_wc = int(filter(str.isdigit, str(old_formatter)))/16
609-
new_wc = int(filter(str.isdigit, v.get('formatter')))/16
610+
current = list(data.keys())
611+
for k in current:
612+
old_wc = int(''.join(list(
613+
filter(str.isdigit, str(old_formatter))
614+
)))/16
615+
new_wc = int(''.join(list(
616+
filter(str.isdigit, data[k].get('formatter'))
617+
)))/16
610618
new_val, count = self.modbus_device.decode(
611-
int(self.active_slave), current_tab, k, v['formatter']
619+
int(self.active_slave),
620+
current_tab, k, data[k]['formatter']
612621
)
613622
data[k]['value'] = new_val
614623
_updated['offset'] = k
@@ -621,6 +630,7 @@ def sync_formatter_callback(self, blockname, data, old_formatter):
621630
)
622631
for i, val in enumerate(missing):
623632
o = int(k) + new_wc + i
633+
o = int(o)
624634
if not isinstance(k, int):
625635
o = str(o)
626636
data[o] = {'value': val, 'formatter': 'uint16'}

modbus_simulator/utils/pymodbus_server.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ def get_values(self, slave_id, block_name, address, size=1):
243243
slave = self.get_slave(slave_id)
244244
address = self._calc_offset(block_name, address)
245245
if slave.validate(_FX_MAPPER[block_name], address, count=size):
246-
return slave.getValues(_FX_MAPPER[block_name], address, size)
246+
return slave.getValues(_FX_MAPPER[block_name], address, int(size))
247247

248248
def get_slave(self, slave_id):
249249
return self.context[slave_id]
@@ -265,6 +265,8 @@ def encode(self, slave_id, block_name, offset, value, formatter):
265265
builder = BinaryPayloadBuilder(byteorder=self.byte_order,
266266
wordorder=self.word_order)
267267
add_method = ENCODERS.get(formatter)
268+
if 'int' in add_method: # Temp fix
269+
value = int(value)
268270
getattr(builder, add_method)(value)
269271
payload = builder.to_registers()
270272
return self.set_values(slave_id, block_name, offset, payload)

requirements

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ Kivy-Garden==0.1.4
66
pygame==1.9.4
77
pyglet==1.2.4
88
Pygments==2.1.3
9+
pymodbus==2.1.0
910
pyserial==3.2.1
1011
requests==2.12.4
1112
six==1.10.0

0 commit comments

Comments
 (0)