Programming Guide for UHF 860 v1.0 October 18, 2011 1 DATA BYTES 0~255 BYTES Error Check CRC16_Low 1 BYTE CRC16_Hi 1 BYTE Communications protocol Communications Baud Rate is 115200-8-N-1. Master Query Package (HOST) Data length 0~255 1 BYTE 0~255 1 BYTE Query Function Address 0~255 1 BYTE Header SOH 1 BYTE Field Desc Size Note:
SOH Address = Device Address (Slave Machine ID) Slave Response Package (DEVICE)
= 01h. Field Desc Size Header SOH 1 BYTE Address 0~255 1 BYTE Response Function ACK / NAK / EVN 1 BYTE Data length 0~255 1 BYTE DATA BYTES Error Check CRC16_Low CRC16_High 0~255 BYTES 1 BYTE 1 BYTE
= 01h. Note:
SOH Address = Device Address (Slave Machine ID) ACK NAK EVN
= 06h, Acknowledge (Passive, in response to Master message)
= 15h, Negative Acknowledge (Passive, in response to Master message)
= 12h, Event Message(Active, For One Host to One Device Connection) 2 Response NAK Code Table (Common) Data Bytes Func NAK NAK NAK NAK NAK NAK NAK NAK Len 1 1 1 1 1 1 1 1 E0h E4h E6h E7h ECh EDh EEh EFh Description Access Denied Illegal Query Code Overrun, Out of record count CRC Error Query Number no support Out Of Memory Range Address Number out of range Unknown Response Event (For Active Slave) Desc Event Func 12h Len n Active Response (Slave) Data Bytes Customer Event Code or Data 3 Commands Table Query (Master/Host) Parameters CMD
(Hex)
(n chars) Response (Slave/Device) Data Bytes
(n bytes) Commands Get Firm-/Hardware 0x10 Value (1 byte) Return OEM Version String ID Active Mode Set Antenna Output Power Write Register Read Register Set Channel CONTROL DIDO 0x12 0x18 0x1A 0x1C 0x1E 0x20 Write EEPROM 0x22 Update EEPROM To Register Read EEPROM Select Tag 0x22 0x24 0x33 Write Tag Data 0x35 Read Tag Data 0x37 0x3B 0x3D 0x41 Lock Tag Kill Tag Set Frequency Get Frequency Setting Description Value 0Firmware 1Hardware ID=0 :Standalone ID=1 : GUI PA/Power Auto Down Control Set Register Datas to Address Get Register Mode ID (1 byte) Return EPC Datas (n bytes) PWR(1byte) 0 Address(1 byte) Datas (1~3 bytes) Address (1byte) Replied as 0x00 (1 byte) rfu (reserved for further use) Datas(n bytes) CN(1byte) Channel Number(1 byte) Set Channel DO Channel/Enable
(2 bytes) High Addr (1 byte) Low Addr (1 byte) Value (1 byte) 0xFF (1 byte) 0xFF (1 byte)
[Value] (1 byte) High Addr (1 byte) Low Addr (1 byte) PC(2bytes) EPC(12bytes) MB(1byte) SA(1byte) AP(4bytes) DL(1bytes) DT(variable) MB(1byte) SA(1byte) DL(1bytes) LA(1bytes) LT(1bytes) AP(4bytes) KP(4bytes) Mask(1byte) Freq(3bytes) RSSI(1byte) DO/DI Status(1 byte) GET DI OR SET DO 0 0 0 0 Datas(n bytes) Datas(n bytes) 0 Profile ID (1 byte) ListenTime (2 bytes) MAX_Allocation (2 bytes) Idle Time (2 bytes) 4 After Write EEPROM you update EEPRom to register. must Value = any Read Tag Data specified memory bank. from Lock Tag 0x41 Mask(1byte) Min Frequency (3 bytes) Max Frequency (3 bytes) Num of Frequency (1 byte) RSSI Threshold (1 byte) Active number of Frequency (1 byte) Get Reflect Power Level 0x41 Mask(1byte) Freq(3bytes) I-Channel (1 byte) Q-Channel (1 byte) Inventory 0x43 Value(1 byte) Number of found tags (1 byte) RSSI (1 byte) Frequency (3 bytes) Length of EPC (1 byte) EPC (n bytes) CN (1 byte) Value=0x01 Start inventory round Value=0x01 0x02 RFU ConfigGen2 0x59 Set Sensitivity 0x59 Linkfreq set (1 byte) Linkfreq (1 byte) miller set (1 byte) Miller (1 byte) Session set (1 byte) Session (1 byte) trext set (1 byte) Trext (1 byte) qbegin set (1 byte) qbegin (1 byte) Sensitivity set (1 byte) Sensitivity (1 byte) Linkfreq set (1 byte) Linkfreq (1 byte) miller set (1 byte) Miller (1 byte) Session set (1 byte) Session (1 byte) trext set (1 byte) Trext (1 byte) qbegin set (1 byte) qbegin (1 byte) Sensitivity set (1 byte) Sensitivity (1 byte) Linkfrequency (1 byte) miller setting (1 byte) Session (1 byte) Trext (1 byte) qbegin (1 byte) Sensitivity (1 byte) Linkfrequency (1 byte) miller setting (1 byte) Session (1 byte) Trext (1 byte) qbegin (1 byte) Sensitivity (1 byte) 5 Func Data length Datas(1 byte) CRC 16 (2 bytes) Get Firm-/Hardware ID (0x10) Format SOH ID 0x00 0x10 0x01 0x00 ID (1 byte) Function (1 byte) Data length(1 byte) Datas (1 byte) Func = Function Data = 0x00Firmware , 0x01Hardware Example ASCII Hex 01 00 10 01 00 71 00 .....q. 01 FF 06 1D 55 48 46 38 36 30 20 52 65 61 64 65 ....UHF860 Reade 72 20 46 69 72 6D 77 61 72 65 20 31 2E 30 31 52 r Firmware 1.01R 30 75 26 0u&
6 Active Mode (0x12) Format SOH ID Func Data length Mode ID (1 byte) CRC 16 (2 bytes) SOH ID Func Data length Data (1 byte) CRC 16 (2 bytes) 0x2C Ch
(1 byte) 0x0D 0x0A 0x03 EPC Datas (n bytes) 0x02 ID (1 byte) Function (1 byte) Data length(1 byte) Mode ID (1 bytes) Func = Function Mode ID = 0x00 Standalone , 0x01GUI Ch = Channel NO. (0x00~0x03) Example 0x00 0x12 0x01 0x01 Hex 01 00 12 01 00 B1 A1 ....... ASCII 01 FF 06 01 00 A1 D1 02 33 31 43 31 30 43 32 31 .....31C10C21 30 35 30 32 39 37 34 31 30 36 36 31 32 32 30 32 0502974106612202 31 31 46 46 2C 33 0D 0A 03 11FF,3. This mean EPC (31C10C21050297410661220211FF) is inventory by channel No.3 7 Func Data length PWR (1 bytes) CRC 16 (2 bytes) Set Antenna Output Power (0x18) Format SOH ID ID (1 byte) Function (1 byte) Data length(1 byte) PWR (1 bytes) 0x00 0x18 0x01 0x00 (Disable) 0xFF (Enable) Write Register (0x1A) Format Func = Function Example Hex 01 00 18 01 00 B3 81 ....... ASCII 01 FF 06 01 00 A1 D1 ....... SOH ID Func Data length Addr Datas (1~3 bytes) CRC 16 (2 bytes) ID (1 byte) Function (1 byte) Data length (1 byte) Address (1 byte) Datas (1~3 bytes) Func = Function Addr=Address Example 0x00 0x1A 0x02 0x00 0x0F Hex ASCII 01 00 1A 02 00 0F DC C2 ........ 01 FF 06 01 00 A1 D1 ....... 8 Read Register (0x1C) Format SOH ID Func Data length Addr CRC 16 (2 bytes) 0x00 0x1C 0x01 0x00 Hex ASCII 01 00 1C 01 00 72 C0 .....r. 01 FF 06 04 0F 00 00 00 BD E6 .......... SOH ID Func Data length CN (1byte) CRC 16 (2 bytes) 0x00 0x1E 0x01 0x00 ID (1 byte) Function (1 byte) Data length (1 byte) Channel Number
(1 byte) Func = Function CN=Channel Number If you dont set any channel number to Device. Device will scan channel by sequential. (Ch1
~ CH4) Example Hex ASCII 01 00 1E 01 00 B2 61 ......a 01 FF 06 01 00 A1 D1 ....... 9 ID (1 byte) Function (1 byte) Data length (1 byte) Address (1 byte) Func = Function Addr=Address Example Set Channel (0x1E) Format CONTROL DIDO (0x20) Format SOH ID Func Data length DO Channel/Enable CRC 16 (2 bytes) 0x00 0x20 0x02 0x03 ID (1 byte) Function (1 byte) Data length (1 byte) DO Channel
(1 byte) DO Enable
(1 byte) Preserve DO Channel, Enable datas0x00 , 0x00 mean Get DI/DO Status Func = Function CN=Channel Number DO Channel (1 byte)4 bits to mean DO1~2 0x03 Bit 7 Bit 6 Bit 5 Bit 4 0 0 1 Ex. 00110001 => DO1 ON Ex. 00110011 => DO1, DO2 ON Ex. 00110011 => DO1, DO2,DO4 ON 1 Bit 3 0 Bit 2 0 Bit 1 DO2 Bit 0 DO1 Do Enable (1 byte)4 bits to mean DO1~2 Enable Bit 7 Bit 6 Bit 5 Bit 4 0 0 Ex. 00110001 => DO1 Enable Ex. 00110011 => DO1, DO2 Enable 1 1 Bit 3 0 Bit 2 0 Bit 1 DO2 Bit 0 DO1 Replay DIDO Status(1 byte) Bit 7 x Bit 6 x Bit 5 DO2 Bit 4 DO1 Bit 3 DI4 Bit 2 DI3 Bit 1 DI2 Bit 0 DI1 Example Hex ASCII 01 00 20 02 03 03 F1 CE .. .... 01 FF 06 01 3F B1 91 ....?.. 10 Write EEPRom (0x22) Format SOH ID Func Data length Addr_Hi Addr_Low data (1byte) CRC 16 (2 bytes) 0x00 0x22 0x03 0x00 ID (1 byte) Function (1 byte) Data length (1 byte) Address High byte
(1 byte) Address Low byte
(1 byte) Data (1 byte) Func = Function Addr_Hi=Address high byte Addr_Low=Address low byte Example 0x00 0x01 Update EEPROM To Register (0x22) Format ID Func SOH 0x00 0x22 0x03 0xFF ID (1 byte) Function (1 byte) Data length (1 byte) Address High byte
(1 byte) Address Low byte
(1 byte) Data (1 byte) Func = Function Addr_Hi=Address high byte Addr_Low=Address low byte 0xFF 0x00 Hex ASCII 01 00 22 03 00 00 01 98 39 ..".....9 01 FF 06 01 01 61 10 .....a. Data length Addr_Hi Addr_Low data (1byte) CRC 16 (2 bytes) 11 Example Hex ASCII 01 00 22 03 FF FF 00 98 89 .."...... 01 FF 06 01 FF E1 91 ....... SOH ID Func Data length Addr_Hi Addr_Low CRC 16 (2 bytes) Read EEPRom (0x24) Format 0x00 0x24 0x03 0x00 ID (1 byte) Function (1 byte) Data length (1 byte) Address High byte
(1 byte) Address Low byte
(1 byte) Func = Function Addr_Hi=Address high byte Addr_Low=Address low byte Example 0x00 ASCII Hex 01 00 24 02 00 00 30 8F ..$...0. 01 FF 06 01 01 61 10 .....a. 12 Select Tag (0x33) Format SOH ID Func Data length PC(2bytes) EPC(12bytes) CRC 16 (2 bytes) 0x00 0x33 0x0E 0x3000 0x001F3411B802111176348076 ID (1 byte) Function (1 byte) Data length(1 byte) PC (2 bytes) EPC (12 bytes) Func = Function Data = 0x00Firmware , 0x01Hardware Example Hex ASCII 01 00 33 0E 30 00 00 1F 34 11 B8 02 11 11 76 34 ..3.0...4.....v4 80 76 FF 12 .v.. 01 FF 06 01 09 A7 11 ....... Set Frequency (0x41) Format SOH ID Func Data length Mask(1byte) Freq(3bytes) RSSI(1byte) CRC 16 (2 bytes) 0x00 0x41 0x05 0x08 0x5E 0xC6 0x0D (902750 kHz) Low byte, Mid byte , High byte 0xD8 [-40 dBm => 256 + (-40) = 0xD8 ]
ID (1 byte) Function (1 byte) Data length (1 byte) Mask (1 byte) Frequency
(3 bytse) RSSI (1 byte) Func = Function Mask 0x00: No specific value; - measurement skipped no valid dates in response Mask 0x01: RSSI scan 13 Mask 0x02: reflected power scan Mask 0x04: turn hop mode on; - add the frequency to the List Mask 0x08: turn hop mode off clear the List Mask 0x10: set LBT params Example Hex ASCII 01 00 41 05 08 5E C6 0D D8 84 07 ..A..^..... 01 FF 06 3E FE FF 00 00 00 00 00 00 00 00 00 00 ...>............ ............... 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................ 00 00 57 40 ..W@
Get Frequency Setting (0x41) Format SOH ID Func Data length Mask (1 byte) CRC 16 (2 bytes) SOH ID Func Listen Time High byte MinFreq High byte MAX Allocation Low byte MaxFreq Low byte ID (1 byte) Function (1 byte) Data length (1 byte) Mask (1 byte) Func = Function Get frequency hopping related parameters 0x00 0x41 0x01 0x11 Data length Idle Time Low byte MaxFreq High byte RFU (2 bytes) Idle Time High byte Profile ID
(1 byte) MinFreq Low byte Listen Time Low byte MinFreq mid byte NumFreq RSSI Threshold ActFreq MAX Allocation High byte MaxFreq mid byte RFU (n bytes) CRC 16 (2 bytes) 14 Example ASCII Hex 01 00 41 01 11 AC 91 ..A.... 01 FF 06 3E FE FF 03 01 00 90 01 00 00 5E C6 0D ...>.........^.. 12 26 0E 32 D8 32 00 00 00 00 00 00 00 00 00 00 .&.2.2.......... 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 69 5C ..i\
Get Reflect Power Level (0x41) Format ID (1 byte) Function (1 byte) Data length (1 byte) Mask (1 byte) Frequency
(3 bytse) Func = Function Mask 0x02: reflected power scan Example SOH ID Func Data length Mask(1byte) Freq(3bytes) CRC 16 (2 bytes) SOH ID Func Data length I-Channel
(1byte) Q-Channel
(1byte) RFU
(n bytes) CRC 16
(2 bytes) 0x00 0x41 0x05 0x02 0x5E 0xC6 0x0D (902750 kHz) Low byte, Mid byte , High byte Hex 01 00 41 04 02 5E C6 0D DE 17 ..A..^.... ASCII 01 FF 06 3E B5 0A 00 00 00 00 00 00 00 00 00 00 ...>............ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 4E 35 ..N5 15 Inventory (0x43) Format SOH ID Func Data length Value(1byte) CRC 16 (2 bytes) ID Func Data length Number of found tags (1 byte) RSSI (1 byte) Frequency (3 bytes) Length of EPC (1 byte) EPC (n bytes) CN (1 byte) CRC 16
(2 bytes) SOH ID (1 byte) Function (1 byte) Data length (1 byte) Value (1 byte) Func = Function CN = Channel Number Example 0x00 0x43 0x01 0x01 Hex ASCII 01 00 43 01 01 A0 31 ..C...1 01 FF 06 15 01 BE 0A D4 0D 0E 30 00 00 1F 34 11 ..........0...4. B8 02 11 11 76 34 80 76 02 C9 1B ....v4.v... 16 Get ConfigGen2 Setting (0x59) Format Linkfreq set (1 byte) Linkfreq (1 byte) miller set (1 byte) Miller (1 byte) Session set (1 byte) Session (1 byte) trext set (1 byte) Trext (1 byte) qbegin set (1 byte) qbegin (1 byte) Sensitivity set (1 byte) Sensitivity (1 byte) SOH ID Func Data length CRC 16 (2 bytes) 0x00 (RFU 1byte) Link frequency (1 byte) 0x00 (RFU 1byte) miller setting (1 byte) 0x00 (RFU 1byte) Session (1 byte) 0x00 (RFU 1byte) Trext (1 byte) 0x00 (RFU 1byte) qbegin (1 byte) 0x00 (RFU 1byte) Sensitivity (1 byte) SOH ID Func Data length CRC 16
(2 bytes) 0x00 ID (1 byte) 0x59 Function (1 byte) 0x0C Data length (1 byte) Link freq set (1 byte) 0x00 0x00 Link freq (1 byte) 0x00 miller set (1 byte) Miller (1 byte) 0x00 0x00 Session set (1 byte) 0x00 Session (1 byte) trext set (1 byte) 0x00 0x00 Trext (1 byte) 0x00 qbegin set (1 byte) qbegin (1 byte) 0x00 Sensitivity set 0x00
(1 byte) Sensitivity (1 byte) 0x03 Func = Function CN = Channel Number linkfrequency set0 = 40 kHz, 3 = 80 kHz not AS3992, 6 = 160 kHz, 8 = 213 kHz, 9 = 256 kHz, 17 12 = 320 kHz, 15 = 640 kHz miller setting0 = FM0, 1 = Miller2, 2 = Miller4, 3 = Miller8 session0 = S0, 1 = S1, 2 = S2, 3 = SL trext0 = short preamble, pilot tone, 1 = long preamble, pilot tone qbegin0 .. 15. Initial gen2 round is 2^qbegin long. Please be careful with higher values. Sensitivity for channel access-90 .. -48 (dBm) Example Hex 01 00 59 0C 00 00 00 00 00 00 00 00 00 00 00 03 2B 48 +H ASCII
..Y............. 01 FF 06 3E 00 06 00 01 00 00 00 00 00 00 00 B9 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 BF ..U. ..>............ ............... ............... ............... 18 Set Sensitivity (0x59) Format Linkfreq set (1 byte) Linkfreq (1 byte) miller set (1 byte) Miller (1 byte) Session set (1 byte) Session (1 byte) trext set (1 byte) Trext (1 byte) qbegin set (1 byte) qbegin (1 byte) Sensitivity set (1 byte) Sensitivity (1 byte) SOH ID Func Data length CRC 16 (2 bytes) 0x00 (RFU 1byte) Link frequency (1 byte) 0x00 (RFU 1byte) miller setting (1 byte) 0x00 (RFU 1byte) Session (1 byte) 0x00 (RFU 1byte) Trext (1 byte) 0x00 (RFU 1byte) qbegin (1 byte) 0x00 (RFU 1byte) Sensitivity (1 byte) SOH ID Func Data length CRC 16
(2 bytes) 0x00 ID (1 byte) 0x59 Function (1 byte) 0x0C Data length (1 byte) Link freq set (1 byte) 0x00 0x00 Link freq (1 byte) 0x00 miller set (1 byte) Miller (1 byte) 0x00 0x00 Session set (1 byte) 0x00 Session (1 byte) trext set (1 byte) 0x00 0x00 Trext (1 byte) 0x00 qbegin set (1 byte) qbegin (1 byte) 0x00 Sensitivity set 0x01
(1 byte) Sensitivity (1 byte) 0xB9 ( -71 dBm = 0xB9 0x100) Func = Function CN = Channel Number linkfrequency set0 = 40 kHz, 3 = 80 kHz not AS3992, 6 = 160 kHz, 8 = 213 kHz, 9 = 256 kHz, 19 12 = 320 kHz, 15 = 640 kHz miller setting0 = FM0, 1 = Miller2, 2 = Miller4, 3 = Miller8 session0 = S0, 1 = S1, 2 = S2, 3 = SL trext0 = short preamble, pilot tone, 1 = long preamble, pilot tone qbegin0 .. 15. Initial gen2 round is 2^qbegin long. Please be careful with higher values. Sensitivity for channel access-90 .. -48 (dBm) Example Hex 01 00 59 0C 00 00 00 00 00 00 00 00 00 00 01 B9 08 C8 ASCII
..Y............. 01 FF 06 3E 00 06 00 01 00 00 00 00 00 00 00 B9
...>............ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................ 00 00 55 BF ..U. 20 Parameter EEPROM Address 21 22 23 24 25