delphi 7 +spcomm ,spcomm .Readintervaltimeout = 10,可以接收到 發來的資料,但如果輸入資料間隔很大的話 就什么也收不到,而且輸入的資料 是多個位元組 , 個人感覺 就算接收丟資料 也不應該 什么也接收不到啊!
而下載的sscom32串口除錯為什么在什么情況下都能接收到資料,求高手幫幫忙 !
作業進度受阻 , 高手 幫忙!
uj5u.com熱心網友回復:
Readintervaltimeout這個引數(記得還有2個引數,是直接針對Window API設定的),一般運用中,如果不是直接用API進行通信,而是用這些封裝過的串口通信控制元件,可以不用理這些引數,用默認值就好了。你接收資料方式是用spcomm的事件吧,在事件的代碼里先加個延遲,sleep(100)到sleep(400),時間自己調整下,就能接收到完整資料了。
更好點方法是在判斷要接收的資料長度,類似這樣:
while WantNum < InputNum do
begin
if (超時)/(超次數)then
Exit;
Sleep(10);
end;
Read();
WantNum要接收的位元組數,InputNum是緩沖區中位元組數,這個引數是API函式Read()中的inBytes的引數。Spcomm的OnRecieveData()中應當有帶這個引數(CPort控制元件是有這個引數的)
uj5u.com熱心網友回復:
多謝高手幫忙,你說的 在接收事件里 調整 我可以理解,但現在是 明明串口總有資料傳入, 用sscom32工具都能接收到 ,而我程式的 spcomm的OnRecieveData(),卻 觸發不了,調Readintervaltimeout還有可能觸發,但還不是 每次startcom 后 都能觸發。希望再能指點一二 謝謝!
uj5u.com熱心網友回復:
2樓說的在發送的時候加上延時是可以的另外,查看下你的BufferLength,看看是不是適合你的資料
uj5u.com熱心網友回復:
可以嘗試一下轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/130921.html
標籤:網絡通信/分布式開發
上一篇:麻煩問一下, delphi.net現在是不是不存在了?
下一篇:請問有用過RXRichEdit的嗎??如何解決在加載圖片后RxRichEdit1.text只多出一個空格的問題??
