Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 4631|回復: 2

如何透過RS232把值回傳給BS2 是傳給BS2喔!!

[複製鏈接]
發表於 2010-2-3 17:29:12 | 顯示全部樓層 |閱讀模式
不好意思,又發帖!!  但是這次我經過測試 有些問題想請教!!

我目前可以把超音波所偵測到的值回傳給人機介面

但是我想用從人機端 下達 命令給BS2 ,在BS2端使SERIN的指令來接收值

PIN腳該給多少?   因為本身BS2上他SIN已經跟 搭載板連接

我把Tx腳位,拉出來 發現Tx腳位的確沒再用,超音波的值是透過Rx腳位回傳給電腦!!

(Tx腳位 為rs232的pin3) 也就是說~竟然他Tx腳位沒再用 那我要如何使用

BS2語法 SERIN pin,鮑率,[sData] 就是pin腳應該給多少!?

就差一步了...請瞭解的大大幫幫忙...= =+

PS.我是使用原本載版上那個RS232接頭與電腦連接!!
     或許是因為這樣接 我跟本不知RS232的PIN3(TX) 他所接到的腳位(指的是BS2上的SIN)
     它的pin是多少?
發表於 2010-2-4 08:13:19 | 顯示全部樓層
超音波的模組我不知你是哪一個的,大部份的都設定好的~~~~
所以bs2才會只接rx回來,因為只要接收超音波傳回來的值,也不需要接收
命令。
看你bs2的接法是使用單向接法(unidirectional),也就是只傳不收。
重點是要先看你的模組能不能接收命令,若可以,那就把另一個tx接上去
然後下命令試試,就可以了。
 樓主| 發表於 2010-2-4 10:58:59 | 顯示全部樓層
miaoichi 大大

我使用的是 PING)))™ Ultrasonic Distance Sensor (#28015) 就是我圖像這顆

有三隻腳 一支接地,一支接電壓,一支訊號線(接pin腳的)

我不懂單向接是什?? 可能是我緒述的不夠清楚!! 我把他詳細一點打出來.
-----------------------------------------------------------------------------------------------------------
我是透過 PING)))™ 然後把他接到bs2版上,之後透過PING)))™  所給的範例就能抓到此顆超音波的值

為了要能抓到bs2在它本身視窗上所顯示的值,

因此我在bs2的code裡加上了"s"跟"e" ,這樣我就能透過MFC寫一個for抓"s"字串及"e"字串中間值的方法.

DEBUG CRSRXY, 15, 2,
"s",DEC cm1,"e", CLREOL
--[到目前為止是成功的把超音波的值給到人機端了]-------------------------------------------------------------

之後我就做了一個rs232轉rs232的接頭(簡單說就是把原本的rs232接線 另外做一條一模一樣的 rs232的接頭我使用杜邦端子接頭這樣我就能隨意拔起任何腳位)

此步驟就只是為了把rs232的pin3拉出來看他到底是否有使用到

不過我發現在燒錄的時後rs232的pin2(Rx) 及 pin3(Tx) 一定要接
(原本我認為只有燒 所以應該只需要pin3(Tx)來傳送data 不需要pin2(Rx) )
不過之後我想一想,從電腦端rs232傳出去(Tx)的接頭 在bs2端 當然也需要接收(Rx)
(不知道我上面這樣的想法對嗎?! 目前我是認為這樣)

那現再重點來了!!  首先我先把超音波的CODE給燒錄進去

接下來RS232的pin3(Tx)拔起來,此時超音波依然可以有效的透過BS2上的SOUT他會把BS2上所測到的值透過RS232的RX接收在傳到PC上!!

因此結論就是!! RS232 TX接腳並沒有用到!!
***********************************************************************
而我現在的目的 就是要在人機端  下命令給BS2!!
就像是我在PC端給的一個命令               
        if(output1>10) /output1是超音波即時回傳的值
        {
                    OutputCMD(); //傳送資料出去(  OutputCMD();前面已經先寫好傳送的code了,
                                           //ch=ByteSend在透WriteFile(hComm,&ch,1,&lrc,NULL); )               
            ByteSend[0]=119;//某個對應的碼
        }
**************************************************************
昨天晚上有測出一個方法,我先解說一下我下面在幹麻
也就是我上面給了一個119的碼傳送給bs2
119代表:電腦回傳值
下面的123 121 119 代表基準值,
下面範例跑出來就會是
119>123 (電腦回傳值小於基準值,判斷正確就不運作,不正確就運作)--->運做
119>121 (電腦回傳值小於基準值,判斷正確就不運作,不正確就運作)---->運做
119<119 (電腦回傳值等於基準值, 但敘述裡面是小於不運做,敘述裡面是大於就運做,)--->不運做
因此三個都會做15,5就會運做high腳位,1則不運做

以上的規則是try出來的!! 我覺的是bs2的bug!!

SERIN 18, 1940, [sData] 神奇的是這一行,我跟本沒有p18它還能讓我控制,
最扯的是...我鮑率哪來的1940 就亂打... 竟然可以如我try出來的一樣運做...
我一整個不知道該如何下手(如果大大覺得這一段很亂就不要看了= =,因為我覺的是bug)

'電腦回傳值大於基準值,判斷正確就運作,不正確不運作
  '電腦回傳值小於基準值,判斷正確就不運作,不正確就運作
  '電腦回傳值等於基準值, 不正確就運做
' {$STAMP BS2}
' {$PBASIC 2.5}
' test version
sData   VAR     Byte


  DO

Main:
  SERIN 18, 1640, [sData]

  IF sData > 123 THEN HIGH 15 '123代表基準值
  IF sData > 121 THEN HIGH 5  '121代表基準值
  IF sData < 119 THEN HIGH 1  '119代表基準值

  PAUSE 100

  LOOP

  END

  '此範例為走投無路版
********************************************************************
我現在是希望能一邊接收超音波 又能即時的傳值回去給bs2來達到high腳位的方法
(high腳位是為了控制馬達,自己另外的馬達(PIC已經寫好))

還是大大有別的方法!?  

我是有想過我把超音波測到的 值都回傳給人機耑 而馬達端也寫一個RS232,都在人機端處理直接下達命令給馬達.

這樣就不需要回傳值給BS2了!! 可是我是覺的不可能不行阿= =+!!

PS.本來想附圖可是我好像不能貼,還是我不會= =+?!

字有點多,辛苦大大了= =+!! 我把他打的很詳細= =+!!

因為我真的很需要= =+!!
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-3-29 10:09 , Processed in 0.224558 second(s), 7 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表