你的程序里,MSComm1.RThreshold = 1,就是说每收到一个字节都要产生一次事件,其实这样很简单,一开始将你的MSComm1.RThreshold设为5,判别收到的第一个字节是否正确,正确的话再提取4、5两个字节,得出你的数据长度,然后将MSComm1.RThreshold设为该数据长度+1,因为你说有一个校验的,这样你就能收完整个数据后再触发事件。收到数据后再将MSComm1.RThreshold设为5,收下一批数据。