線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2115
推到 Plurk!
推到 Facebook!

TComm問題

尚未結案
johnwo
一般會員


發表:6
回覆:8
積分:2
註冊:2003-10-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-12 11:24:15 IP:61.30.xxx.xxx 未訂閱
我參考了討論區裡的一篇文章."有關TComm的問題" 其中裡面有一段關於接收資料的 程式如下: for (i=0;i //結果顯示在Memo元件中(Append方式) mReceive->Text=mReceive->Text IntToStr(ByteReceive[i] '\x0d' '\x0a'; 我想問的是..for()的範圍是從那裡到那裡??
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-12 13:22:56 IP:140.135.xxx.xxx 未訂閱
您好: 書上範例有寫吧 上限到< class="code">ByteReceive.Length 順心
johnwo
一般會員


發表:6
回覆:8
積分:2
註冊:2003-10-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-12 14:16:48 IP:61.30.xxx.xxx 未訂閱
我在書上其它的範例有看到了..謝謝 不好意思..我有幾個問題再請教一下.. 1. ByteReceive.Length 意即我總共收進來的資料筆數?? 2. ReadFile與TComm a. 使用ReadFile,像書上所寫的範例,我送一次資料,在我的Memo上也只 顯示一次 b. 使用TComm,我送一次資料,但Memo一直重複顯示資料 是我的接收Buffer沒有清除的關係嗎??.. 還是需要我另外再加以判斷資料是否顯示到最後一筆呢??
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-11-12 14:29:23 IP:140.135.xxx.xxx 未訂閱
johnwo您好:
引言: 1. ByteReceive.Length 意即我總共收進來的資料筆數?? 2. ReadFile與TComm a. 使用ReadFile,像書上所寫的範例,我送一次資料,在我的Memo上也只顯示一次 b. 使用TComm,我送一次資料,但Memo一直重複顯示資料 是我的接收Buffer沒有清除的關係嗎??.. 還是需要我另外再加以判斷資料是否顯示到最後一筆呢??
1.對壓,建議您1~5章的理論與範例可以仔細看一下,很有用喔< >
>    順心< >
        
johnwo
一般會員


發表:6
回覆:8
積分:2
註冊:2003-10-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-11-12 14:40:57 IP:61.30.xxx.xxx 未訂閱
你的意思是說要清除Memo上的資料??
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-11-12 14:44:43 IP:140.135.xxx.xxx 未訂閱
意即接收資料前
Memo1->Clear();
johnwo
一般會員


發表:6
回覆:8
積分:2
註冊:2003-10-23

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-11-12 15:10:45 IP:61.30.xxx.xxx 未訂閱
我的程式如下: Timer:    Memo4->Clear(); Delay(100); ByteReceive = Comm1->ReadInputByte(); for(int i=0;iText = Memo4->Text rdata[i]; } 問題: 1. 還未加上Memo4->Clear()前,一收到資料就一直重覆資料.. 2. 加上後,傳送資料時,看不到資料,直到Disconnect後,資料才會顯示 3. 在這兩個狀態下,只要我一按disconnect,便會出現一個對話窗 "COM Port is not opened yet!"
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-11-12 16:18:54 IP:140.135.xxx.xxx 未訂閱
johnwo您好: 因為您放在Timer裡當然會是這樣囉
johnwo
一般會員


發表:6
回覆:8
積分:2
註冊:2003-10-23

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-11-12 17:04:32 IP:61.30.xxx.xxx 未訂閱
用來Timer來輪詢是否有資料進來.. 如果不用Timer那如何得知何時有資料進來呢??
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-11-12 17:37:21 IP:140.135.xxx.xxx 未訂閱
johnwo您好: 我想您要的功能在書上的4-60頁 4-3-4元件事件測試-自動讀取資料 裡面有你要的功能    順心
johnwo
一般會員


發表:6
回覆:8
積分:2
註冊:2003-10-23

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-11-12 23:57:25 IP:61.30.xxx.xxx 未訂閱
^^  版主再度感謝..謝謝啦.. 有個問題再問一下后.. 我參考第五章的一個例子..在memo中輸入值,然後將文字轉整數送出..    問題: 1. 只送一個值沒有問題,但只要送二個值以上就會發生錯誤       2. 那我想以16進制方式將值送出,我是不是先將文字轉整數,然後          再將整數轉hex格式..可是好像不行    程式如下:       DynamicArray ByteSend,ByteReceive; long i,Count; if((Comm1->PortOpen) && (Memo1->Text != "")) { ByteSend.Length = Memo1->Lines->Count; for(i=0;iLines->Strings[i]); } Comm1->OutPutByte(ByteSend); }
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-11-13 00:06:25 IP:140.135.xxx.xxx 未訂閱
johnwo您好:
引言: 1.只送一個值沒有問題,但只要送二個值以上就會發生錯誤 2.那我想以16進制方式將值送出,我是不是先將文字轉整數,然後再將整數轉hex格式..可是好像不行
1.書本上一堆範例都是傳送兩個值以上,您用書上的範例會出現錯誤嗎 > < class="code">請改成下面這樣 ByteSend[i]=StrToInt("0x" Memo1->Lines->Strings[i]); 順心 發表人 -
系統時間:2024-04-25 17:58:37
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!