Comunicazione seriale Pic-arduino

Buongiorno a tutti,
eccomi qui con un altro dei miei quesiti.
Ho la necessità di collegare un dispositivo con un microprocessore dotato di una porta Uart, che vorrei collegare ad arduino.
Allego il codice per leggere i dati dal micro, fornito dal progettista del dispositivo:

#include <SoftwareSerial.h>

#define rxPin 3
#define txPin 4

SoftwareSerial softSerial =  SoftwareSerial(rxPin, txPin);
//
void setup()  {
 
 pinMode(rxPin, INPUT);
 pinMode(txPin, OUTPUT);
 softSerial.begin(9600);
  
 Serial.begin(19200);
   while (!softSerial) {
    ; // wait for serial port to connect. Needed for native USB
    }
}
//--------------------------------
int CalcChannel(unsigned char ui8type, unsigned char ui8Msb, unsigned char ui8Lsb)  {
int ui8Temp;
if (ui8type==0){
ui8Temp=ui8Msb*256+ui8Lsb;
}
if (ui8type==1) {
ui8Temp=ui8Msb*256+ui8Lsb;
ui8Temp=ui8Temp-2048;
}
return (ui8Temp);
}
//--------------------------------







int ui8Buffer[8][2];
int ui16Idx=0;

int ui8CheckSum=0;


//--------------------------------
void loop() {


          // send data only when you receive data:
          if (softSerial.available() > 0) {


            if (softSerial.read()==0x55) {
                  ui8Buffer[0][0]=0x55;
                  ui8Buffer[0][1]=0;
                        do {
                          if (softSerial.available() > 0) { 
                            ui16Idx++;
                            ui8Buffer[ui16Idx][0] = softSerial.read();
                            ui8Buffer[ui16Idx][1] = ui16Idx;
                           }
                       }while (ui16Idx<=8);
                      ui16Idx=0;
ui8CheckSum=0;
//Calcolo del check sum per vedere 
        for (ui16Idx=0;ui16Idx<7;ui16Idx++){
        
        ui8CheckSum = ui8CheckSum + ui8Buffer[ui16Idx][0];
        }


      ui16Idx=0;

        if (((unsigned char)ui8CheckSum)==ui8Buffer[7][0]){
          
//          Serial.println("checksum calcolato:");
//          Serial.println((unsigned char)ui8CheckSum);
//          Serial.println("Pacchetto ricevuto:");
//          
//             for (ui16Idx=0;ui16Idx<8;ui16Idx++){         //stampa il pacchetto ricevuto in maniera ricorsiva
//                  Serial.println(ui8Buffer[ui16Idx][0]);
//                  }


          Serial.println("Lettura del primo canale:");
          if (ui8Buffer[1][0]==0) Serial.println("ph:");
          if (ui8Buffer[1][0]==1) Serial.println("rx:");
          Serial.println(CalcChannel((unsigned char) ui8Buffer[1][0], (unsigned char) ui8Buffer[2][0], (unsigned char) ui8Buffer[3][0])); //calcola il valore
          // 
          Serial.println("Lettura del secondo canale:");
          if (ui8Buffer[4][0]==0) Serial.println("ph:");
          if (ui8Buffer[4][0]==1)Serial.println("rx:");
          Serial.println(CalcChannel((unsigned char) ui8Buffer[4][0], (unsigned char) ui8Buffer[5][0], (unsigned char) ui8Buffer[6][0])); //calcola il valore  
          //
                  
         }
         else {
          Serial.println("checksum error:");
         }
         ui16Idx=0;
}
}


//delay(1000);


}

Vorrei che arduino leggesse i dati allo stesso modo di un valore analogico. Mi spiego meglio.
Nel codice per il mio progetto attualmente vengono utilizzati due analog.read per leggere i valori analogici su due pin.
Ora vorrei che, invece della lettura analogica, venga utilizzata la porta seriale.
In che modo posso “dire” ad arduino di utilizzare i dati seriali invece dei pin analogici?
Posso avere un esempio di come manipolare questo tipo di dati?
Se dovesse esserci necessità posso anche far cambiare il codice del Pic.
Spero in un vostro aiuto.
Grazie Fabio

Nell’esempio che hai postato, il tuo dispositivo dovrebbe trasmettere numeri inferiori a 255 che poi vengono sommati tra loro, quindi trasmette di volta in volta un solo byte.La trasmissione del tuo dispositivo attualmente è differente dai valori letti da un pin analogico di arduino. Per trasmettere valori superiori a 255, dovrà invece trasmettere più byte, o meglio una stringa di caratteri rappresentante un numero.
Restando solo in ambito arduino.
Su un pin analogico di arduino leggi un valore “un numero” che va da 0 a 1023, se questo dato lo vuoi acquisire da seriale, trasmetti una stringa che rappresenta il numero, e poi su arduino trasformi la stringa in un numero intero tramite la funzione atoi().

Il tuo dispositivo dovrà trasmettere correttamente la stringa, e in arduino la leggi e trasformi in un numero, che poi userai per le tue esigenze.
Puoi trovare esempi online con Google su “Leggere una stringa da seriale su arduino”, “funzione atoi() arduino”

Risolto!!!
Grazie torn24 della risposta, ma forse non ti sei accorto che la funzione CalcChannel restituisce un intero e la soluzione era a portata di mano.
Abbiamo diviso tutto in due funzioni(una per il redox e una per il ph), in modo da richiamarle nello sketch principale ogni volta che mi serve il dato, il tutto senza gestire le stringhe (non ha senso trasformare il dato in stringhe e poi riconvertirlo in intero).
Il tuo post ci ha aiutato a riflettere e a trovare la soluzione.
Grazie saluti Fabio