描述:
--------我用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)
{
vResp />
m_receive=(BSTR)vResponse.pbstrVal;
}
//-----------------------我从别人的一个例子中抄的一段代码------------------
// ---------------------(一收到数据,程序就出错)----------------
/* k = m_Com.GetInBufferCount(); //接收到的字符数目
if(k > 0)
{
vResp//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);
}
解决方案1:
请讲清楚,是不是你的程序在通过交换机发后接收不正确?
unsigned char str[1024];//我加的大概是这样吧,我一直这样用而不用BSTR
str = (char*)(unsigned char*) vResponse.parray->pvData;
"了别人的,但一接收到数据程序就出错":是什么错?