<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns:MadCap="http://www.madcapsoftware.com/Schemas/MadCap.xsd" MadCap:lastBlockDepth="6" MadCap:lastHeight="94" MadCap:lastWidth="853" MadCap:disableMasterStylesheet="true" MadCap:tocPath="" MadCap:InPreviewMode="false" MadCap:PreloadImages="false" MadCap:RuntimeFileType="Topic" MadCap:TargetType="WebHelp" lang="en-us" xml:lang="en-us" MadCap:PathToHelpSystem="../../../" MadCap:HelpSystemFileName="Default.xml" MadCap:SearchType="Stem"> <head><title>DEBUGIN</title> <link href="../../SkinSupport/MadCap.css" rel="stylesheet" /> <link href="../../Resources/Stylesheets/BSE_Help.css" rel="stylesheet" /> <script src="../../SkinSupport/MadCapAll.js" type="text/javascript"> </script> </head> <body> <h1 class="code">DEBUGIN</h1> <div class="ImagePlusCaption"> <div class="Col2"> <p> <img src="../../graphics/pgm_icon2.gif" border="0" alt="BS2 icon" title="BS2 icon" /> <img src="../../graphics/pgm_icon2e.gif" border="0" alt="BS2e icon" title="BS2e icon" /> <img src="../../graphics/pgm_icon2sx.gif" border="0" alt="BS2sx icon" title="BS2sx icon" /> <img src="../../graphics/pgm_icon2p.gif" border="0" alt="BS2p icon" title="BS2p icon" /> <img src="../../graphics/pgm_icon2pe.gif" border="0" alt="BS2pe icon" title="BS2pe icon" /> <img src="../../graphics/pgm_icon2px.gif" border="0" alt="BS2px icon" title="BS2px icon" /><span class="code_in_text"> {PBASIC 2.5}</span> </p> </div> <p style="text-align: right;"><a href="../ExampleTopics/DebugDebuginEx.htm" target="" title="" alt="" class="MCXref_0" xrefformat="{paratext}">DEBUG / DEBUGIN Example</a> </p> <p> </p> </div> <p class="clear"> </p> <p> </p> <p class="PlainText">Syntax: <span class="keyword_in_text">DEBUGIN</span> <![CDATA[ ]]><i>InputData</i></p> <h2>Function</h2> <p class="PlainText">Retrieve information from the user via the Debug Terminal window within the BASIC Stamp editor program. </p> <ul> <li value="1"><b><i>InputData</i></b> is list of variables and formatters that tells <span class="keyword_in_text">DEBUGIN</span> what to do with incoming data. <span class="keyword_in_text">DEBUGIN</span> can store data in a variable or array, interpret numeric text (decimal, binary, or hex) and store the corresponding value in a variable, wait for a fixed or variable sequence of bytes, or ignore a specified number of bytes. These actions can be combined in any order in the <i>InputData</i> list.</li> </ul> <h2>Quick Facts<br /></h2> <table width="100%" cellpadding="4" cellspacing="0" border="1"> <tr bgcolor="#CFCFCF"> <td width="20%" align="center"> </td> <td width="40%" align="center">BS2, BS2e, BS2sx, BS2p, and BS2pe</td> <td width="40%" align="center">BS2px</td> </tr> <tr> <td align="center" bgcolor="#CFCFCF">Serial Protocol</td> <td align="center">Asychronous 9600 baud, N, 8, 1<br></br>Inverted polarity, Raw Data</td> <td align="center">Asychronous 19.2 kBaud, N, 8, 1<br></br>Inverted polarity, Raw Data</td> </tr> <tr> <td align="center" bgcolor="#CFCFCF">Related Commands</td> <td align="center" colspan="2"> <p colspan="2" align="center"><a href="DEBUG.htm" target="" title="" alt="" class="MCXref_0" xrefformat="{paratext}">DEBUG</a>, <a href="SERIN.htm" target="" title="" alt="" class="MCXref_0" xrefformat="{paratext}">SERIN</a></p> </td> </tr> </table> <h2>Explanation</h2> <p class="PlainText"><span class="keyword_in_text">DEBUGIN</span> provides a convenient way for your BASIC Stamp accept input from the use via the Debug Terminal. <span class="keyword_in_text">DEBUGIN</span> can wait for, filter and convert incoming data in powerful ways, using the same techniques and modifiers as <a href="SERIN.htm" target="" title="" alt="" class="MCXref_0" xrefformat="{paratext}">SERIN</a>. </p> <p class="PlainText">This simple example waits for a number from the user, then prints a message the specified number of times: </p><pre class="BScode" xml:space="preserve"> lines VAR Nib idx VAR Nib Main: DEBUG CLS, "How many lines to print (1 - 5)? --> " DEBUGIN DEC1 lines IF ((lines >= 1) AND (lines <= 5)) THEN DEBUG CR, CR FOR idx = 1 TO lines ' print message specified times DEBUG DEC1 idx, ". " DEBUG "BASIC Stamp!", CR NEXT END ' end of program ELSE DEBUG CR, "Invalid entry!" ' warning message PAUSE 2000 ' wait 2 seconds GOTO Main ' get another entry ENDIF </pre> <p class="PlainText">After you download this program, the BASIC Stamp Editor will open a Debug Terminal on your PC screen and wait for an entry from the user. Since the DEC1 modifier is used with <span class="keyword_in_text">DEBUGIN</span>, the program will ignore all keys except "0" - "9". If the value entered is between 1 and 5, the message will be printed, otherwise the program will display an "Invalid entry" message, then loop back and wait for another entry.</p> <p class="PlainText"><span class="keyword_in_text">DEBUGIN</span> is actually a special case of the <span class="keyword_in_text">SERIN</span> instruction. It is set for inverted (RS-232-compatible) serial output through the programming connector (the SIN pin) at 9600 baud (BS2, BS2e, BS2sx, BS2p, and BS2pe) or 19.2 kBaud (BS2px), no parity, 8 data bits, and 1 stop bit. For example,</p><pre class="BScode" xml:space="preserve"> DEBUGIN DEC1 lines </pre> <p class="PlainText">...is exactly like:</p><pre class="BScode" xml:space="preserve"> SERIN 16, $4054, [DEC1 lines] </pre> <p class="PlainText">...in terms of function (on a BS2). The <span class="keyword_in_text">DEBUGIN</span> line actually takes less program space, and is obviously easier to type.</p> <p class="PlainText">The tables below list all the available conversion formatters and special formatters available to the <span class="keyword_in_text">DEBUGIN</span> command. See the <a href="SERIN.htm" target="" title="" alt="" class="MCXref_0" xrefformat="{paratext}">SERIN</a> command for additional information and examples of their use.</p> <table width="100%" cellpadding="4" cellspacing="0" border="1"> <tr bgcolor="#CFCFCF" align="center" valign="top"> <td width="15%">Conversion Formatter</td> <td width="45%">Type of Number</td> <td width="30%">Numeric Characters Accepted</td> <td width="10%">Notes</td> </tr> <tr align="center"> <td>DEC{1..5}</td> <td>Decimal, optionally limited to 1 - 5 digits</td> <td>0 through 9</td> <td>1</td> </tr> <tr align="center"> <td>SDEC{1..5}</td> <td>Signed decimal, optionally limited to 1 - 5 digits</td> <td>-, 0 through 9</td> <td>1,2</td> </tr> <tr align="center"> <td>HEX{1..4}</td> <td>Hexadecimal, optionally limited to 1 - 4 digits</td> <td>0 through 9, A through F</td> <td>1,3</td> </tr> <tr align="center"> <td>SHEX{1..4}</td> <td>Signed hexadecimal, optionally limited to 1 - 4 digits </td> <td>-, 0 through 9, A through F</td> <td>1,2,3</td> </tr> <tr align="center"> <td>IHEX{1..4}</td> <td>Indicated hexadecimal, optionally limited to 1 - 4 digits</td> <td>$, 0 through 9, A through F</td> <td>1,3,4</td> </tr> <tr align="center"> <td>ISHEX{1..4}</td> <td>Signed, indicated hexadecimal, optionally limited to 1 - 4 digits</td> <td>-, $, 0 through 9, A through F</td> <td>1,2,3,4</td> </tr> <tr align="center"> <td>BIN{1..16}</td> <td>Binary, optionally limited to 1 - 16 digits</td> <td>0, 1</td> <td>1</td> </tr> <tr align="center"> <td>SBIN{1..16}</td> <td>Signed binary, optionally limited to 1 - 16 digits</td> <td>-, 0, 1</td> <td>1,2</td> </tr> <tr align="center"> <td>IBIN{1..16}</td> <td>Indicated binary, optionally limited to 1 - 16 digits</td> <td>%, 0, 1</td> <td>1,4</td> </tr> <tr align="center"> <td>ISBIN{1..16}</td> <td>Signed, indicated binary, optionally limited to 1 - 16 digits</td> <td>-, %, 0, 1</td> <td>1,2,4</td> </tr> <tr align="center"> <td>NUM</td> <td>Generic numeric input; hex or binary number must be indicated</td> <td>$, %, 0 through 9, A through F</td> <td>1,3,4</td> </tr> <tr align="center"> <td>SNUM</td> <td>Similar to NUM with value treated as signed with range -32768 to +32767</td> <td>-, $, %, 0 through 9, A through F</td> <td>1,2,3,4</td> </tr> </table> <ol> <li value="1">All numeric conversions will continue to accept new data until receiving either the specified number of digits (ex: three digits for DEC3) or a non-numeric character.</li> <li value="2">To be recognized as part of a number, the minus sign (-) must immediately precede a numeric character. The minus sign character occurring in non-numeric text is ignored and any character (including a space) between a minus and a number causes the minus to be ignored.</li> <li value="3">The hexadecimal formatters are not case-sensitive; "a" through "f" means the same as "A" through "F".</li> <li value="4">Indicated hexadecimal and binary formatters ignore all characters, even valid numerics, until they receive the appropriate prefix ($ for hexadecimal, % for binary). The indicated formatters can differentiate between text and hexadecimal (ex: ABC would be interpreted by HEX as a number but IHEX would ignore it unless expressed as $ABC). Likewise, the binary version can distinguish the decimal number 10 from the binary number %10. A prefix occurring in non-numeric text is ignored, and any character (including a space) between a prefix and a number causes the prefix to be ignored. Indicated, signed formatters require that the minus sign come before the prefix, as in -$1B45.</li> </ol> <p> </p> <table width="100%" cellpadding="4" cellspacing="0" border="1"> <tr bgcolor="#CFCFCF" align="center" valign="top"> <td width="150">Special Formatter</td> <td>Action</td> </tr> <tr> <td align="center">STR ByteArray \L {\E}</td> <td>Input a character string of length L into an array. If specified, an end character E causes the string input to end before reaching length L. Remaining bytes are filled with 0s (zeros).</td> </tr> <tr> <td align="center">WAITSTR ByteArray {\L}</td> <td>Wait for a sequence of bytes matching a string stored in an array variable, optionally limited to L characters. If the optional L argument is left off, the end of the array-string must be marked by a byte containing a zero (0).</td> </tr> <tr> <td align="center">SKIP Length</td> <td>Ignore Length bytes of characters.</td> </tr> </table> <p> </p> <p> <img src="../../graphics/bs2ppepx_inline.gif" border="0" /> <br /> </p> <p> <br /> </p> <table width="100%" cellpadding="4" cellspacing="0" border="1"> <tr bgcolor="#CFCFCF" align="center" valign="top"> <td width="150">Special Formatter</td> <td>Action</td> </tr> <tr> <td align="center">SPSTR L</td> <td>Buffer length L bytes (up to 126) of serial characters to Scratchpad RAM, starting at location 0. Use <a href="GET.htm" target="" title="" alt="" class="MCXref_0" xrefformat="{paratext}">GET</a> to retrieve the characters.</td> </tr> </table><pre class="BScode" xml:space="preserve"> idx VAR Nib char VAR Byte Setup: DEBUG CLS, "Enter (4-character) passcode: " Main: DEBUGIN SPSTR 4 DEBUG CLS, "Checking: " FOR idx = 0 TO 3 GET idx, char DEBUG char NEXT END </pre> <p class="PlainText">The example above will redirect four characters from the Debug Terminal input to Scratchpad locations 0 - 3.</p> <div class="Col2"> <div class="MasterFoot"> <p MadCap:conditions="BSEconditions.BSEWebHelp (Primary)-INCLUDE"><a href="../../HomeTopics/HomePage.htm">Go to Welcome page</a> </p> </div> </div> <div class="Col2"> <div class="MasterFoot"> <p style="text-align: right;"><span class="ContactInfoProjectName">BASIC Stamp Help</span> <![CDATA[ ]]><span class="ContactInfoVersion#">Version 2.5.4</span> <![CDATA[ ]]></p> <p style="text-align: right;">Copyright © <span class="ContactInfoCompanyName">Parallax Inc.</span></p> <p style="text-align: right;"><span class="SystemShortDate">8/8/2012</span> </p> </div> </div> <script type="text/javascript">/* <![CDATA[ */ var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-285614-1']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); /* ]]> */</script> <script type="text/javascript" src="../../SkinSupport/MadCapBodyEnd.js"> </script> </body> </html>