robot2009 發表於 2010-2-1 11:51:50

[請益]RS232-接收問題(附上我的CODE)

' {$STAMP BS2}
' {$PBASIC 2.5}
' -----[ I/O Definitions ]-------------------------------------------------
Ping1 PIN 0
' -----[ Constants ]-------------------------------------------------------
Trigger CON 5 ' trigger pulse = 10 uS
Scale CON $200 ' raw x 2.00 = uS
RawToIn CON 889 ' 1 / 73.746 (with **)
RawToCm CON 2257 ' 1 / 29.034 (with **)
IsHigh CON 1 ' for PULSOUT
IsLow CON 0

' -----[ Variables ]-------------------------------------------------------
rawDist1 VAR Word ' raw measurement
cm1 VAR Word

' -----[ Initialization ]--------------------------------------------------
Reset:
DEBUG CLS,
"Parallax PING))) Sonar", CR, ' setup report screen
"======================", CR,
"Centimeters1... ", CR,
' -----[ Program Code ]----------------------------------------------------
Main:
DO

GOSUB Get_Sonar1         ' get sensor value
cm1 = rawDist1 ** RawToCm          ' convert to centimeters
DEBUG CRSRXY, 15, 2,
"s",DEC cm1,"e", CLREOL

PAUSE 100
LOOP
END

'***************************
Get_Sonar1:
Ping1 = IsLow ' make trigger 0-1-0
PULSOUT Ping1, Trigger ' activate sensor
PULSIN Ping1, IsHigh, rawDist1 ' measure echo pulse
rawDist1 = rawDist1 */ Scale ' convert to uS
rawDist1 = rawDist1 / 2 ' remove return trip
RETURN
'******************************************************
以上是我BS2上的CODE
Q1.當我cm1 = rawDist1 ** RawToCm      此段時cm1就是十進制沒錯八?!
      因為我用----> IF cm1>60 THEN HIGH 就能成功

Q2.而我在DEBUG時 要是沒加DEC那他就會亂碼~那個亂碼是ASCII沒錯八?!
   也就是--->DEBUG CRSRXY, 15, 2,"s",DEC cm1,"e", CLREOL
   所以說DEC 只是要讓BS2本身Debug Teriminal 能夠顯示十進制 而不顯示ASCII 對嗎?!

Q3.我在BS2上我在DEBUG 加上"s" DEC cm1 "e" 是要讓我在人機端 能夠分辨出s起始 e結束
       這樣做的化我在加超音波上去,只要用一樣的方把給"a" DEC cm2 "b" 這樣就能一次分別抓到兩顆.

Q4.因次我想請問在人機端我所抓到的值是否是因為我在BS2上有給他 "s" DEC cm1 "e" 因此他在
       人機端所抓到的值也會是十進制(DEC),就是抓s,e 字串中間那段值?!

Q5.所以我最後的問題就是! 我如果要把我在人機端的值 假設抓到150 那我要回傳這個數值給BS2
   到底該如何做呢?! 請瞭解的大大 幫我解惑= =+!!

Q6.我竟然用了抓 "s" "e"中間那段值的方法 成功在人機端顯示,這樣是代表? 我不須要使用SEROUT
   對嗎?

Q7.還是說 使用SEROUT 及 SERIN 這樣一對比較好用呢??

Q8.在本來的BS2開發板上那個RS232的接頭是 哪一個腳位能當SERIN的Pin呢?!

Q9.請大大能指引方向...有網站~資料 之類的嗎= =?!
PS. 問了那麼多的問題,麻煩能解惑的大大~幫我看一下八= =+!!

   十二萬分的謝意!!= =+

robot2009 發表於 2010-2-2 10:45:11

我忽然想到! 我之前都是使用另外接出一條RS232 就是一條接P14 另一條接地 這是使用飆機器人所提供

終端機TEST那個RS232的接法!! 所以我的語法會是 SERIN 14,16468,

因為在youtbe 上有看到有人就用接 搭載版上那個RS232接頭 直接送命令給車子!!~控制它~

所以我如果要透過搭載版上的RS232來接收超音波 以及同時 送命令給它 請問該如何寫?!

我人機端 是給他一個Buffer=15   讓它能回傳給bs2 來做一個腳位high low的動作

也就是BS2:此端把測到的超音波送給電腦!! EX: if(超音波值>50) 回傳一個代碼例如1
      
這個1就回傳給BS2 告訴他IF(Data=1) THEN HIGH 13---->HIGH 13代表HIGH馬達的模式

馬達端已經OK了!!

現在就是Data那個值要如何收?!!請瞭解的大大幫我解惑!! 感恩!!
頁: [1]
查看完整版本: [請益]RS232-接收問題(附上我的CODE)