def 讀32位元的資料(self, 表): 位置名對應表 = {} for 名, 位 in 表.items(): 位置名對應表[Symbol(位, current_value=True).offset] = 名 這段開始 = None 這段結束 = None 上尾資料 = {} for 位置 in sorted(位置名對應表.keys()): 這个開始 = 位置 這个結束 = 位置 + 2 if 這段開始 is None: 這段開始 = 這个開始 這段結束 = 這个結束 elif 這个結束 - 這段開始 <= self.暫存器一擺數量限制: 這段結束 = 這个結束 else: self._讀32位元一段資料(位置名對應表, 上尾資料, 這段開始, 這段結束) 這段開始 = 這个開始 這段結束 = 這个結束 if 這段開始 is not None: self._讀32位元一段資料(位置名對應表, 上尾資料, 這段開始, 這段結束) return 上尾資料
def test_Y0(self): s = Symbol('Y33') self.assertEqual(s.offset, 33) self.assertTrue(s.is_coil())
def test_X_not_found(self): with self.assertRaises(InvalidTargetError): Symbol('X9999')
def test_C255r(self): s = Symbol('C255', current_value=True) self.assertEqual(s.offset, 9810) self.assertFalse(s.is_coil())
def test_C255c(self): s = Symbol('C255', current_value=False) self.assertEqual(s.offset, 9755) self.assertTrue(s.is_coil())
def test_D593(self): s = Symbol('D593') self.assertEqual(s.offset, 6593) self.assertFalse(s.is_coil())
def test_R5234_is_5000(self): s = Symbol('R5234') self.assertEqual(s.offset, 5000) self.assertFalse(s.is_coil())
def test_R333(self): s = Symbol('R333') self.assertEqual(s.offset, 333) self.assertFalse(s.is_coil())
def test_S5(self): s = Symbol('S5') self.assertEqual(s.offset, 6005) self.assertTrue(s.is_coil())
def test_M0(self): s = Symbol('M0') self.assertEqual(s.offset, 2000) self.assertTrue(s.is_coil())
def test_X10(self): s = Symbol('X10') self.assertEqual(s.offset, 1010) self.assertTrue(s.is_coil())