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

如何用BCB控制RTS與CTS腳位??

答題得分者是:暗黑破壞神
Sendre
一般會員


發表:8
回覆:21
積分:5
註冊:2007-03-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-04-18 18:12:23 IP:218.170.xxx.xxx 訂閱
我們目前在做的是用RS-485連接上電腦
可是後來發現485這顆IC是迴路的傳送方式
所以BCB這邊接收到的資料會有些問題
於是我們改用了把232腳位的7與8相接
用此方式控制485的接與收
可是問題來了
如何用BCB控制RTS與CTS腳位??
請各位厲害的大大們教導

編輯記錄
dllee 重新編輯於 2007-04-21 19:02:16, 註解 修改文章分類由 無 -> 問題, 提問時, 請記得選擇 [問題] 分類, 才能把分數給辛苦答題的會員, 謝謝您的配合‧‧
暗黑破壞神
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-04-18 19:40:14 IP:218.170.xxx.xxx 訂閱
請找尋 Async Pro 來處理。
harpist
資深會員


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-04-18 19:43:20 IP:59.105.xxx.xxx 未訂閱
<textarea class="cpp" rows="10" cols="60" name="code"> HANDLE hComm; String ComNo = "COM1"; //你要控制的 COM hComm = CreateFile(ComNo.c_str(),GENERIC_READ | GENERIC_WRITE,0, NULL, OPEN_EXISTING, 0, 0); if (hComm == INVALID_HANDLE_VALUE) //COM 未開啟 { MessageBox(0,"開啟通訊埠錯誤!!","Comm Error",MB_OK); return; } else { EscapeCommFunction(hComm,CLRRTS);//將RTS腳位降成低電位 EscapeCommFunction(hComm,SETRTS);//將RTS腳位升至高電位 unsigned long Status; if(GetCommModemStatus(hComm,&Status)) { if(Status & MS_CTS_ON) //偵測 CTS 腳位是否為高電位 { //... } } CloseHandle(hComm); } </textarea>
------
~§~迷時師渡,悟了自渡~§~
Sendre
一般會員


發表:8
回覆:21
積分:5
註冊:2007-03-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-04-18 19:58:48 IP:218.170.xxx.xxx 訂閱
謝謝兩位厲害的大大
可是
暗黑破壞神大大
你所說的Async Pro是要去哪裡找?

