Zebra - AppDaddy-Software-Solutions-Inc/framework-markup-language GitHub Wiki

<ZEBRA/> : DataSource

This datasource is used to connect with Zebra handheld scanners for reading barcodes or reading/writing RFID tags.

Attributes

Name Type Default Description Req
mode string ("barcode","rfid","mixed") "mixed" In "mixed" mode, both rfid tags and barcodes are returned to the datasource when scanned or discovered. In "barcode" mode, only scanned barcodes are returned and "rfid" tags are ignored. Similarly, In "rdif" mode, only discovered rfid "tags" are returned to the datasource and scanned "barcodes"are ignored.

Properties

Name Type Default Description
connected boolean false Automatically set to true when the device is connects to the zebra library. If not a zebra capable device, connected will always be false.
scanning boolean false Automatically set to true when the device is scanning for tags
tracking boolean false Automatically set to true when the device is tracking tags
busy boolean false Automatically set to true when the device is tracking tags or scanning

Events

Name Description

Methods

Name Description
start(mode,tags) where mode (optional) is "scanning" (default) or "tracking" and tags (optional) is a comma seperated list of tacks to track. RFID capable devices only. See "scan()" and "track()" below
stop() Stops "scanning" (default) or "tracking". RFID capable devices only.
scan() Same as start("scanning"). The device enabled the barcode reader and for RFID capable devices, listens for rfid tags. Scanning is continuous until a barcode is read, stop() is called, or release of the gun trigger. Returned tags are ordered by RSSI (closest to furthest).
track(tags) Same as start("tracking", tags). The device tracks only those tags in the comma seperated list of tag epc identifiers. Each time a tag is discoved it is immediately returned to the app. Tracking is continuous until stop() or release of the gun trigger. Returned tags are ordered by RSSI (closest to furthest)
write(epc (string), epcNew (string), password (int), passwordNew (int), data (string)) Used to write an epc tag. Parameter epc is the only required parameter. Typically, if the user wishes to change the tags epc, the would call write(epc, epcNew). If the tag is password protected, the password paraneter is required. Unlike traditional passwords, RFID tag passwords are restricted to integer values. To change a passwqord, the user would call write(epc, epc, password, passwordNew, null) where passwordNew is the integer value of the new password. Subsequent calls to write reuired the new password in palce of "password".

Bindables (Barcodes)

Name Description
eventSource The source of the read (rfidapi3, datawedge, unknown)
barcode The barcode read
seen The data and time the barcode was read
format The format of the barcode "CODE129, QRCODE, etc)

Bindables (RFID Tags)

Name Description
eventSource The source of the read (rfidapi3, datawedge, unknown)
epc The barcode read
rssi The relative signal strength. Values closer to 0 are physically closer to the reader.
seen The date and time the rfid tag was detected
memoryBankData The data stored on the tag
lockData The lock data stored on the tag

Examples

Example #1 : Reading a Barcode
<ZEBRA id="DB1" maxrecords="2"/>
<BOX>
		<BOX height="80" />
		<TEXT label="Read Result: {DB1.data.barcode:0}"  color="black" size="11"/>
                <TEXT label="Read Result: {DB1.data.barcode:1}"  color="black" size="11"/>
</BOX>

An example outlining a bindable uri field called '99' in the NFC data.

Example #2 : Reading RFID tags
<FML title="ZEBRA (example1)" linkable="true" layout="stack" center="true" keywords="epc zebra">

  <VAR id="tags" value="=length({scanner.data})"/>
  <ZEBRA id="scanner"/>

  <BOX margin="10" padding="5" radius="5" borderlabel="Scanned Tags">
    <SCROLLER>
      <BOX radius="5" margin="5" padding="10" expand="false" bordercolor="black" data="scanner" halign="left"> 

        <ROW expand="false">
          <INPUT id="epc"  value="{data.epc}"  width="250" hint="epc"  editable="false"/>
        </ROW>

        <ROW expand="false" valign="center" halign="left">
          <VAR id="x1" value="=substring({epc},14,17)"/>  
          <VAR id="x2" value="=toInt('0x{x1}') &amp; toInt('0x3ff')"/>    
            <INPUT id="rssi" value="{data.rssi}" width="100"  hint="rssi" editable="false" size="24"/>
          <INPUT value="{x2}" width="100" length="24" hint="plant" editable="false"/>
        </ROW>

        <ROW expand="false" valign="center">
          <VAR id="x3" value="=substring({epc},8,15)"/>  
          <VAR id="x4" value="=(toInt('0x{x3}') &amp; toInt('0x3fffffc')) >> 2"/>    
          <INPUT value="{x4}" width="250" length="24" hint="asset" editable="false"/>
        </ROW>

        <ROW expand="false" valign="center">
          <VAR id="x5" value="=substring({epc},17,24)"/>  
          <VAR id="x6" value="=toInt('0x{x3}')"/>     
          <INPUT value="{x6}" width="250" length="24" hint="sequence" editable="false"/>
        </ROW>    

        <ROW center="true">
          <BUTTON type="elevated" onclick="scanner.clear(); scanning.set(true);  scanner.track('{data.epc}');" label="TRACK" width="200"/>          
        </ROW>  
      </BOX>    

    </SCROLLER>        
  </BOX>

  <BUSY visible="{scanner.busy}" width="50" height="50"/>
  
  <POSITIONED bottom="10">
    <BOOL id="scanning" value="false"/>
    <BUTTON type="elevated" onclick="scanner.clear(); scanning.set(true);  scanner.start('scanning');" label="START SCANNING" width="200" visible="=!{scanning}" color="green" margin="0,0,10,0"/>  
    <BUTTON type="elevated" onclick="scanning.set(false); scanner.stop();"  label="STOP"  width="200" visible="={scanning}"  color="red"   margin="0,0,10,0"/>  
  </POSITIONED>
</FML>

logo See it in Action

Other Widgets You May Find Useful

⚠️ **GitHub.com Fallback** ⚠️