Robofun 機器人論壇

標題: 如何用VB 2005和BS2溝通?? [打印本頁]

作者: xzy032    時間: 2009-5-27 17:42
標題: 如何用VB 2005和BS2溝通??
各位大大好,我想用VB 2005來跟BS2做溝通,我是用Boe-BS2PX USB的,使用baudrate 9600,8N1,VB的serialport也有設定好com port等等,因為我對VB才剛接觸,可以幫我看一下程式哪裡有錯,程式大致上是利用一個button和textbox,當我按下button,然後傳出dat,接著BS2收到dat之後,回傳給PC,但是執行VB則是顯示"通訊埠已經關閉"的訊息,拜託懂的人出個聲吧,或是有什麼方法提供一下,現在只是想簡單測試VB跟BS2的溝通。

-------VB 程式--------------------------------------------------------
Public Class Form1
    Dim dat(2) As Byte
    Dim readbf(2) As Byte
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim A As Byte
        dat(0) = 5
            SerialPort1.Write(dat, 0, 1)        '在這裡顯示==>"通訊埠已經關閉"
            System.Threading.Thread.Sleep(1)
      
             SerialPort1.DiscardInBuffer()
             SerialPort1.Read(readbf, 0, 1)
        readbf(0) = A
        TextBox1.Text = A

    End Sub
End Class
--------------------------------------------------------------------

----BS2程式-------------------------------
' {$STAMP BS2px}
' {$PBASIC 2.5}
dat VAR Byte
DO
SERIN 16,16780,[dat]
DEBUG ? dat,CR
IF dat>0 THEN
  SEROUT 16,16780,[DEC 125]
ENDIF
LOOP
END
--------------------------------------------------------------------
作者: ghostwolf90    時間: 2009-7-19 20:07
這是一個用VB傳字串給RS232的程式,一個ComboBox,三個Button,兩個Textbox,程式碼如下
Imports System.IO.Ports
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        btnOpenPort.Text = "開啟"
        btnSend.Text = "傳送"
        btnReceive.Text = "接收"
        Label1.Text = "通訊"
        Label2.Text = "傳送的資料"
        Label3.Text = "收到的資料"
        cmbPort.Items.Clear()
        For Each PortName As String In SerialPort.GetPortNames
            cmbPort.Items.Add(PortName)
        Next
        cmbPort.SelectedIndex = 0
    End Sub
    Private Sub btnOpenPort_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpenPort.Click
        If SerialPort1.IsOpen Then
            SerialPort1.Close()
            'btnOpenPort.imagkey = "open"
            btnOpenPort.Text = "開啟"
            txtSend.Text = " "
            txtReceive.Text = " "
            btnSend.Enabled = False
            btnReceive.Enabled = False
        Else
            SerialPort1.PortName = cmbPort.SelectedItem.ToString
            SerialPort1.BaudRate = 9600
            SerialPort1.Parity = Parity.None
            SerialPort1.DataBits = 8
            SerialPort1.StopBits = StopBits.One
            SerialPort1.Open()
            btnOpenPort.Text = "關閉"
            btnSend.Enabled = True
            btnReceive.Enabled = True
        End If
    End Sub
    Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
        SerialPort1.Write(txtSend.Text)
    End Sub
    Private Sub btnReceive_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReceive.Click
        txtReceive.Text = SerialPort1.ReadExisting()
    End Sub
End Class

BS2板程式沒有太大變化
84如果不行直接改回16780
----BS2程式-------------------------------
' {$STAMP BS2px}
' {$PBASIC 2.5}
dat VAR Byte
DO
SERIN 16,84,[dat]
DEBUG ? dat,CR
IF dat>0 THEN
  SEROUT 16,84,[DEC 125]
ENDIF
LOOP
END
作者: ghostwolf90    時間: 2009-9-11 01:22
請問有無看懂?在給我MAIL 我把程式碼給你
作者: robot2009    時間: 2010-2-3 17:33
請問是指有BS2p能這樣做嗎?!?!  我看大家貼有關RS232的 範例都是 PIN:16

如果是BS2就不能嗎!?

BS2與BS2P 不就差在IO腳及容量大小嗎?
作者: robot2009    時間: 2010-2-4 00:18
剛剛查了一下!! 其他的BS2晶片 也沒有 PIN:16 這隻腳位阿?!

看飆給的範例 也是PIN16?

是為蛇?!
作者: andrew_benimaru    時間: 2010-7-26 22:36
不好意思,可以請問我用VB轉parallax bs2晶片的
程式要怎麼寫BS2才會接收呢?
我要傳出去的按鍵 "W A S D"控制前進 左邊 右邊 後退
麻煩指教一下感恩.
作者: max    時間: 2011-3-9 00:34
打擾了!我也想請教程式碼的問題!?
一樣是想轉VB的形式,想問如何用VB PING BS2晶片的腳位及動作(下列為超音波程式碼)
----------------------BS2-------------------------
PingA           PIN      7
A:
    GOSUB Get_SonarA                             ' get sensor value
    cm = rawDist ** RawToCm                     ' convert to centimeters
    PUT 0,Word cm
    GOTO B
Get_SonarA:
    PingA = IsLow                                  ' make trigger 0-1-0
    PULSOUT PingA, Trigger                         ' activate sensor
    PULSIN  PingA, IsHigh, rawDist                 ' measure echo pulse
    rawDist = rawDist */ Scale                    ' convert to uS
    rawDist = rawDist / 2                         ' remove return trip
    RETURN
作者: playrobot    時間: 2011-3-12 09:08
http://iccl.nkmu.edu.tw/playrobo ... mp;searchsubmit=yes

這裡有許多VB範例
作者: max    時間: 2011-4-5 09:56
這網址以過期了,想請問用VB連接藍芽鄉郭範例嗎?




歡迎光臨 Robofun 機器人論壇 (https://www.robofun.net/forum/) Powered by Discuz! X3.2