向串口发送一个字符串a,
  Rd_232是串口句柄
  nNumberOfBytesToWrite=a.Length();
  程序执行WriteFile(Rd_232,&a,nNumberOfBytesToWrite,&lpNumberOfBytesWrite,NULL);
  结果:lpNumberOfBytesWrite 和 nNumberOfBytesToWrite 不一致,
  比方说:向串口发送了100个字符,可函数WriteFile实际发送了99个
 
  我试过清空串口输入、输出缓冲区,可没用。各位大虾,怎么解决?

查你的SetCommState参数,可能是参数设置的问题

怎么知道是哪些字符没有发送?

应该是: nNumberOfBytesToWrite=a.Length()+1; 因为对于字符串来说实际长度是和字符数组长度不一样的,串比数组长度多一个字符长度,即'\0',实际串口发送是一个一个字符发送,它会认为最后一个字符是'\0',而不发送最后一个字符。

nNumberOfBytesToWrite=a.c_str();//这是发送字符串,a.Length()发的是a字符串的字节数,结果肯定不一样了。