RS232串口发送数据问题
本人对VC很初级的认识,而且对多线程多串口通信也很盲目,如果大家有知道这方面好的资料适合初学者,推荐下最好!呵呵。。本人非常感谢!!
下面说现在遇到的问题:
目前的项目中需要两个串口,接两台智能仪器,希望能够实时的发送和接收。但是现在我对一个串口进行发送命令,却不能实时响应,下面是我写的循环。
for(SWave=380;SWave<=Wave;SWave=SWave+5)
{
T=2304000;
z=789586;
c=1639.687;
temp=SWave/(sqrt(c*c-SWave*SWave));
ang=atan(temp);
if(ang<0)
p=T+(0.5*T*ang)/3.14+z;
else
p=(0.5*T*ang)/3.14+z;
step=(int)(p);//以上都是些参数计算
dlg.yiwei(step);//调用发送给仪器命令的函数
Sleep(1000);
}
下面就是那个函数
int CYiWei::yiwei(int step)
{
int len;
CString strSend;
strSend.Format("B%d\r", step);//转换格式
len=strSend.GetLength();//测试长度
char *m_strSendString = new char[len+1];//定义了一个字符型的指针
memset(m_strSendString ,0,sizeof(m_strSendString ));
for(int k=0;k<len;k++)
m_strSendString[k]=strSend.GetAt(k);
m_ComPort3.WriteToPort(m_strSendString);
Sleep(1000);
return(0);
}
循环和函数不在同一个类中。这是我后来改的,如果直接把函数写到调用的地方,还是会出现下面我说的情况。
这样写的目的是想让SWave每加一次5就去调用那个函数,让仪器有响应。单步运行函数到 m_ComPort3.WriteToPort(m_strSendString);仪器是没响应的,可是现在全速运行的时候(SWave初始值)仪器反映一下,后来就要等个不到一分钟的样子才有反应,而且好像是连续变化,不是按照循环加5的方式。这是怎么回事呢?怎么让才能达到我想要的目标呢?大侠们帮忙分析下!
最后还有个问题,每次响应结束会跳出一个要么调试要么关闭的东西,点调试会出现某内存不能“written”也弄不清楚是怎么回事
总共这三个问题,嘿嘿,有点多!还请耐心的高手能够一一指教!本人拜谢了!!!!!