Shop OBEX P1 Docs P2 Docs Learn Events
Old BS2 File desperately needed — Parallax Forums

Old BS2 File desperately needed

NWCCTVNWCCTV Posts: 3,629
edited 2012-07-19 19:43 in General Discussion
Does anyone in the Forums or within Parallax know where I can find a copy of the program ARobotControlForMSRS.bs2 ? I have Googled it and searched Parallax with no luck. Thanks if you can help.

Comments

  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2012-07-19 08:54
    Are you sure that's the correct title? Here's BoeBotControlForMSRS.bs2 that's mentioned in the Parallax docs.

    -Phil
  • Spiral_72Spiral_72 Posts: 791
    edited 2012-07-19 10:14
    Scrat thinks this file was part of microsoft robotics studio, or packaged with microsoft robotics studio thought I've not found a download location yet.
  • NWCCTVNWCCTV Posts: 3,629
    edited 2012-07-19 11:30
    Scrat is almost correct. It is part of Sarah Morgans book Programming MSRS. It is one of the files she mentions for programming the ARobot. No, It is not BoeBotCOntrolforMSRS.bs2.
  • W9GFOW9GFO Posts: 4,010
    edited 2012-07-19 12:17
  • NWCCTVNWCCTV Posts: 3,629
    edited 2012-07-19 12:23
    Yes, But if you look at page 158 you will see that it is a fairly large program. Nothing that is in the book is declared so it is really hard to figure the whole thing out.

    Basically what I am in need of is setting the .bs2 program to communicate via serial port back and forth between MSRS.

    The only code for the BoeBot is for using Bluetooth, which I do not want to do. I want a direct connection via a serial port. I have been working on this for the better part of this week. I really need this to work for my project, as BT is not secure enough for what I want to do.
  • RDL2004RDL2004 Posts: 2,554
    edited 2012-07-19 13:35
    Here you go. The usual stupid Microsoft garbage... required a setup.exe file to be downloaded to "install" a bunch of text files that could have simply been put in a .zip file.

    This will save you from that hassle. If you want the entire bunch of files, here's the link.

    http://www.microsoft.com/mspress/companion/9780735624320/



    ' {$STAMP BS2}
    ' {$PBASIC 2.5}
    
    '------------------------------------------------------------------
    ' Name: ARobotControlForMSRS.bs2
    ' Desc: Interface between ARobot and MSRS
    ' By  : Sara Morgan
    ' Date: 10/10/2007
     '------------------------------------------------------------------
    ' Overview:
    '
    '  This represents the hardware interface between the ARobot by
    '  Arrick Robotics and MSRS.
    '
    '  Things to keep in mind:
    '  1.) A packet is what gets sent back and forth from MSRS to ARobot.
    '  2.) This can be either an incoming or an outgoing packet. When it is
    '      coming in, we use SERIN; When is is going out we use SEROUT
    '  3.) When it is incoming, it contains a command and parms. When it is outgoing,
    '      it contains data such as the output from the whiskers
    '  4.) The data in the packet can contain no more than 4 bytes when incoming
    '      and outgoing.
    '  5.) The command determines what subroutine gets called and thus
    '      what gets done on the ARobot.
    '
    '------------------------------------------------------------------
    
    '------------------------------------------------------------------
    ' Variable Declarations
    '------------------------------------------------------------------
    inBuffer      VAR     Byte(4)           'We will accept an in byte array of 4 bytes
    outBuffer     VAR     Byte(4)           'The out array will also be 4 bytes
    
    routine       VAR     Byte              'Routine selector
    tmp1          VAR     Byte              'Temp var.
    tResponse     VAR     Byte              'response from the coprocesor
    
    tDuration     VAR     Byte              '50ths of ms duration
    tFrequency    VAR     Byte              '50ths of frequency
    tDistance     VAR     Byte              'Distance in half inches
    tSpeed        VAR     Byte              'Speed - typically a 6
    tSteer        VAR     Byte(2)           'Steer direction - byte 1(Center=80,Left=D0,Right=20)
    tDirection    VAR     Byte              'Direction (F=Forward,B=Backward,R=Right,L=Left)
    
    
    '------------------------------------------------------------------
    ' Constant Declarations
    '------------------------------------------------------------------
    CMD_BAUD          CON  3313             'Command stream baud rate. 300
    NET_BAUD          CON  396              'Coprocessor network baud. 2400
    
    DRIVE_ROBOT       CON  20               'Make the robot move according to the direction and distance set
    ON_RED_LED        CON  30               'Turn on the Red LED light
    OFF_RED_LED       CON  31               'Turn off the Red LED light
    ON_GREEN_LED      CON  32               'Turn on the green LED light
    OFF_GREEN_LED     CON  33               'Turn off the green LED light
    SET_SPEAKER       CON  40               'Turn on the Speaker and play a tone
    
    COPROC            CON  8                'Coprocessor network pin.
    CONSOLE           CON  16               'Console serial I/O.
    
    
    '------------------------------------------------------------------
    ' I/O Pin Declarations for the ARobot
    '------------------------------------------------------------------
    LEFT_WHISKER  PIN  0
    RIGHT_WHISKER PIN  1
    SPEAKER       PIN  9
    REDLED        PIN  10
    GREENLED      PIN  11
    JUMPER1       PIN  12
    JUMPER2       PIN  13
    BUTTON1       PIN  14
    BUTTON2       PIN  15
    
    Start:
      ' Performs 2 short beeps when the robot starts up
      FREQOUT SPEAKER,150,2000
      PAUSE 10
      FREQOUT SPEAKER,150,2000
      LOW SPEAKER                        'turn off speaker.
      LOW GREENLED          'turn on the Green LED light
    
    Main:
    '-----------------------------------------------------------------
    ' Main routine - this loop should run continuously
    '-----------------------------------------------------------------
    DO
      ' Get the next command by using the SERIN command
      ' to recieve in the serial data sent in a packet
      ' The packet should contain no more than 4 bytes
      ' after the MSRS header
      SERIN Console, CMD_BAUD,300, NoCmd, [WAIT ("MSRS"), STR inBuffer \4]
    
      ' Process the incoming command by looking up what subroutine it is calling
      LOOKDOWN inBuffer(0), = [DRIVE_ROBOT, ON_RED_LED, OFF_RED_LED, ON_GREEN_LED, OFF_GREEN_LED, SET_SPEAKER], routine
      ON routine GOSUB     DriveRobot, OnRedLED, OffRedLED, OnGreenLED, OffGreenLED, SetSpeaker
    
      PAUSE 100
    
     NoCmd: ' We want to always return whisker values
    
      outBuffer(0) = LEFT_WHISKER       'Left whisker
      outBuffer(1) = RIGHT_WHISKER      'Right Whisker
      outBuffer(2) = 0
      SEROUT Console, CMD_BAUD, ["ROB", STR outBuffer \4]
    
    LOOP
    
    
    '------------------------------------------------------------------
    ' Subroutines
    ' These are the subroutines that actually send commands
    ' to the robot and get information from the robot
    
    '------------------------------------------------------------------
    
    DriveRobot:
    
      'First, get the input variables
      tDistance = inBuffer(1)
      tDirection = inBuffer(2)
      tSpeed = inBuffer(3)
    
      SELECT tDirection
        CASE "S"      'Stop the robot
          tmp1 = "0"
          tSteer(0) = "0"
          tSteer(1) = "0"
        CASE "B"      'Go backwards
          tmp1 = "0"
          tSteer(0) = "8"
          tSteer(1) = "0"
        CASE "F"      'Go forwards
          tmp1 = "1"
          tSteer(0) = "8"
          tSteer(1) = "0"
        CASE "R"      'Go right
          tmp1 = "1"
          tSteer(0) = "0"
          tSteer(1) = "1"
        CASE "L"      'Go left
          tmp1 = "1"
          tSteer(0) = "F"
          tSteer(1) = "F"
      ENDSELECT
    
      'Send commands to the CoProcessor and get a response
      SEROUT COPROC, NET_BAUD, ["!1R1"]       'Send RC command to coprocessor.
      SEROUT COPROC, NET_BAUD, [tSteer(0)]    'Steer command 1
      SEROUT COPROC, NET_BAUD, [tSteer(1)]    'Steer command 2
      SERIN COPROC, NET_BAUD,  [tResponse]    'Get a response
      PAUSE 300                               'Pause 300 ms
    
      SEROUT COPROC, NET_BAUD, ["!1M1"]       'Starting part of command to co.
      SEROUT COPROC, NET_BAUD, [tmp1]         'Set the direction 1=forward 0=backward
      SEROUT COPROC, NET_BAUD, [HEX1 tSpeed]  'Set the speed
      IF tDistance = 0 AND tDirection = "S" THEN
        SEROUT COPROC, NET_BAUD, ["0001"]     'Turn the motor off
      ELSEIF tDistance = 0 AND tDirection <> "S" THEN
        SEROUT COPROC, NET_BAUD, ["FFFF"]     'Set Distance for forever
      ELSE
        SEROUT COPROC, NET_BAUD, [HEX4 tDistance] 'Set Distance set number of inches
      ENDIF
    
      SERIN COPROC, NET_BAUD, [tResponse]     'Get a response
      PAUSE 100                               'Pause 100 ms
    
      RETURN
    
    
    OnRedLED:
    
      LOW REDLED            'turn on the Red LED light
      RETURN
    
    OffRedLED:
    
      HIGH REDLED           'turn off the Red LED light
      RETURN
    
    OnGreenLED:
    
      LOW GREENLED          'turn on the Green LED light
      RETURN
    
    OffGreenLED:
    
      HIGH GREENLED         'turn off the Green LED light
      RETURN
    
    SetSpeaker:
    
      tDuration = inBuffer(1)    'Get time in ms that speaker should sound out
      tFrequency = inBuffer(2)   'get the frequency
    
      FREQOUT SPEAKER, tDuration * 50, tFrequency * 50   'Set the tone
    
      LOW SPEAKER           'turn off the speaker
    
      RETURN
    
  • NWCCTVNWCCTV Posts: 3,629
    edited 2012-07-19 14:12
    Thank you SOOOOOOOOOOOOOOOO much!!!!!
  • ercoerco Posts: 20,259
    edited 2012-07-19 14:56
    Best 404 error page yet, found by clicking on Rick's microsoft link and then Quantumbooks.

    http://www.quantumbooks.com/Merchant2/merchant.mvc?Screen=PROD&qts=mslearning&qtk=0735624321&Product_Code=0735624321
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2012-07-19 19:43
    'Been in that situation. But no: after a couple cocktails, it was all good, and nobody else seemed to notice. :)

    -Phil
Sign In or Register to comment.