harpist大大
誠如你熱心所提示的
EscapeCommFunction(hComm,CLRRTS);//將RTS腳位降成低電位
EscapeCommFunction(hComm,SETRTS);//將RTS腳位升至高電位
unsigned long Status;
if(GetCommModemStatus(hComm,&Status))
{
if(Status & MS_CTS_ON) //偵測 CTS 腳位是否為高電位

這部份的程式碼是當通訊連線的時候
就先把RST腳位設為高腳位來通知485
把8051的資料送過來給電腦
然後再來的是偵測CTS腳位是否為高腳位
是的化電腦就將資料傳送給8051
不知道我這樣的見解對不對

還請高手們指導







暗黑破壞神
版主


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-04-18 20:57:21 IP:218.170.xxx.xxx 訂閱
>你所說的Async Pro是要去哪裡找?
http://sourceforge.net/projects/tpapro/
我記得我在用 485 的時候,只管到 Tx, Rx, 並沒有管到 CTS, RTS 耶。
你是有設流量管制嗎?
Sendre
一般會員


發表:8
回覆:21
積分:5
註冊:2007-03-17

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-04-18 21:07:27 IP:218.170.xxx.xxx 訂閱
暗黑破壞神大大
我們沒有做流量控管
只是我們做的485是有許多台並接
然後會對他們做掃描機台的動作
確認連線的有哪幾台
但是
後來發現485的迴路電路會把值回送給PC
也就是一份資料送到了8051一份又回送給PC了
所以才想說要用CTS 和RTS來解決
暗黑破壞神
版主


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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-04-18 22:03:09 IP:218.170.xxx.xxx 訂閱
不會吧。用 485 不會有 echo 呀。
485 是要做一個主機輪詢沒錯。但不會有 echo 呀。
至少我還沒遇過。
你要不要再查查?
終端電阻有上了嗎?
Sendre
一般會員


發表:8
回覆:21
積分:5
註冊:2007-03-17

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-04-18 22:19:51 IP:218.170.xxx.xxx 訂閱
暗黑破壞神大大
終端電阻有接上了
我們的485IC的接法是用
第2腳、第3腳來控制資料的方向
所以我們現在想用com的RTS腳來控制電腦主機端資料的傳送與接收
暗黑破壞神
版主


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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-04-18 23:45:48 IP:218.170.xxx.xxx 訂閱
你完全不接週邊,它也會有 echo 嗎?
Sendre
一般會員


發表:8
回覆:21
積分:5
註冊:2007-03-17

發送簡訊給我
#10 引用回覆 回覆 發表時間:2007-04-19 01:09:13 IP:218.170.xxx.xxx 訂閱
暗黑破壞神大大
之前電路沒接上CTS與RTS線路時
我們單純的將值丟出去給485
在接收回丟給485的值
會接收得到傳送與接收是相同的值
所以
我們才認為485的迴路會再把值
回傳給電腦

後來我們把CTS與RTS線路並接
連接到485的2、3腳位
電腦傳送資料給485
再回收485資料時就沒有收到了

不知這部份是不是有什麼錯誤
再請暗黑破壞神大大指導
暗黑破壞神
版主


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

發送簡訊給我
#11 引用回覆 回覆 發表時間:2007-04-19 10:53:58 IP:220.131.xxx.xxx 訂閱
你的485 是你已做的嗎?
我今天去公司再試試看會不會有你說的情況。
foreman
高階會員


發表:3
回覆:124
積分:190
註冊:2004-09-10

發送簡訊給我
#12 引用回覆 回覆 發表時間:2007-04-19 15:49:18 IP:218.169.xxx.xxx 未訂閱
大大:
您誤會max485的2腳(/RE)3腳(DE)的意思, 當/RE=GND,DE=GND表示IC可以接收資料反之/RE=Vcc,DE=Vcc表示IC可以發送資料,故通常會將這兩腳與RTS接在一起,8051方面找一I/O port與這兩腳接在一起,平常8051處於接收資料狀態(Low),當PC要求資料,8051將這兩腳(High)並將資料放入SBUF,PC方面要發送資料將這兩腳(High)直到發送完畢,立即變Low處於接收資料狀態,若有資訊則接收,一斷時間沒有資訊,表是該台8051未連線.
Sendre
一般會員


發表:8
回覆:21
積分:5
註冊:2007-03-17

發送簡訊給我
#13 引用回覆 回覆 發表時間:2007-04-20 00:54:35 IP:218.170.xxx.xxx 訂閱
感謝暗黑破壞神大大
電路都是我們自己做的
經由我們測試後的結果發現
485的腳位可以用RTS控制
但這方面的程式目前還沒架構

foreman大大
就你所說的

8051內部的通訊設協定我們
大致上都完成了
現在只差BCB端要更改
藉由RTS控制485的2、3腳位做接收與發送
那麼BCB的控制RTS腳位的方式是不是相同於
8051控制485的腳位呢?


編輯記錄
Sendre 重新編輯於 2007-04-20 00:55:40, 註解 無‧
暗黑破壞神
版主


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

發送簡訊給我
#14 引用回覆 回覆 發表時間:2007-04-20 02:51:25 IP:220.131.xxx.xxx 訂閱
RS485 的線路你自己做的,那要先由你的硬體查起了。
因為我怎麼找資料。都只找到 RTS 來控制 485 而沒有 CTS 來控制的資料。
而我自己在用 485 是以 555 做 Timer 來做控管。
用起來還蠻順的。
它的線路在林伸茂的書中有提到。
Sendre
一般會員


發表:8
回覆:21
積分:5
註冊:2007-03-17

發送簡訊給我
#15 引用回覆 回覆 發表時間:2007-04-20 07:59:33 IP:218.170.xxx.xxx 訂閱
暗黑破壞神大大
線路我們已經更改過了
確認都沒有問題
現在就差在BCB的控制端
該怎麼寫才能讓RTS像個開關
控制資料的流向?
請再多指教
暗黑破壞神
版主


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

發送簡訊給我
#16 引用回覆 回覆 發表時間:2007-04-20 08:42:56 IP:218.170.xxx.xxx 訂閱
1.我還兩重申我沒遇過485會ECHO的情況。不管是我自己簡單做的轉接,還是MOXA的485.
2.我是用AsyncPro 的元件。它裏面就有 485 的設定,你要不要先去參考看看。
3.我還是懷疑是你的線路問題,因為我就算是用超級終端機也不會有這個怪現象。要不要把線路圖PO出來看看?
Sendre
一般會員


發表:8
回覆:21
積分:5
註冊:2007-03-17

發送簡訊給我
#17 引用回覆 回覆 發表時間:2007-04-21 13:36:53 IP:218.170.xxx.xxx 訂閱
暗黑破壞神大大

這張電路圖是我們後來參考的電路圖
會有回朔是因為第2腳接正 第三腳接地了
不過電路部份的問題已經解決了
但現在就剩下BCB的問題
如大大你所說的AsyncPro 元件
除了用元件 可以寫程式去控制它嗎?
還是用大大所說的AsyncPro 元件會比較好
因為我們現在遇到的問題就是整合的時候與在模擬版上的情形
差好多
所以請大大不吝嗇的提供消息
謝謝

編輯記錄
Sendre 重新編輯於 2007-04-21 13:39:43, 註解 無‧
暗黑破壞神
版主


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

發送簡訊給我
#18 引用回覆 回覆 發表時間:2007-04-21 19:50:09 IP:218.170.xxx.xxx 訂閱
我會建議你用 AsyncPro 是因為我自己用過沒問題。
而要你去用 API 當然也可以做到。不然 AsyncPro 它怎麼做到的^^
你要用 API 當然也可以不過要自己再去管 Thread 的東西。你寫作上的程度又要高上一級。
有必要這樣嗎?
你可以自己考慮。

而 AsyncPro 有個參數是 RS485 的設定。你去設那個就可以了。
Sendre
一般會員


發表:8
回覆:21
積分:5
註冊:2007-03-17

發送簡訊給我
#19 引用回覆 回覆 發表時間:2007-04-23 10:56:54 IP:218.170.xxx.xxx 訂閱
暗黑破壞神大大
原來用API還有這麼多問題要解決呀...
難怪我們的整合一直沒法接上...

對了
大大上次提供的網站上面有AsyncPro
請問大大
因為我沒有安裝過元件
這個元件要怎麼安裝呢?
那裝好了要改哪些設定呢?
麻煩大大在敎導一下
麻煩大大這麼多真不好意思
暗黑破壞神
版主


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

發送簡訊給我
#20 引用回覆 回覆 發表時間:2007-04-23 11:25:17 IP:61.225.xxx.xxx 訂閱
你查一下,我站上回過很多 AsyncPro 的討論了。
查完還有問題我們針對有問題的討論。
要我教它實在會累死我。
它的文件寫得不錯,只要讀前幾頁就可以用了。
Sendre
一般會員


發表:8
回覆:21
積分:5
註冊:2007-03-17

發送簡訊給我
#21 引用回覆 回覆 發表時間:2007-04-27 19:51:39 IP:218.170.xxx.xxx 訂閱
暗黑破壞神大大和各位大大們
謝謝大大耐心的替我解答
我會去找大大發過的文章
仔細的研究
有問題的話可能就要再麻煩
各位大大了
系統時間:2024-07-01 1:39:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!