MSComm问题(100分),马上给分.在线等待

yanyuehui 2003-08-21 10:18:17
--------我用MSComm通过串口发送AT命令控制Modem进行运程数据传送!--------

问题:(在本机同一端口自发自收正常,通过Modem就不能接收了)
我怀疑是在接收时,数据类型转换上出了错。我自己写的那段(通过本机端口自发自收没问题,就是通过交换机时不能接收到数据;还有段,我抄了别人的,但一接收到数据程序就出错;)
麻烦各位高手帮忙看看好吗?如有人有兴趣能帮着分析一下我的原程序(yanyuehui@21cn.com),真不胜感激,一定给分,一定给分!


//----------------------------接收程序-------------------------------

VARIANT vResponse;
char *str;
char *str1;
int k, nEvent;
nEvent = m_Com.GetCommEvent();
CString str2;
switch(nEvent)
{
case 2:
//--------------------------------我自己写的------------------------------
// --------自发自收正常,但通过交换机时就接收不到了-----------
Sleep(30);
k = m_Com.GetInBufferCount();
if(k > 0)
{
vResponse=m_Com.GetInput();
m_receive=(BSTR)vResponse.pbstrVal;
}

//-----------------------我从别人的一个例子中抄的一段代码------------------
// ---------------------(一收到数据,程序就出错)----------------
/* k = m_Com.GetInBufferCount(); //接收到的字符数目

if(k > 0)
{
vResponse=m_Com.GetInput(); //read
//对数据进行其他处理
str = (char*)(unsigned char*) vResponse.parray->pvData;
}
// 接收到字符,MSComm控件发送事件
i = 0;
str1 = str;
while (i < k)
{
i++;
str1++;
}
*str1 = '\0';
m_receive += (const char *)str;
//清除字符串中的不必要字符
*/ break;
case 3: //CTS线状态发生了变化
break;
case 4: //DSR线状态发生了变化
break;
case 5: //CD线状态发生了变化
break;
case 6: //Ring Indicator发生变化
break;
}

UpdateData(FALSE);


}
...全文
332 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanyuehui 2003-08-21
  • 打赏
  • 举报
回复
to:xiaohedou
是啊就是通过交换机时接收不正确;然后我又用别人的串口调试程序试了,证明交换机等线路多工作正常!
麻烦您能留下email吗,我把程序发给你,请你帮我看看好吗?不胜感激!!!
我的邮址是:yanyuehui@21cn.com
谢谢!谢谢!!
xiaohedou 2003-08-21
  • 打赏
  • 举报
回复
请讲清楚,是不是你的程序在通过交换机发后接收不正确?

unsigned char str[1024];//我加的大概是这样吧,我一直这样用而不用BSTR

str = (char*)(unsigned char*) vResponse.parray->pvData;

"了别人的,但一接收到数据程序就出错":是什么错?

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