2014-01-20 47 views
1

我們正在開發使用RFID標籤和摩托羅拉919Z手持閱讀器客戶定製的固定資產的解決方案同時訪問EPC和用戶內存的銀行。到目前爲止,它一直進展順利,因爲我們基於摩托羅拉的EMDK示例。我們正在使用VB.NET。如何在RFID標籤(摩托羅拉EMDK + .NET)

問題是,我們有一套Confidex Steelwave標籤,因爲它們是硬標籤,因此它們不能在打印機中進行標記,因此它們使用示例軟件進行標記,將相關數據保存到USER存儲庫中,而另一個使用Zebra RZ400打印機標記不同的可打印Confidex標籤集,並將相關數據寫入EPC標籤ID字段。現在

,我們被要求閱讀這兩個領域(EPC標籤ID在一種情況下,在其他用戶memorybank),在同一時間。也就是說,如果相關數據在USER存儲區中被標記,則標記ID包含不相關的十六進制數字,並且如果使用了EPC標記ID,則USER存儲區爲空或零填充。現在

,我們找不到在停止讀取和交換銀行(軟件),同時無需用戶讀取兩岸的方式,所以我們想知道,如果它擺在首位,甚至有可能。

我不知道我是否應該張貼的代碼,因爲它是有點長......也許相關的部分是:

如果我們使用 Inventory.Perform ...它不讀USER內存庫,它似乎沒有采取訪問過濾器

如果我們使用 OperationSequence.PerformSequence ...它迫使您指定內存條。

謝謝你的時間。

+0

你有沒有找到解決這個問題的方法? – Dai

+0

我找到了另一種方式來做到這一點,我不得不停止使用觸發自動啓動一個清單,而是不得不趕觸發事件,啓動計時器,開始對EPC銀行的庫存,則定時器將停止庫存,切換到USER銀行然後重新啓動庫存,每0.3毫秒左右並按下觸發器。 可怕的黑客,但它的作品足夠好。不爲它感到自豪。 – KalaNag

回答

0

我有同樣的問題,我找到了解決辦法。

使用OperationSequence.PerformSequence,但訣竅是先添加多個操作。因此,添加讀取用戶銀行的操作,然後添加其他操作,讀取EPC銀行,像這樣:

RFIDReader reader = new RFIDReader(); 
reader.Connect(); 

MEMORY_BANK[] banks = new MEMORY_BANK[] { 
    MEMORY_BANK.MEMORY_BANK_EPC, 
    MEMORY_BANK.MEMORY_BANK_USER, 
    MEMORY_BANK.MEMORY_BANK_RESERVED, 
    MEMORY_BANK.MEMORY_BANK_TID 
}; 
foreach(MEMORY_BANK bank in banks) { 
    TagAccess.Sequence.Operation op = new TagAccess.Sequence.Operation(); 
    op.AccessOperationCode = ACCESS_OPERATION_CODE.ACCESS_OPERATION_READ; 
    op.ReadAccessParams.MemoryBank = bank; 
    reader.Actions.TagAccess.OperationSequence.Add(op); 
} 

然後只需撥打reader.Actions.TagAccess.OperationSequence.PerformSequence,那麼你會得到每家銀行Read事件,每個標籤,只要標籤在掃描儀的可讀距離內。

+0

你測試過這個,它適合你嗎?因爲當我遇到這個問題時,我嘗試了另一個版本,而不是使用foreach,我定義了兩個操作對象,每個對象都有自己的MEMORY_BANK,然後將它們添加到序列中,但它不起作用... – KalaNag

+0

@ KalaNag是的,我測試了它,它適用於我 - 我能夠從我的標籤中獲取來自所有銀行的數據。 「沒有工作」是什麼意思?您是否指定了Reader選項/配置以在每個「Read」事件中返回標籤數據? – Dai

0

您需要在標記庫存之前執行操作序列,您必須在其中設置內存庫。每當您啓動庫存後,您將在MemoryBankData屬性中的tagID屬性和內存庫數據中獲取EPC。