几个关于串口响应函数的问题
MSComm控件写的,功能是单片机向上位机传数,在上位机绘图。但收到的数据都不对,下面的函数有什么不对的地方吗?
char shiyu_data[1000]; //接收数据数组
void CShiyu::OnOnComm()
{
// TODO: Add your control notification handler code here
VARIANT variant; //定义VARIANT类型变量
COleSafeArray safearray; //定义COleSafeArray类对象
int len;
if(m_comm.GetCommEvent()==2) //若串口事件是读事件
{
variant=m_comm.GetInput(); //读取串口缓冲区
safearray=variant; //转换数据类型
len=safearray.GetOneDimSize(); //获取有效数据长度
for(i=0;i<len;i++)
safearray.GetElement(&i,&shiyu_data[i]); //将数据转换为char类型数组
recv_data.Format("%c",shiyu_data); //格式化输出字符串
}
MessageBox(recv_data);
}
1.应该是单片机发一个数则此函数响应一次吧,那variant=m_comm.GetInput()是读取串口缓冲区,此缓冲区是只包含了这次接收到的数据还是还包含了以前的数据?
2.len=safearray.GetOneDimSize()是获取有效数据长度,这里的数据长度指什么?
3. safearray.GetElement(&i,&shiyu_data[i])此函数怎么理解?转换成的char数据保存在哪?
4. recv_data.Format("%c",shiyu_data); 此函数有什么用?
多谢各位大神解答~