I wrote a code for byte reciever program and asked for help at Python float and integer values to bytearray
and it worked.
My problem is, I can send data when I run program each time. But when I tried to automate this data transfer with a while loop I'm getting checksum error
my code:
import serial
import struct
import time
ser = serial.Serial('COM16', 19200, serial.EIGHTBITS, serial.PARITY_NONE, serial.STOPBITS_ONE)
size = 78
array1 = bytearray(size)
check_sum = 0
array1[0] = 0xFF
array1[1] = 0xFF
array1[2] = 0x54
array1[3] = 0x52
array1[5] = 0
array1[76] = 0x0D
array1[77] = 0x0A
counter = 0
altitude = input("altitude: ")
altitude_gps = input("gps altitude: ")
locationx = input("location x: ")
locationy = input("location y : ")
payload_altitude = input("payload altitude: ")
locationx_payload = input("location x payload: ")
locationy_paylaod = input("location y payload: ")
altitude_array = struct.pack('<f', float(altitude))
altitude_gps_array = struct.pack('<f', float(altitude_gps))
locationx_array = struct.pack('<f', float(locationx))
locationy_array = struct.pack('<f', float(locationy))
payload_altitude_array = struct.pack('<f', float(payload_altitude))
locationx_payload_array = struct.pack('<f', float(locationx_payload))
locationy_paylaod_array = struct.pack('<f', float(locationy_paylaod))
array1[6] = altitude_array[0]
array1[7] = altitude_array[1]
array1[8] = altitude_array[2]
array1[9] = altitude_array[3]
array1[10] = altitude_gps_array[0]
array1[11] = altitude_gps_array[1]
array1[12] = altitude_gps_array[2]
array1[13] = altitude_gps_array[3]
array1[14] = locationx_array[0]
array1[15] = locationx_array[1]
array1[16] = locationx_array[2]
array1[17] = locationx_array[3]
array1[18] = locationy_array[0]
array1[19] = locationy_array[1]
array1[20] = locationy_array[2]
array1[21] = locationy_array[3]
array1[22] = payload_altitude_array[0]
array1[23] = payload_altitude_array[1]
array1[24] = payload_altitude_array[2]
array1[25] = payload_altitude_array[3]
array1[26] = locationx_payload_array[0]
array1[27] = locationx_payload_array[1]
array1[28] = locationx_payload_array[2]
array1[29] = locationx_payload_array[3]
array1[30] = locationy_paylaod_array[0]
array1[31] = locationy_paylaod_array[1]
array1[32] = locationy_paylaod_array[2]
array1[33] = locationy_paylaod_array[3]
for x in range(4, 75):
check_sum += array1[x]
check_sum = check_sum % 256
array1[75] = check_sum
ser.write(array1)
time.sleep(3)
while True:
counter = counter + 1
array1[5] = counter
for y in range(4, 75):
check_sum += array1[x]
check_sum = check_sum % 256
array1[75] = check_sum
ser.write(array1)
time.sleep(3)
How can I make this transfer procces to continuous. Or how can I fix this checksum error inside while loop. (Without while loop I have no problem with checksum, each time I run program I can send data)