关于串口通信接收数据问题
水瓶06 2009-10-10 07:24:18 void CSCommtestDlg::OnComm()
{
// TODO: Add your control notification handler code here
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integer that is not signed.
CString strtemp;
if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
{
static int count=0;
count++;
variant_inp=m_ctrlComm.GetInput(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
for(k=0;k<len;k++) //将数组转换为Cstring型变量
{
BYTE bt=*(char*)(rxdata+k); //字符型
strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放
m_strRXData+=strtemp; //加入接收编辑框对应字符串
}
}
UpdateData(FALSE); //更新编辑框内容
}
这是网上的一个串口接收数据OnComm()函数;
为什么在接收时要做那么多次数据的转换呢,并且,if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符,这时接收缓冲区内的字符会是一个还是很多个呢?MSComm控件在接收数据时具体的过程是怎样的呢?我在通信系统中传的是字符,那么接收的时候是接收到一个字符就引发一个事件吗?
我是要把收到的一些东西提取出来显示成波形,可是总也提取不对,不知道是哪里的问题。。。。
急!!!。。。。请求大家帮忙啊