2013-12-12 50 views
0

我目前正在連接Impinj高速公路閱讀器220,並且我有2個天線連接到它。當看到標籤時,LLRP Impinj無法看到天線端口

當我加載Impinj MultiReader應用程序並切換顯示天線端口時,它會將RFID標籤被讀取的天線返回到應用程序。

我目前使用C#連接到閱讀器(儘管我相信所有語言的SDK都是相似的)。以下是我使用的示例代碼,但是我不知道哪個配置選項會啓用讀取天線端口的功能。

有人請讓我知道哪個配置選項打開選項,以便AntennaID與標籤一起返回嗎?

 MSG_ERROR_MESSAGE msg_err; 
     MSG_ADD_ROSPEC msg = new MSG_ADD_ROSPEC(); 

     // Reader Operation Spec (ROSpec) 
     msg.ROSpec = new PARAM_ROSpec(); 
     // ROSpec must be disabled by default 
     msg.ROSpec.CurrentState = ENUM_ROSpecState.Disabled; 
     // The ROSpec ID can be set to any number 
     // You must use the same ID when enabling this ROSpec 
     msg.ROSpec.ROSpecID = 123; 

     // ROBoundarySpec 
     // Specifies the start and stop triggers for the ROSpec 
     msg.ROSpec.ROBoundarySpec = new PARAM_ROBoundarySpec(); 
     // Immediate start trigger 
     // The reader will start reading tags as soon as the ROSpec is enabled 
     msg.ROSpec.ROBoundarySpec.ROSpecStartTrigger = 
     new PARAM_ROSpecStartTrigger(); 
     msg.ROSpec.ROBoundarySpec.ROSpecStartTrigger.ROSpecStartTriggerType = 
     ENUM_ROSpecStartTriggerType.Immediate; 
     // No stop trigger. Keep reading tags until the ROSpec is disabled. 
     msg.ROSpec.ROBoundarySpec.ROSpecStopTrigger = new PARAM_ROSpecStopTrigger(); 
     msg.ROSpec.ROBoundarySpec.ROSpecStopTrigger.ROSpecStopTriggerType = 
     ENUM_ROSpecStopTriggerType.Null; 

     // Antenna Inventory Spec (AISpec) 
     // Specifies which antennas and protocol to use 
     msg.ROSpec.SpecParameter = new UNION_SpecParameter(); 

     PARAM_AISpec aiSpec = new PARAM_AISpec(); 
     aiSpec.AntennaIDs = new UInt16Array(); 

     // Enable all antennas 
     aiSpec.AntennaIDs.Add(0); 
     // No AISpec stop trigger. It stops when the ROSpec stops. 
     aiSpec.AISpecStopTrigger = new PARAM_AISpecStopTrigger(); 
     aiSpec.AISpecStopTrigger.AISpecStopTriggerType = ENUM_AISpecStopTriggerType.Null; 
     aiSpec.InventoryParameterSpec = new PARAM_InventoryParameterSpec[1]; 
     aiSpec.InventoryParameterSpec[0] = new PARAM_InventoryParameterSpec(); 

     aiSpec.InventoryParameterSpec[0].InventoryParameterSpecID = 1234; 
     aiSpec.InventoryParameterSpec[0].ProtocolID = ENUM_AirProtocols.EPCGlobalClass1Gen2; 

     aiSpec.InventoryParameterSpec[0].AntennaConfiguration = new PARAM_AntennaConfiguration[1]; 
     aiSpec.InventoryParameterSpec[0].AntennaConfiguration[0] = new PARAM_AntennaConfiguration(); 
     aiSpec.InventoryParameterSpec[0].AntennaConfiguration[0].RFTransmitter = new PARAM_RFTransmitter(); 
     aiSpec.InventoryParameterSpec[0].AntennaConfiguration[0].RFTransmitter.HopTableID = 1; 
     aiSpec.InventoryParameterSpec[0].AntennaConfiguration[0].RFTransmitter.ChannelIndex = 1; 
     aiSpec.InventoryParameterSpec[0].AntennaConfiguration[0].RFTransmitter.TransmitPower = 91; // Max power of 32.5 dbm 
     aiSpec.InventoryParameterSpec[0].AntennaConfiguration[0].RFReceiver = new PARAM_RFReceiver(); 
     aiSpec.InventoryParameterSpec[0].AntennaConfiguration[0].RFReceiver.ReceiverSensitivity = 1; // 1= -80 (the max), 2 = -70, etc. 

     msg.ROSpec.SpecParameter.Add(aiSpec); 

     // Report Spec 
     msg.ROSpec.ROReportSpec = new PARAM_ROReportSpec(); 
     // Send a report for every tag read 
     msg.ROSpec.ROReportSpec.ROReportTrigger = 
     ENUM_ROReportTriggerType.Upon_N_Tags_Or_End_Of_ROSpec; 
     msg.ROSpec.ROReportSpec.N = 1; 
     msg.ROSpec.ROReportSpec.TagReportContentSelector = new PARAM_TagReportContentSelector(); 

     MSG_ADD_ROSPEC_RESPONSE rsp = reader.ADD_ROSPEC(msg, out msg_err, 2000); 

回答

3

我終於發現瞭如何去做。

在上述例子中我只是刪除

msg.ROSpec.ROReportSpec.TagReportContentSelector = new PARAM_TagReportContentSelector(); 

並用

PARAM_TagReportContentSelector reportContent = new PARAM_TagReportContentSelector(); 
reportContent.EnableAntennaID = true; 

msg.ROSpec.ROReportSpec.TagReportContentSelector = reportContent; 
取代它