Serial output to Radiocrafts IOT dev board

Hi
I am trying to get my Nano to output a text string over serial, to a Radiocrafts sigfox IOT development board, when I flick a switch.
I’m a complete beginner at this so have borrowed a lot of the code from various posts on here. Currently I can output a valid message to the RC dev board and it sends it but he format seems weird.
“ok computer” comes up as “7e9978” in the sigfox backend.

From the RC datasheet
“Send your data to the RXD pin on the module. Use the UART format with settings (19200, 8,
1, N, no flow control). Up to 12 bytes payload are buffered in the module. The first byte of the
message must contain the message length (excluding the length byte itself). The module will
transmit the data when the whole packet is received.”

For some random reason the RC board also only accepts my message when I set the serial speed to 9600 despite the board working at 19200

Is there a way i can get the serial.print/write to format with the message length in the first byte?

code is here, yes i know i’m using “delay” for debounce but it was easier for my simple brain to follow:

#include <SoftwareSerial.h>
SoftwareSerial mySerial(9,10); //RX,TX;

// constants won't change. They're used here to
// set pin numbers:
const int buttonPin = 2;     // the number of the pushbutton pin
const int ledPin = 13;      // the number of the LED pin


// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status
int buttonState1 = 0;
bool prev = true;

void setup() {
  //initialise serial port
  Serial.begin(9600);
  mySerial.begin(9600);
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);
}

void loop() {
  // read the state of the pushbutton value, wait, then read again:
  buttonState = digitalRead(buttonPin);
  delay(50);
  buttonState1 = digitalRead(buttonPin);

  //debounce part, check if two readings are the same before proceding.
  if (buttonState == buttonState1) {
    // check if the pushbutton is pressed.
    // if it is, the buttonState is HIGH:
    if (buttonState == HIGH) {
      // turn LED on:
      digitalWrite(ledPin, HIGH);
      if (prev == true) {
        //print serial string
        Serial.println("ok computer");
        mySerial.write("ok computer");
      }
      //set prev to false so it only prints once
      prev = false;
    }
  }
  else {
    //set prev back to true so it prints next time
    prev = true;
    // turn LED off:
    digitalWrite(ledPin, LOW);
  }
}

The Serial.print is a raw function. It’s purpose is not to implement communication protocolls.
Technically, yes, you could “get the serial.print/write to format with the message length in the first Byte”. You could, for example, build everything you Need to send in a Byte Array… But, is it worth it? Wouldn’t it just be easier to:

Serial.print(byte 11); // Send length of message in first Byte, IAW protocoll
Serial.print(“ok computer”); // Send message