2012-05-02 2 views
0

предложить лучший и эффективный способ для этогоЛучший способ для сравнения (HEX) строк

a = "data read from serial port in HEX" 
TX1 = "\x10\x04" 
RX1 = "\x10\x04" 
TX2 = "\xF2\x00\x04\x43\x30\x40\x32\xED\x45" 
RX2 = "\x06\xF2\x00\x13\x50\x30\x40\x30\x30\x31\x31\x31\x30\x31\x31\x30\x30\x30\x30\x30\x30\x30\x30\xAE\xFD" 
if tx1 in a: 
    send.ser(rx1) 
    read_buufer() 
if tx2 in a: 
    send.ser(rx2) 
    read_buf() 

так, что это лучший способ сделать это сравнение .... Jus хочет верифицировать шестигранные данные, полученные из последовательного буфера (a) и проверьте со списком доступной строки запроса tx1, tx2, tx3 ..... txn и отправьте ответ от rx1, rx2, rx2 ...... rxn ...

+1

По какой-либо причине не делать то, что вы делаете? Заметное замедление? –

+0

У меня почти 26 запросов и ответов, поэтому, если я сделаю этот метод, подумайте о добавлении нового запроса и ответа, он будет немного беспокойным, также ожидаем, что этот метод будет замедляться ... – Ragav

+1

FYI Название этого вопроса совершенно не имеет отношения к тому, что вы действительно спрашиваете. – dkamins

ответ

2

Один из вариантов: для использования словаря:

tx_rx = {TX1: RX1, TX2: RX2} 
for tx in tx_rx: 
    if tx in a: 
     send.ser(tx_rx[tx]) 
     read_buf() 
Смежные вопросы