Ho visto che puoi specificare il numero dei byte da leggere !!!
Codice:
Dim tmp As Byte(4)
MSComm1.InputLen = 4
MSComm.InputMode = comInputModeBinary
tmp = MSComm1.Input
'ora ti devi ricostruire l'intero che andrai a mettere in num (non lo scrivo)
MSComm1.InputLen = num
If MSComm1.InputCounter < num Then
'qui dovresti attendere che arrivino gli altri dati (basta mettere un'attesa ad esempio di 1 decimo di secondo)
'non conviene fare un ciclo perchè ti bloccherebbe facilmente il programma
'In VB non so come si fa al limite ti dico come si usa l'API Sleep...
If MSComm1.InputCounter < num Then 'ora ricontrolliamo di nuovo
'nel caso che ancora non siano sufficienti blocchi il programma e generi un errore
'quindi ora siamo sicuri che ci siano i byte da leggere
buf = MSComm1.Input 'ed hai letto il buffer
'Ora chiami Writefile e scrivi i dati letti nel file...