VC++中串口收发数据的问题

在自己建立的串口类SerialPoint中,定义了一串口发送函数:boolSerialPort::send(constchar*sendBuf,constintbytes... 在自己建立的串口类SerialPoint中,定义了一串口发送函数:
bool SerialPort::send(const char * sendBuf,const int bytesToSend,unsigned long &bytesSend)

//功能:发送数据函数
//参数:sendBuf:发送缓冲区; bytesToSend:要发送字节数; bytesSend: 实际发送字节数

在另外一个类中,用到该函数
char cmdBuf[6];

ret = sPort->send(cmdBuf,6,byteSend); //ret为bool型变量

if( (byteSend != 6) || (ret == false) )
{
TRACE("EDA9017::cmdGetConf,串口发送失败\n");
return false;
}

我想问的是,cmdBuf数组中,一共有6个字符(即,发送缓冲区最大有6个字节,或,要发送的字节数为6。为什么调用send函数时,要求实际发送字节数byteSend也必须为6?缓冲区最大字节数为6,但是我可以只保存了5个字节数据呀,为什么要求发送的一定是6个字节呢?
byteSend != 6会导致发送失败,这点我不明白~~

求高手指教,分数不够,希望不要介意
展开
 我来答
bhtzu
2013-03-25 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4251万
展开全部
char cmdBuf[116];
ret = sPort->send(cmdBuf,6,byteSend); //ret为bool型变量
if( (byteSend != 6) || (ret == false) )
假设一下,你实际有115个字节需要发送,那么这里你调用后也是只发送6个,这是send的第二个参数决定的,byteSend只是根据你的要求,报告了实际是否全部发送了而已,如果你send要求发送5个,那么byteSend也应该是5
匿名用户
2013-03-25
展开全部
推荐看书
Visual C++_Turbo C串口通信编程实践
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式