逐行发送已经实现,但间隔是固定,我想实现的功能就是第一行与第二行的发送间隔为1s,第二行与第三行的发送间隔3s,第三行与第四行的发送间隔为1s,等等总共100行而且之间的间隔是可调的。最关键的是还要所有设置的时间间隔都显示出来一边查找错误,这个功能的界面咋设置?求各位大神帮忙

解决方案 »

  1.   

    每条指令fpga处理的时间不一样,所以要自己设置
      

  2.   

    每条指令fpga处理的时间不一样,所以要自己设置如果事先就知道一条指令FPGA要处理多长时间(比如说长度越长处理时间越长),那就可以根据每条指令的长度来设定时间了。你的界面是MFC的界面吗?
      

  3.   

    推荐 MFCGridCtrl , 报表模式,方便编辑和读写
      

  4.   

    界面咋整,给个大概框架,我现在一点思路都没有界面可以用listctrl或者combobox
    内容就是比如
    1、2行间隔时间       1s
    2、3行间隔时间       3s
    这样排
      

  5.   


    void CNetworkSendDataDlg::OnBnClickedKetiaoCheck()
    {
    // TODO:  在此添加控件通知处理程序代码
    CFileDialog fileDlg(true, _T(".csv"), NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
    _T("Excel CSV File(*.csv)|*.csv|Text File(*.txt)|*.txt|Word File(*.doc)|*.doc|All File(*.*)|*.*||"), NULL);
    CStdioFile file;
    //获得要打开的文件 
    if (fileDlg.DoModal() != IDOK)
    {
    return;
    }
    CString   strTxt;
    CString strDefaultName[200], strDefineName[200], strStatus[200];
    CString strTemp;
    CFile file(fileDlg.GetPathName(), CFile::modeRead); // 定义文件对象
    for (int i = 0; file.ReadString(strTemp); i++)
    {
    strDefaultName[i] = strTemp.Left(strTemp.Find('\t'));
    strTemp = strTemp.Mid(strTemp.Find('\t') + 1);
    strDefineName[i] = strTemp.Left(strTemp.Find('\t'));
    strTemp = strTemp.Mid(strTemp.Find('\t') + 1);
    strStatus[i] = strTemp.Trim();//将txt中的数据存入strStatus中
    }
    file.Close();
    }
    UINT CNetworkSendDataDlg::ketiao(LPVOID pParam)
    {
    HWND hwnd = ((RECVPARAM *)pParam)->hwnd;
    CNetworkSendDataDlg *pDlg = (CNetworkSendDataDlg *)pParam;
    CString data, str;
    //char linestr[MAXSIZE] = { 0 };
    int linecount = pDlg->m_EditSend.GetLineCount();
    for (int i = 0; i < linecount; i++)
    {
    int len = pDlg->m_EditSend.LineLength(pDlg->m_EditSend.LineIndex(i));
    pDlg->m_EditSend.GetLine(i, data.GetBuffer(len), len);
    data.ReleaseBuffer(len);
    if (pDlg->m_16send.GetCheck() == 1)
    {
    u_char outData[MAXSIZE] = { 0 };
    int dataLength = pDlg->Str2Hex(data.GetBuffer(0), outData);
    if (send(pDlg->m_clientSocket, (char *)outData, dataLength, 0) != SOCKET_ERROR)
    pDlg->m_sendCounter += dataLength;
    }
    else
    {
    send(pDlg->m_clientSocket, data.GetBuffer(0), data.GetLength(), 0);
    pDlg->m_sendCounter += data.GetLength();
    Sleep(NstrStatus[i]);
    }
    }
    return 0;
    }
    怎么将第一个函数的数组NstrStatus[i]传递给第二个函数用在sleep中。
      

  6.   

    通过对象指针 
    pDlg->NstrStatus[i] 
      

  7.   

    1.发送指令和间隔时间都保存在文件中,直接对文件修改,比如xml文件。
    2.fpga处理时间很重要。。vc中这个定时器都不是很准,一般都采用发送串口指令,对方处理完毕之后给你一个回复,收到回复之后再发送下一条指令
      

  8.   

    把y要发送的一行一行的弄个CStringArray里面去。就循环方便多了 。每秒钟判断 。在弄个发送间隔的数组列表。。13579这样的间隔。把秒数加起来。到时间发送下一行 。这个不难做。。