| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -181,15 +181,14 @@ void BinaryViewModel::updateState() { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  auto prev_items = items; | 
					 | 
					 | 
					 | 
					  auto prev_items = items; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  const auto &binary = can->lastMessage(msg_id).dat; | 
					 | 
					 | 
					 | 
					  const auto &binary = can->lastMessage(msg_id).dat; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  // data size may changed.
 | 
					 | 
					 | 
					 | 
					  // data size may changed.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  if (!dbc_msg && binary.size() != row_count) { | 
					 | 
					 | 
					 | 
					  if (binary.size() > row_count) { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    beginResetModel(); | 
					 | 
					 | 
					 | 
					    beginInsertRows({}, row_count, binary.size() - 1); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    row_count = binary.size(); | 
					 | 
					 | 
					 | 
					    row_count = binary.size(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    items.clear(); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    items.resize(row_count * column_count); | 
					 | 
					 | 
					 | 
					    items.resize(row_count * column_count); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    endResetModel(); | 
					 | 
					 | 
					 | 
					    endInsertRows(); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  } | 
					 | 
					 | 
					 | 
					  } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  char hex[3] = {'\0'}; | 
					 | 
					 | 
					 | 
					  char hex[3] = {'\0'}; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  for (int i = 0; i < std::min(binary.size(), row_count); ++i) { | 
					 | 
					 | 
					 | 
					  for (int i = 0; i < binary.size(); ++i) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    for (int j = 0; j < column_count - 1; ++j) { | 
					 | 
					 | 
					 | 
					    for (int j = 0; j < column_count - 1; ++j) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      items[i * column_count + j].val = ((binary[i] >> (7 - j)) & 1) != 0 ? '1' : '0'; | 
					 | 
					 | 
					 | 
					      items[i * column_count + j].val = ((binary[i] >> (7 - j)) & 1) != 0 ? '1' : '0'; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -197,8 +196,13 @@ void BinaryViewModel::updateState() { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    hex[1] = toHex(binary[i] & 0xf); | 
					 | 
					 | 
					 | 
					    hex[1] = toHex(binary[i] & 0xf); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    items[i * column_count + 8].val = hex; | 
					 | 
					 | 
					 | 
					    items[i * column_count + 8].val = hex; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  } | 
					 | 
					 | 
					 | 
					  } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  for (int i = binary.size(); i < row_count; ++i) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    for (int j = 0; j < column_count; ++j) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      items[i * column_count + j].val = "-"; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  for (int i = 0; i < items.size(); ++i) { | 
					 | 
					 | 
					 | 
					  for (int i = 0; i < row_count; ++i) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (i >= prev_items.size() || prev_items[i].val != items[i].val) { | 
					 | 
					 | 
					 | 
					    if (i >= prev_items.size() || prev_items[i].val != items[i].val) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      auto idx = index(i / column_count, i % column_count); | 
					 | 
					 | 
					 | 
					      auto idx = index(i / column_count, i % column_count); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      emit dataChanged(idx, idx); | 
					 | 
					 | 
					 | 
					      emit dataChanged(idx, idx); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |