void CMainFrame::OnSendData() 
{
// TODO: Add your command handler code here
for (int k=0;k<4096;k++)
{
    m_temp=pDoc->m_ReadData[k];
    m_strEditSendMsg.Empty();
    itoa(m_temp,m_strTemp,10);
    m_strEditSendMsg=m_strTemp;
    m_strEditSendMsg.Insert(0,"$");
    m_strEditSendMsg=m_strEditSendMsg+"*";
    m_SerialPort.WriteToPort((LPCTSTR)m_strEditSendMsg); //发送数据
}
        AfxMessageBox("数据已经传输完毕");

}我用的是串口类,上面是个菜单响应的函数,是发送端的代码。我用串口调试助手接受数据,并不能接受到4096个数据,
每次只能接收到10个左右的数据。是不是菜单按钮按下一瞬间,串口发送端是不是来不及响应4096次的发送操作???还是串口接受端来不及响应4096次的接受操作?还是其他的什么原因??

解决方案 »

  1.   

    那么你使用的同步还是异步呢?另外还需要检测其返回值。
    http://www.vckbase.com/document/viewdoc/?id=1734。
    详细的情况可参考这个了,我当时参考其来完成的。
      

  2.   

    vc有个控件MSComm还比较好用,上Google上搜好了,以前我用过,可以发送接收,但是就是有个问题,就是设置的波特率如果是52000就有问题,以下的没问题。可能和我硬件有关系吧,具体也不是很清楚。不过一般设置都是9600.
      

  3.   

    lz,你在每次循环中加个sleep(5);试试看,网上有现成的代码,不用一个字节一个字节的发