逐行發送已經實作,但間隔是固定,我想實作的功能就是第一行與第二行的發送間隔為1s,第二行與第三行的發送間隔3s,第三行與第四行的發送間隔為1s,等等總共100行而且之間的間隔是可調的。最關鍵的是還要所有設定的時間間隔都顯示出來一邊查找錯誤,這個功能的界面咋設定?求各位大神幫忙
uj5u.com熱心網友回復:
調整定時器時間uj5u.com熱心網友回復:
1.如果說100行的發送時間是任意自己設定的值,那就比較繁瑣了,要設定99個值,代碼就有點傻。2.如果說是1313這樣回圈的話,那就優雅多了。
uj5u.com熱心網友回復:
每條指令fpga處理的時間不一樣,所以要自己設定
uj5u.com熱心網友回復:
界面咋整,給個大概框架,我現在一點思路都沒有
uj5u.com熱心網友回復:
如果事先就知道一條指令FPGA要處理多長時間(比如說長度越長處理時間越長),那就可以根據每條指令的長度來設定時間了。你的界面是MFC的界面嗎?
uj5u.com熱心網友回復:
推薦 MFCGridCtrl , 報表模式,方便編輯和讀寫uj5u.com熱心網友回復:
調整定時器時間
界面咋整,給個大概框架,我現在一點思路都沒有
內容就是比如
1、2行間隔時間 1s
2、3行間隔時間 3s
這樣排
uj5u.com熱心網友回復:
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中。
uj5u.com熱心網友回復:
通過物件指標pDlg->NstrStatus[i]
uj5u.com熱心網友回復:
1.發送指令和間隔時間都保存在檔案中,直接對檔案修改,比如xml檔案。2.fpga處理時間很重要。。vc中這個定時器都不是很準,一般都采用發送串口指令,對方處理完畢之后給你一個回復,收到回復之后再發送下一條指令
uj5u.com熱心網友回復:
把y要發送的一行一行的弄個CStringArray里面去。就回圈方便多了 。每秒鐘判斷 。在弄個發送間隔的陣列串列。。13579這樣的間隔。把秒數加起來。到時間發送下一行 。這個不難做。。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/88187.html
標籤:界面
上一篇:求助連接服務端的問題
下一篇:QT實作滑鼠旋轉圖片關聯背景旋轉
