Robofun 機器人論壇
標題:
如何透過RS232把值回傳給BS2 是傳給BS2喔!!
[打印本頁]
作者:
robot2009
時間:
2010-2-3 17:29
標題:
如何透過RS232把值回傳給BS2 是傳給BS2喔!!
不好意思,又發帖!! 但是這次我經過測試 有些問題想請教!!
我目前可以把超音波所偵測到的值回傳給人機介面
但是我想用從人機端 下達 命令給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是多少?
作者:
miaoichi
時間:
2010-2-4 08:13
超音波的模組我不知你是哪一個的,大部份的都設定好的~~~~
所以bs2才會只接rx回來,因為只要接收超音波傳回來的值,也不需要接收
命令。
看你bs2的接法是使用單向接法(unidirectional),也就是只傳不收。
重點是要先看你的模組能不能接收命令,若可以,那就把另一個tx接上去
然後下命令試試,就可以了。
作者:
robot2009
時間:
2010-2-4 10:58
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.本來想附圖可是我好像不能貼,還是我不會= =+?!
字有點多,辛苦大大了= =+!! 我把他打的很詳細= =+!!
因為我真的很需要= =+!!
歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/)
Powered by Discuz! X3.2