菜鸟使用mscomm控件做的程序马上要给别人装了,但是听有经验的人说还要判断一下串口传来的数据是字符还是ascii码,怎样判断串口传来的数据是什么类型的呢?有没

  • 主题发起人 主题发起人 苦命的人
  • 开始时间 开始时间

苦命的人

Unregistered / Unconfirmed
GUEST, unregistred user!
菜鸟使用mscomm控件做的程序马上要给别人装了,但是听有经验的人说还要判断一下串口传来的数据是字符还是ascii码,怎样判断串口传来的数据是什么类型的呢?有没有一个小程序能判断呢?给我发一个吧!!(50分)<br />pjwanglong2000@sohu.com
 
什么意思?
串口传来的不都是字符吗?只不是VARIANT形式的
我用过MSCOMM控件的,下面我的一段代码(C++语言描述)

//这是MS Comm控件的接收数据的处理函数
void CDDECOMMDlg::OnComm()
{
//从串口中读出数据并放在全局数组szReceiveData中
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
{
variant_inp=m_ctrlComm.GetInput(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;k<len;k++)
safearray_inp.GetElement(&amp;k,szReceiveData+k);//转换为BYTE型数组
}

//开始分析读出的放在szReceiveData中的数据
// 分析根据双方协议进行
// 此处略去500字
}
 
你自己发送的同时再接收一下不就行了。
 
有的说还有ascii形式的,还有十六进制的!!
 
计算机中的数据都是以二进制的形式进行处理的,所谓的进制只是看你在程序中如何体现
 
我给你发一个,看看怎么样!
 
多人接受答案了。
 
后退
顶部