Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 5551|回復: 6
打印 上一主題 下一主題

[請益]RS-232:BS2接收問題

[複製鏈接]
跳轉到指定樓層
1#
發表於 2010-1-26 18:42:21 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最後由 robot2009 於 2010-1-26 18:43 編輯

以下程式就是要從人機端  送值給bs2 ,bs2收到值後後把sData內所存到的值拿來做LED是否亮起!!

請問要從人機端下值給BS2我在人機端傳給他的值是0x33這樣的

BS2上他sData 到底是接收什值? 原本是想說SERIN 14, 16468, [DEC sData]  就值接把收到的值 直接轉成10進制 在拿它來做IF ELSE 的判斷.

ps.  bs2上  IF ( sData> 0 )THEN HIGH 15
       sData>0 那個0指的是十進制沒錯八?

想請問人機端應該要傳什麼值? 目傳人機端是給它 一個 buffer,   Send[0] = 0x33;
而BS2端我下面這樣設定對嗎?!


' {$STAMP BS2}
' {$PBASIC 2.5}
sData   VAR     Byte

Main:
DO
SERIN 14, 16468, [sData]                       ' baudmode set for BS2
DEBUG  sData

  IF ( sData> 0 )THEN
  HIGH 15
  ELSEIF ( sData<3) THEN
  LOW 15
  ENDIF


  LOOP
  END
2#
發表於 2010-1-27 12:39:31 | 只看該作者
本帖最後由 miaoichi 於 2010-1-27 12:43 編輯

人機端傳給他的值是0x33
BS2上他sData 到底是接收什值->就是0x33

你在ap上給他 1->ascii是 33 ->所以硬體也會看到 0x33 -> 你就要用ascii來判斷
或者是你可以去做一個修正 sData =  sData -32 -> 這就會是你要的數字了

Main:
DO
SERIN 14, 16468, [sData]                       ' baudmode set for BS2
DEBUG  sData

  IF ( sData> 0x33 )THEN
  HIGH 15
  ELSEIF ( sData<0x36) THEN
  LOW 15
  ENDIF


  LOOP
  END
3#
發表於 2010-1-27 12:45:35 | 只看該作者
十進制通常是直接寫
十六進制的話得在前面加0X33
不過basic stamp的十進制前面要不要加dec 開頭,這就得注意一下指令規格了
4#
 樓主| 發表於 2010-1-29 11:46:29 | 只看該作者
Q1.   0x33    BS2是不是看不懂阿?!

在人機端這邊 給他 0x33 應該是代表十進制的51八?!

我發現如果這樣弄好像會爆掉...因為ASCII只到7F 十進制的值相對也只到127~

如果我是弄超音波不就最遠能判斷的值只到127公分!!

Q.如果我只是要把電腦端的所偵測到的十進制值,回傳給BS2 然後在BS2端寫死馬達程式,也就是LOW與HIGH 來控制馬達(馬達是用另一塊PIC所寫,因此只要能成功在BS2端都到一個能讓BS2所判斷的值,就可驅動馬達了),BS2能否直接接收?!!

#目前以經可以把SENSOR的值傳給PC 在PC端,如果測到221公分那PC端就是真的收到221公分
   不是"2" "2" "1" 這樣分開的.

#我只是想把我所偵測到的值丟回給BS2 因此我用16進制,不就會因此而爆掉?(因為16進制去對應在ASCII上只能對到127)
5#
發表於 2010-1-29 14:57:05 | 只看該作者
Q1 :
那得看你宣告甚麼型別
BS應有型別可以容下超過127的, like int or something...
最適合應是byte陣列
原廠文件應該有, 我的BS已經賣掉, 目前沒辦法幫忙測

Q2:當然可以...只是serialIn /serialOut的問題而已
6#
發表於 2010-1-30 00:37:05 | 只看該作者
十六進位要用 &H01 之類的~~~
7#
 樓主| 發表於 2010-2-2 13:47:19 | 只看該作者
本帖最後由 robot2009 於 2010-2-2 13:51 編輯

miaoichi 大大 我剛剛看了一下你說什過去他他就會收什!?

也就是說人機端傳給他的值是150(十進制沒錯八?!)

BS2上他sData 到底是接收什值->就是150摟?

因為我一直不能確定到底他是收到什麼值?

我剛剛才發現 我插在搭載板上的RS232 他會接收到超音波抓到的值 在傳給PC端 這時後他是使用了

BS2上面SIN(也就是RS232的Pin3)(傳送端)

那也就是說BS2上的SOUT(也就是BS2的接收端)


那我要接收SERIN ?, 16468, [sData] (問號的地方 腳位要給多少呢?)

我想這應該是我不送資料給BS2的原因八?!


ps.如果單純看 SERIN ?, 16468, [sData] 就是說透過?號角位 把值丟進[sData]

    那這樣在bs2內把sData拿來做判斷對八?!
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-11-23 17:46 , Processed in 0.078717 second(s), 8 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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