Fixed CRC calculation
This commit is contained in:
		
							parent
							
								
									6dec45ae2c
								
							
						
					
					
						commit
						e512456cc2
					
				| @ -61,22 +61,19 @@ class TelegramParserV4(TelegramParser): | |||||||
|         :raises InvalidChecksumError: |         :raises InvalidChecksumError: | ||||||
|         """ |         """ | ||||||
| 
 | 
 | ||||||
|         full_telegram = ''.join(line_values) |         full_telegram = '\r\n'.join(line_values) | ||||||
| 
 | 
 | ||||||
|         # Extract the bytes that count towards the checksum. |         # Extract the bytes that count towards the checksum. | ||||||
|         checksum_contents = re.search(r'\/.+\!', full_telegram, re.DOTALL) |         contents = re.search(r'(\/.+\!)([0-9A-Z]{4})', full_telegram, re.DOTALL) | ||||||
| 
 | 
 | ||||||
|         # Extract the hexadecimal checksum value itself. |         if not contents: | ||||||
|         checksum_hex = re.search(r'((?<=\!)[0-9A-Z]{4}(?=\r\n))+', full_telegram) |  | ||||||
| 
 |  | ||||||
|         if not checksum_contents or not checksum_hex: |  | ||||||
|             raise ParseError( |             raise ParseError( | ||||||
|                 'Failed to perform CRC validation because the telegram is ' |                 'Failed to perform CRC validation because the telegram is ' | ||||||
|                 'incomplete. The checksum and/or content values are missing.' |                 'incomplete. The checksum and/or content values are missing.' | ||||||
|             ) |             ) | ||||||
| 
 | 
 | ||||||
|         calculated_crc = CRC16().calculate(checksum_contents.group(0)) |         calculated_crc = CRC16().calculate(contents.group(1)) | ||||||
|         expected_crc = checksum_hex.group(0) |         expected_crc = contents.group(2) | ||||||
|         expected_crc = int(expected_crc, base=16) |         expected_crc = int(expected_crc, base=16) | ||||||
| 
 | 
 | ||||||
|         if calculated_crc != expected_crc: |         if calculated_crc != expected_crc: | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user