la comunicazione via seriale è lenta, la gestione dei protocolli lato PC potrebbe non essere possibile proprio per la presenza di questi ritardi.
O modifichi firmdata per aggiungere un apposito comando da seriale (quindi da VB) che esegue tutta la gestione del sensore nei tempi richiesti e fornisce solo la risposta, oppure non usi firmdata e ti fai uno skecth apposito.
Consiglio: per faremeno confusione potresti passare al C# .net, cheè molto simile al C++ che può usare arduino.