BCD436HP/BCD536HP: New Menu Navigation Commands added in V1_08_06

Status
Not open for further replies.

rbn_rr

Member
Joined
Feb 7, 2015
Messages
41
The (brief!) release notes for Firmware version V1_08_06 includes the following: "Added menu navigation support to serial protocol".

A bit of hacking this weekend revealed the following:

The four new commands added (apparently the ONLY new commands added to the protocol since V1_05_01) are:

MNU -- Enter MENU mode at top-level menu (same as pressing MENU button while not displaying a menu
MSB -- While in MENU mode, go BACK one level (same as pressing MENU while displaying a menu)
MSV -- While in MENU mode, go FORWARD one level (same as pressing [E] while displaying a menu)
MSI -- Return XML block representing current menu

Examples:
MNU while scanning to enter Menu mode. Now you'll be at the top menu
MSI returns the following:
MSI,<XML>,
<?xml version="1.0" encoding="utf-8"?>
<MSI Name=" -- M E N U -- " Index="4293002112" MenuType="TypeSelect" Value="Set Scan Selection" Selected="0" >
<MenuItem Name="Set Scan Selection" Index="0" />
<MenuItem Name="Manage Full Database" Index="1" />
<MenuItem Name="Manage Favorites" Index="2" />
<MenuItem Name="Set Your Location" Index="3" />
<MenuItem Name="Select Service Types" Index="4" />
<MenuItem Name="Srch/CloCall Opt" Index="5" />
<MenuItem Name="Search for..." Index="6" />
<MenuItem Name="Close Call" Index="7" />
<MenuItem Name="Discovery" Index="9" />
<MenuItem Name="Priority Scan" Index="10" />
<MenuItem Name="WX Operation" Index="11" />
<MenuItem Name="Tone-Out for..." Index="12" />
<MenuItem Name="Display Options" Index="13" />
<MenuItem Name="Settings" Index="14" />
<Footer No="1" EOT="1"/>
</MSI>

At the same time, GSI returns the following:

GSI,<XML>,
<?xml version="1.0" encoding="utf-8"?>
<ScannerInfo Mode="Menu tree" V_Screen="menu_selection">
<MenuSummary name=" -- M E N U -- " index="4293002112" />
<ViewDescription>
</ViewDescription>
</ScannerInfo>

You'l note that that the ANALYZE selection is omitted from the returned XML. You actually CAN navigate to it, but it's not returned in the XML block.

MSV,,8 will navigate to the ANALYZE menu, even though it's missing from the XML data.

While the ANAYLZE top menu is being displayed, MSI will return the following:
MSI,<XML>,
<?xml version="1.0" encoding="utf-8"?>
<MSI MenuType="TypeError" >
<MenuErrorMsg Text="The scanner is in state that you can&apos;t remote control.&#xD;Please goto scan mode to remote control." ScanButton="1" />
<Footer No="1" EOT="1"/>
</MSI>

As before, you can ignore the MenuErrorMsg.Text and navigate directly if you "know" (by parsing the output of STS while the menu page is being displayed, for example) the index value of the selection you want. For example, if you want to navigate to "RF Power Plot" while your'e on the ANALYZE top menu you can get there with MSV,,2 (RF Power Plot is the third menu option -- starting at an index origin of 0, this makes the RF Power Plot selection Index==2.)

The output from STS while on the ANALYZE menu is:

STS,1111111111,Analyze ,________________________,System Status ,************************,EDACS/LTR LCN Finder ,,RF Power Plot ,, ,, ,, ,, ,, ,, ,,0,1,0,0,,,0,OFF,3

MSB,, will take you back one level in the menu hierarchy (equivalent to pressing the MENU button).
MNU while you're at any level will take you back to the top-level menu.

The syntax of "MSV,," and "MSB,," suggests each can take two parameters. As shown above, the second parameter for MSV is the selection index, as in "MSV,,indexID". It seems the first parameter might be the MenuID, but thus far I've not been able to navigate directly to sub-menus without navigating through the menus in between.

So...if you have the inclination to do so, you should be able to use this information to more cleanly navigate through the BCD436HPs menus within your code -- for example, displaying ALL menu options at once rather than just what's visible on the BCD-436 screen and selecting a menu option directly rather than having to scroll through the selections above/below it.

If you're writing code to control your BCD-436HP, please share YOUR discoveries and insights with the rest of us!

-rbi
 

rbn_rr

Member
Joined
Feb 7, 2015
Messages
41
Navigating menus...

Neglected to mention...

"KEY,>,P" and "KEY,<,P" can be used to navigate up & down as any menu is displayed -- so if you want to mimic the behavior of the BCD-436HP display screen & knob navigation, you can do so. The <MSI...Selected="x"> will tell you which menu item is currently highlighted on the BCD-436 screen.

"MSV,," will accept the current menu selection (as will using the appropriate KEY command.)

Also, this should all apply to the BCD-536HP as well. I have 6 436's but only one 536, and I've not yet poked into the 536. When I do, I'll post any interesting findings.

-rbn
 

rbn_rr

Member
Joined
Feb 7, 2015
Messages
41
More menu musings...


UPMan, thank you for posting updates to the Serial Protocol!

Any chance there's more detail forthcoming relating to menu navigation? The syntax of the MSB and MSV commands suggests both commands are written to allow two (optional) parameters, but thus far it seem only MSB does nothing with passed values and MSV only uses the second passed value ("MSV,,3", for example, takes the fourth selection in a menu.)

It would be nice to be able to navigate directly to any menu by using the menu's Index (the "Set Scan Location" menu, for example, has an Index of "4293034776". I was hoping the first parameter of the MSV command was an Index parameter allowing direct navigation to any menu, but this doesn't seem to be the case. :-(

I've posted a reply to a menu navigation question (turning full db on/off) in the "BCD436HP/BCD536HP Serial Commands List" forum thread, and in that reply I provided a link to a quick Menu Navigation demonstration video: https://youtu.be/vdvvxOi8RjA

-rbn
 

scanboyca

Member
Joined
Sep 12, 2014
Messages
56
I have been experimenting with the new Menu commands with my BCD536HP. The MSV command syntax as you mentioned is used to select a specific item in the current menu tree. The MSV command is also used to enter a selected value (Ex. Priority Interval which requires the user to enter an integer value. To enter the value when the scanner is prompting for the value, the second parameter provides the value.

Ex. With the Priority Scan -> Set Interval item selected, the scanner expect a value in seconds to be entered. To enter a value of 5 seconds, send the command:

MSV,,5
 

rbn_rr

Member
Joined
Feb 7, 2015
Messages
41
I have been experimenting with the new Menu commands with my BCD536HP. The MSV command syntax as you mentioned is used to select a specific item in the current menu tree. The MSV command is also used to enter a selected value (Ex. Priority Interval which requires the user to enter an integer value. To enter the value when the scanner is prompting for the value, the second parameter provides the value.

Ex. With the Priority Scan -> Set Interval item selected, the scanner expect a value in seconds to be entered. To enter a value of 5 seconds, send the command:

MSV,,5

Kudos, ScanBoyCA! Great find!

In the Priority Interval you describe, the MSI command will display the following:

MSI,<XML>,
<?xml version="1.0" encoding="utf-8"?>
<MSI Name="Set Interval" Index="4293000216" MenuType="TypeInput" Value="2" >
<MenuInput MaxLength="2" AddedInformation=" (sec)" EnableKeys="0123456789" />
<Footer No="1" EOT="1"/>
</MSI>

An "MSI.MenuType" of "TypeInput" means just that...it's time for the user to type some input. As you've discovered, it's SO much easier to input your entry from your computer than directly on a BCDx36 keypad.

"MenuInput.EnableKeys" shows which characters are valid for entry, and "MenuInput.MaxLength" tells you how many characters are allowed. "MenuInput.AddedInformation" even tells you what to append to the entry field in your GUI if you want to match what's displayed on the BCDx36 screen.

It gets even better when your entry is longer strings of characters. If, for example, you want to set your GPS location manually to (42.346, -71.084) (I'm in Boston for a week as I write this...greetings from Boston!) you could use the LCR (get/set Location and Range) command and set your location directly using "LCR,42.346,-71.084," (if you don't specify a third parameter, the range will be unchanged..."LCR,lat,long.range" is the syntax, so "LCR,,5" would leave your location unchanged and set your Range to 5 miles.)

If you'd rather use Menu Navigation to set your GPS location, you can do the following:
MNU (to enter Menu Mode)
MSV,,3 (to select the "Set Your Location" menu item -- counting from 0, it's number 3) (See Note1 below)
MSV,,3 (to select the"Set Manual Location" menu item)

At this point, MSI will tell you you're on an input screen:

MSI,<XML>,
<?xml version="1.0" encoding="utf-8"?>
<MSI Name="Input Latitude" Index="4293024736" MenuType="TypeLocation" Value="0.000000" >
<MenuLocation IsLatitude="1" MaxLength="10" EnableKeys="0123456789.-" />
<Footer No="1" EOT="1"/>
</MSI>

Maximum length is 10, and in addition to the digits 0-9 the characters "." and "-" are also allowed. Using ScanBoyCA's handy discovery, the following commands will enter the latitude value:

MSV,,42.346
(for kicks, try something like "MSV,,UNIDEN" and see what happens...MSI won't tell you much here, GSI will. Sort of strange that you get an OK response here, when your input clearly wasn't OK. "KEY,E,P" gets you back to where you were...)
(MSI again if you want to here, useful to get current values, characters allowed, max length, etc. for your UI)
MSV,,-71.084

At this point, the BCDx36 may "go to sleep" (from your computer's) point of view for a while -- if the scanner has to update from the database based on location, the BCDx36 screen will show a status bar and the serial interface won't respond to any commands. If you issue a "PSI,1000" command prior to sending the longitude command, you'll get an update every second from the scanner with progress bar status:

PSI,<XML>,
<?xml version="1.0" encoding="utf-8"?>
<ScannerInfo Mode="Menu tree" V_Screen="plain_text">
<ViewDescription>
<PlainText />
<PlainText />
<PlainText />
<PlainText />
<PlainText />
<PlainText />
<PopupScreen Text="Now Loading...&#xD;Load Full Database&#xD;Nationwide&#xD; ">
<ProgressBar Value="94" />
</PopupScreen>
</ViewDescription>
</ScannerInfo>

The MSV command can be used to its greatest effectiveness when you need to enter long strings of alphanumeric text. Continuing the location example, navigate to the "Save Location" menu via the following:

MNU
MSV,,3
MSV,,7 (to select the "Save Location" menu)

You'll now be on the "Input Name" screen. MSI should return the following:

MSI,<XML>,
<?xml version="1.0" encoding="utf-8"?>
<MSI Name="Input Name" Index="4293024876" MenuType="TypeInput" Value="" >
<MenuInput MaxLength="64" EnableKeys="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890[\]^_`{|}~!&quot;#$%&amp;&apos;()*+,-./:;&lt;=&gt;?@ " />
<Footer No="1" EOT="1"/>
</MSI>

As you an see, you can enter up to 64 characters of numeric, uppercase alpha, lowercase alpha and a number of symbol characters.

Now the fun begins! (Of course, this will likely only feel like "fun" to you if you've gone through the tedious process of entering text using the BCDx36 keypad!)

To set the Location Name to "Sheraton (Boston MA)", simply execute the following:

MSV,,Sheraton (Boston MA)

The BCDx36 serial interface GREATLY expands the usefulness of the 436/536 scanners. If you've read this far, hopefully it means you're interested in controlling your scanner via your computer...and, hopefully you're already experimenting!

If there's interest, I'll post some sample code written using the free "Processing" framework (available at www.processing.org) to demonstrate some of the capabilities and some of the fun of controlling your BCDx36 via your computer. Processing is available for Mac, Windows and Linux, so everyone should be covered. I have the latest version of Processing running on a Raspberry Pi, so easy control of your BCDx36 from the Pi is possible. :)

I don't want to spam the forums with posts that aren't relevant to others...so if you *are* interested in BCDx36 computer control, post a follow-up and say so!

-rbn


--------------------------------
Note1: You could also send "KEY,>,P" 3 times to navigate down to the "Set Your Location" menu and then send "KEY,E,P" to simulate pressing the "E" button to choose that menu...but why would you? :)
 

klinquist

Member
Premium Subscriber
Joined
Jan 20, 2008
Messages
48
Looks like this is a 2-3 year old thread, but I'd love to see more code samples and updated firmware details! I am experimenting with controlling my 536HP over UDP.

When I send PSI,1000 I don't seem to get regular updates. I am *also* running ProScan, can the 536HP handle >1 client/session?
 

jonwienke

More Info Coming Soon!
Joined
Jul 18, 2014
Messages
13,409
Location
VA
When I send PSI,1000 I don't seem to get regular updates. I am *also* running ProScan, can the 536HP handle >1 client/session?

No. If you want multiple clients you need a machine running Proscan or equivalent to go between the 536 and the multiple clients.
 

ProScan

Software Provider
Premium Subscriber
Joined
Jul 2, 2006
Messages
7,535
Location
Ontario, Calif.
Looks like this is a 2-3 year old thread, but I'd love to see more code samples and updated firmware details! I am experimenting with controlling my 536HP over UDP.

When I send PSI,1000 I don't seem to get regular updates. I am *also* running ProScan, can the 536HP handle >1 client/session?

Yes, more then 1 connection using the Wi-Fi data. Unlike a RS-232 port that handles only one connection at a time. Wi-Fi audio handles only one connection at a time.
 
Last edited:
Status
Not open for further replies.
Top