File tree Expand file tree Collapse file tree 2 files changed +16
-8
lines changed
Expand file tree Collapse file tree 2 files changed +16
-8
lines changed Original file line number Diff line number Diff line change @@ -170,7 +170,7 @@ def encode(self):
170170 total = sum (record .response_length + 1 for record in self .records )
171171 packet = struct .pack ("B" , total )
172172 for record in self .records :
173- packet += struct .pack (">BB" , record .record_length , 0x06 )
173+ packet += struct .pack (">BB" , record .response_length , 0x06 )
174174 packet += record .record_data
175175 return packet
176176
@@ -185,11 +185,14 @@ def decode(self, data):
185185 response_length , reference_type = struct .unpack (
186186 ">BB" , data [count : count + 2 ]
187187 )
188- count += response_length + 1 # the count is not included
188+ count += 2
189+
190+ record_length = response_length - 1 # response length includes the type byte
189191 record = FileRecord (
190192 response_length = response_length ,
191- record_data = data [count - response_length + 1 : count ],
193+ record_data = data [count : count + record_length ],
192194 )
195+ count += record_length
193196 if reference_type == 0x06 :
194197 self .records .append (record )
195198
Original file line number Diff line number Diff line change @@ -163,17 +163,22 @@ def test_read_file_record_response_encode(self):
163163 records = [FileRecord (record_data = b"\x00 \x01 \x02 \x03 \x04 \x05 " )]
164164 handle = ReadFileRecordResponse (records )
165165 result = handle .encode ()
166- assert result == b"\x08 \x03 \x06 \x00 \x01 \x02 \x03 \x04 \x05 "
166+ assert result == b"\x08 \x07 \x06 \x00 \x01 \x02 \x03 \x04 \x05 "
167167
168168 def test_read_file_record_response_decode (self ):
169169 """Test basic bit message encoding/decoding."""
170- record = FileRecord (
170+ record1 = FileRecord (
171171 file_number = 0x00 , record_number = 0x00 , record_data = b"\x0d \xfe \x00 \x20 "
172172 )
173- request = b"\x0c \x05 \x06 \x0d \xfe \x00 \x20 \x05 \x05 \x06 \x33 \xcd \x00 \x40 "
173+ record2 = FileRecord (
174+ file_number = 0x00 , record_number = 0x00 , record_data = b"\x33 \xcd \x00 \x40 "
175+ )
176+ response = b"\x0c \x05 \x06 \x0d \xfe \x00 \x20 \x05 \x06 \x33 \xcd \x00 \x40 "
174177 handle = ReadFileRecordResponse ()
175- handle .decode (request )
176- assert handle .records [0 ] == record
178+ handle .decode (response )
179+
180+ assert handle .records [0 ] == record1
181+ assert handle .records [1 ] == record2
177182
178183 def test_read_file_record_response_rtu_frame_size (self ):
179184 """Test basic bit message encoding/decoding."""
You can’t perform that action at this time.
0 commit comments