RFM69 capture second transmissions of characters

Thanks to this forum I was able to get a step closer to being able to send weather data using a pair of Feather 32u4 radios using the RFM69 library. I find that this library has a hard limit of 61 characters and my data is longer. The author of this library will not go beyond this limit for his reasons. My attempt to arbitrarily increase this limit failed.
So since I’ve got control of the python program on the Raspberry Pi I can alter the string being sent so that the Serial examples provided here can be handled on the transmitter Feather and appear to be successful.
The python program is below:

#!/usr/bin/env python

import time
import serial

ser = serial.Serial(
    port='/dev/ttyAMA0',
    baudrate = 74880,
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
    bytesize=serial.EIGHTBITS,
    timeout=1
)
counter=0
while 1:
  ser.write('<weather,0.000,0.000,0.066,24,99.000,168.110,99.310,>\0')
  ser.write('<24.400,44.700,0.000,3.204\0>')
  counter += 1

This is my transmitter code on the Feather:

#include <RFM69.h>    //get it here: https://www.github.com/lowpowerlab/rfm69
#include <SPI.h>

#define SERIAL_BAUD   74880
int16_t packetnum = 0;  // packet counter, we increment per xmission
const int numChars = 65;
char receivedChars[numChars];   // an array to store the received data
boolean newData = false;

#define DATA_LENGTH 75
#define CHUNK_LENGTH 50

void setup() {
  while (!Serial); // wait until serial console is open, remove if not tethered to computer. 
  Serial.begin(SERIAL_BAUD);
  Serial1.begin(SERIAL_BAUD);     // opens serial port on the TX/RX pins

 
  // Hard Reset the RFM module
  pinMode(RFM69_RST, OUTPUT);
  digitalWrite(RFM69_RST, HIGH);
  delay(100);
  digitalWrite(RFM69_RST, LOW);
  delay(100);

  // Initialize radio
  radio.initialize(FREQUENCY,NODEID,NETWORKID);

}

void loop() {
  
  recvWithStartEndMarkers();
  showNewData();
  radio.receiveDone(); //put radio in RX mode
}
    

void showNewData() {
    if (newData == true) {
        radio.sendWithRetry(RECEIVER, receivedChars, numChars);
        Serial.println(receivedChars);
        newData = false;
    }
}   
 
void recvWithStartEndMarkers() {
    static boolean recvInProgress = false;
    static int ndx = 0;
    char startMarker = '<';
    char endMarker = '>';
    char rc;
 
    while (Serial1.available() > 0 && newData == false) {
        rc = Serial1.read();

        if (recvInProgress == true) {
            if (rc != endMarker) {
               receivedChars[ndx] = rc;
                ndx++;
                if (ndx >= numChars) {
                    ndx = numChars - 1;
                }
            }
            else {
                receivedChars[ndx] = '\0'; // terminate the string
                recvInProgress = false;
                ndx = 0;
                newData = true;
            }
        }

        else if (rc == startMarker) {
            recvInProgress = true;
        }
    }
}

The above appears to be sending all the data because the Serial console reports this;

weather,0.000,0.000,0.066,24,99.000,168.110,99.310,
24.400,44.700,0.000,3.204

So far, appears to be good. The proof is in the receiver. Once I get both transmissions, I plan to extract the data to do something with it but my received output is typically one of these lines, rarely both consistently like the transmitter serial output. I’ve been trying lots of different ways of trying to see what goof I’ve introduced, including pauses on the python portion.
This is the receiver code:

#include <RFM69.h>    //get it here: https://www.github.com/lowpowerlab/rfm69
#include <SPI.h>
#define SERIAL_BAUD   74880 //115200

int16_t packetnum = 0;  // packet counter, we increment per xmission

RFM69 radio = RFM69(RFM69_CS, RFM69_IRQ, IS_RFM69HCW, RFM69_IRQN);
const int numChars = 60;
char receivedChars[numChars];   // an array to store the received data

boolean newData = false;

void setup() {
  while (!Serial); // wait until serial console is open, remove if not tethered to computer. 
  Serial.begin(SERIAL_BAUD);
 
  // Hard Reset the RFM module
  pinMode(RFM69_RST, OUTPUT);
  digitalWrite(RFM69_RST, HIGH);
  delay(100);
  digitalWrite(RFM69_RST, LOW);
  delay(100);
  
  // Initialize radio
  radio.initialize(FREQUENCY,NODEID,NETWORKID);
}

void loop() {
  //check if something was received (could be an interrupt from the radio)
  if (radio.receiveDone())
  {
    Serial.print((char*)radio.DATA);

    if ((char *)radio.DATA)
    {
      
      //check if sender wanted an ACK
      if (radio.ACKRequested())
      {
        radio.sendACK();
        Serial.println(" - ACK sent");
      }
 
  }
    }  
  }
  radio.receiveDone(); //put radio in RX mode
  Serial.flush(); //make sure all serial data is clocked out before sleeping the MCU


}

//void recvWithStartEndMarkers() {
//    static boolean recvInProgress = false;
//    static int ndx = 0;
//    char startMarker = '<';
//    char endMarker = '>';
//    char rc;
// 
//    while (newData == false) {
//        //rc = (char*)radio.DATA;
//
//        if (recvInProgress == true) {
//            if ((char*)radio.DATA != endMarker) {
//                receivedChars[ndx] = (char*)radio.DATA;
//                ndx++;
//                if (ndx >= numChars) {
//                    ndx = numChars - 1;
//                }
//            }
//            else {
//                receivedChars[ndx] = '\0'; // terminate the string
//                recvInProgress = false;
//                ndx = 0;
//                newData = true;
//            }
//        }
//
//        else if ((char*)radio.DATA == startMarker) {
//            recvInProgress = true;
//        }
//    }
//}

void showNewData() {
    if (newData == true) {
        //Serial.print("This just in ... ");
        Serial.println(receivedChars);
        newData = false;
    }
}

The output into Console from the receiver is:

24.4044.700,0.000,3.204 - ACK sent
weather,0.000,0.000,0.066,24,99.000,168.110,99.310, - ACK sent
weather,0.000,0.000,0.066,24,99.000,168.110,99.310, - ACK sent
weather,0.000,0.000,0.066,24,99.000,168.110,99.310, - ACK sent
weather,0.000,0.000,0.066,24,99.000,168.110,99.310, - ACK sent

So it could by my python, my transmitter, my receiver code that’s causing the inconsistency here in the receiver.

Perhaps someone with more experienced eyes can see what goof I’m not seeing?

You may note my commented out recvWithStartEndMarkers() function that is modified to read the char * of the radio.DATA instead of Serial data. It won’t surprise you to know that the IDE errors out because I’m trying to compare two different types “forbids comparison between pointer and integer”. From my reading char is a single character but the pointer is not what I’m understanding. In my Google search I’m not seeing how I could temporarily use the ‘char*’ to access the char within to compare it to my char so that I’m comparing the same types of data. I hope to learn more to get further in this project.