请教VC串口通信问题--急!非常感谢
我的上位机用VC编程实现与485的串口通信,我遇到了两个奇怪的问题:
1)在接收数据的时候,接收到的第一个字节经常上3F,中间有时候也会出现;
2)接收数据的时候,必须动鼠标,否则数据不能接收,单片机看门狗复位。
我的程序使用mscomm控件实现,主要程序参考龚建伟的串口程序。接收部分如下:
void CAbcDlg::OnComm()
{
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.
CString strtemp;
int j=0;
if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
{
////////以下你可以根据自己的通信协议加入处理代码
flag=1;
variant_inp=m_ctrlComm.GetInput(); //读缓冲区
//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("%02X ",bt); //将字符送入临时变量strtemp存放
switch(m_tabctrl.GetCurSel())
{
case 0:
m_mm1.m_strRXData+=strtemp; //加入接收编辑框对应字符串
break;
case 1:
m_mm2.m_strRXData+=strtemp; //加入接收编辑框对应字符串
break;
}
}
}
m_mm1.UpdateData(FALSE);
m_mm2.UpdateData(FALSE);
}
非常谢谢!!!
问题点数:20、回复次数:2Top
1 楼fairytale123(中草药)回复于 2006-07-01 12:32:44 得分 0
这网站有这方面的说明www.webis.cnTop
2 楼ssswater(春水)回复于 2006-07-01 13:56:53 得分 0
fairytale123(中草药):
你好!
你给的网站上怎么找不到啊,这个网站是关于网络运营的,好像&我的不相关。是否可以指教,谢谢Top




