C++Builder 程序员博客
16 Jul
向串口发送一个字符串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字符串的字节数,结果肯定不一样了。