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

有關RS232接收問題!!

尚未結案
lvzhong1
一般會員


發表:29
回覆:18
積分:9
註冊:2007-01-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-03-26 20:58:12 IP:140.124.xxx.xxx 訂閱
請問有經驗的前輩:
晶片處理
將信號產生器三角波-->(AD取樣-->RS-232)-->BCB

數值就一直透過RS232送,然後有時會發生藍色圈圈這種情形,突然有一點會變的極小!!

我有將數值存起來看~發現原本的數值因該要100 110 120 130 140 150 160 170 ........

但會變成100 110 120 10 140 150 160 170........

想請問是RS-232漏傳嗎?還是我接收程式有誤呢?



以下是我接收程式碼:(我是使用Tcomm元件)
-----------------------------------------------------------------------
<textarea class="cpp" rows="10" cols="60" name="code"> void __fastcall TForm1::Comm1ReceiveData(TObject *Sender) { float resule; int p=1,j; DynamicArray DataByte,ReceiveByte; DataByte=Comm1->ReadInputByte(); for(int i=0;iText=""; index=0; fs=false; ct_str(); if(fd) { fd=false; resule=(2.5*value)/4095; show[umber]=value ;// 256*inbuff[k 2] ; umber=umber 1; Series1->AddY(resule,""); } } } } } } void __fastcall TForm1::ct_str() { for(int k=0;k
taishyang
站務副站長


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-03-27 14:22:41 IP:59.124.xxx.xxx 未訂閱
請參考版規PO程式碼,不然會有程式碼顯示不完全的現象
http://delphi.ktop.com.tw/board.php?cid=168&fid=912&tid=84836
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-03-27 20:19:16 IP:220.131.xxx.xxx 訂閱
我們先考慮用超級終端機,看看你接收的資料會不會這副德性。
我們再來找找問題在那邊。
lvzhong1
一般會員


發表:29
回覆:18
積分:9
註冊:2007-01-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-03-28 16:57:51 IP:140.124.xxx.xxx 訂閱
嗯~我是有試過 晶片自己先送sin波(table值)

會發現值都很能順利接的到~不會有上面那種情況~
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-03-28 18:16:36 IP:220.131.xxx.xxx 訂閱
那就可以考慮你的com port 接收的速度太慢了。
也就是說發生了你太久沒去讀它造成 lost 了。
一個加大接收的 buffer
一個是採用 thread 把接收的動作以 thread 去執行,收入 環狀 buffer,
而你的程式去讀那個環狀 buffer 來處理。
看用這種方式能不能解決。

而我的話,因為我用AsyncPro 也有遇過這類的情況。
所以我在用它時,我用個環狀 buffer 就解決掉了。

===================引 用 文 章===================
嗯~我是有試過 晶片自己先送sin波(table值)

會發現值都很能順利接的到~不會有上面那種情況~
harpist
資深會員


發表:3
回覆:251
積分:430
註冊:2002-10-03

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-03-28 18:55:42 IP:59.104.xxx.xxx 未訂閱
感覺你用了幾個全域變數...尤其是index、umber、value 這些變數你真的能保證在持續接收的過程中他是你要的值嗎?

===================引 用 文 章===================
嗯~我是有試過 晶片自己先送sin波(table值)

會發現值都很能順利接的到~不會有上面那種情況~
------
~§~迷時師渡,悟了自渡~§~
lvzhong1
一般會員


發表:29
回覆:18
積分:9
註冊:2007-01-23

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-03-29 15:01:34 IP:140.124.xxx.xxx 訂閱
前輩你好:
我是使用Tcomm元件,且我有在RThreshold設1~
有值就接~
這樣的話我還需要在Tcomm中寫Thread嗎?
不好意思~剛學不久~問題比較多
taishyang
站務副站長


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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-03-29 15:53:57 IP:59.124.xxx.xxx 未訂閱
因為TComm用的是TTimer收資料,
站上有前輩將它改成用TThread收資料並且有source code供你參考


===================引 用 文 章===================
前輩你好:
我是使用Tcomm元件,且我有在RThreshold設1~
有值就接~
這樣的話我還需要在Tcomm中寫Thread嗎?
不好意思~剛學不久~問題比較多
lvzhong1
一般會員


發表:29
回覆:18
積分:9
註冊:2007-01-23

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-04-13 20:27:08 IP:140.124.xxx.xxx 訂閱

請問一下~
我有爬過~但都找部到~
可否告訴我在哪邊呢~
感謝~麻煩了
===================引 用 文 章===================
因為TComm用的是TTimer收資料,
站上有前輩將它改成用TThread收資料並且有source code供你參考
系統時間:2024-04-27 7:50:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!