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.
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. |
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 |
Name | Description |
---|
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". |
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) |
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 |
<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.
<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}') & 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}') & 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>