Non ci capisco più niente... se MSComm ti fornisce una stringa (in cui i byte provenienti dalla seriale sono già stati interpretati come caratteri ASCII), dove sta il problema? Cosa contiene buffer$ alla fine del loop?