CH372每次只能傳64Byte,那么請問:如果要上傳10KB的數(shù)據(jù),在VB中用WriteData的命令該怎么實現(xiàn)呢? 如何把這些數(shù)據(jù)存成一個txt文件呢? 謝謝?。?!
上位機讀上傳的數(shù)據(jù)用ch375readdata()函數(shù),ch372writedata是上傳機下傳數(shù)據(jù)的函數(shù)。 你可以分幾個步驟: 1。你在上位機創(chuàng)建一個.txt文件 2。下位機向上傳端點寫數(shù)據(jù), 3。應(yīng)用層調(diào)用ch375readdata()函數(shù)將CH372上傳端點的數(shù)據(jù)取上來 4。將ch372readdata()讀出來的數(shù)據(jù)寫到你創(chuàng)建的txt文件里。 5。因為你的數(shù)據(jù)大于64,那要重復(fù)2,3,4的步驟,進行多次上傳操作,只到數(shù)據(jù)傳輸完成。 6。傳輸完成的標志,你可以以最一個數(shù)據(jù)是否為64為準或者你以其他方式約定通知應(yīng)用層傳輸已經(jīng)完成。 7。關(guān)閉你所創(chuàng)建的文件。至此你上傳一個文件的操作就結(jié)束了。 另ch372readdata函數(shù)一次可以讀取4096字節(jié)。
多謝! 為什么重復(fù)執(zhí)行下列代碼,程序就會死掉呢?
If (CH375ReadData(0, mReadBuf, mLength)) Then ' 接收成功 List1.AddItem ("CH375ReadData return correct, length=" & mLength) '顯示接收的數(shù)據(jù)長度 For j = 0 To mLength - 1 Temp = mReadBuf.mBuff(j) List1.AddItem ("DATA" & j & "are" & Hex(Temp)) '以16進制顯示出數(shù)據(jù) Next j Else ' 讀操作失敗 List1.AddItem ("CH375ReadData return error!") End If
另外,我們做的系統(tǒng)要求一次上傳幾萬字節(jié),用writedata可以實現(xiàn)嗎?
程序會死,你跟蹤一下在哪個函數(shù)上死掉的. 如果下位機沒有上傳完你CH375ReadData所要讀取指定長度的數(shù)據(jù),而且你沒用ch375settimeout()設(shè)置讀寫超時的話也會死. 另,對于PC機而言,CH375WriteData()是PC機寫數(shù)據(jù)函數(shù)(下傳).CH375ReadData()是PC機讀數(shù)據(jù)函數(shù)(上傳)
在這條語句死掉的: If (CH375ReadData(0, mReadBuf, mLength)) Then ' 接收成功
另外,CH375settimeout()應(yīng)如何引用? 每次上傳的64Byte是不是都應(yīng)立即從緩存中取走,放到txt文件里,然后下一批64Byte又放入緩存?
如果是在CH375ReadData()函數(shù)上死掉了,那就是你單片機沒有上傳數(shù)據(jù)或者你沒有上傳足夠的數(shù)據(jù).建議您從網(wǎng)上提供的工具CH372dbg.zip\debugch372先來調(diào)你的下位機程序,然后再與你自己的程序通訊. CH375settimeout()設(shè)置讀寫超時,在你打開設(shè)備后設(shè)置.設(shè)置完后,這樣你就不會因為讀不到數(shù)據(jù)而死機. 每次上傳的64Byte取上來后什么時候?qū)懭氲侥愕奈募?應(yīng)該是你程序自已定吧.這個流程在1樓已經(jīng)寫出來.