Recibir serie de datos en arduino vía bluetooth

Tengo un ejercicio el cual es recibir una serie de numeraciones del bluetooth el cual manda este dato junto 3,40,19,30 deseo ocuparlos por separado.

#include <SoftwareSerial.h>
SoftwareSerial BT(4,2); // 
char datos; 

int dato1;
int dato2;
int dato3;
int dato4;

void setup() 
{
 // Pin 13 Digital de Arduino
 pinMode(13, OUTPUT);
 // Velocidad serial del Modulo BT
 BT.begin(9600);
 Serial.begin(9600);
}





void loop() 
{
 if (BT.available())
{
 datos=(BT.read());
 Serial.println(datos);
 

Serial.println("DATO 1");
Serial.println(dato1);
Serial.println("DATO 2");
Serial.println(dato2);
Serial.println("DATO 3");
Serial.println(dato3);
Serial.println("DATO 4");
Serial.println(dato4);








}

Lee las normas y edita tu post usando etiquetas de código </>

del ejemplo aun no logro separarlo, desfragmentar lo que se recibe 3,40,19,30 a
3
40
19
30

#include <String.h>

#include <SoftwareSerial.h>

SoftwareSerial BT(4,2); 
String voice;

void setup()
{
    BT.begin(9600); 
   Serial.begin(9600); 
}

void loop(){
    voice="";
    while (BT.available()){ 
        delay(10); 
        char c = BT.read(); 
       voice += c; 
}
if (voice.length() > 0) {
      Serial.println(voice);

char *pch;
int i=0;
pch = strtok (voice,";");
String buff[sizeof(voice)];
  while (pch != NULL)
  {
   buff[i]=(pch);
    pch = strtok (NULL, ";");i++;
  }
  
  
  for(int x=0;x<i;x++){
Serial.println( buff[x]);
  
  }
  i=0;






   }
}