2013-03-01 144 views
3

我想爲Motorolo MC 9190 G移動設備開發簡單的應用程序,它具有內置的條碼掃描器,我想掃描條碼並將它們顯示在信息框中。我沒有手機,所以我必須在模擬器中測試它。當我在模擬器中部署代碼時,它會給出null異常錯誤。我的代碼是 我添加sample.barcode DLLWindows Mobile應用程序條碼掃描與模擬器

Private barcodeReader As Symbol.Barcode.Reader // error occurs here itself 
barcodeReader = New Symbol.Barcode.Reader() 
barcodeReader.Actions.Enable() 
Dim nextReaderData As Symbol.Barcode.ReaderData = barcodeReader.GetNextReaderData() 
MessageBox.Show(nextReaderData.Text) 

我毫米初學者到這個..請幫助..

+0

您的模擬器是否有條形碼讀取器?你如何模仿閱讀條形碼? – jp2code 2013-03-02 21:43:56

回答

3

您需要創建沿着這些線路接口和模擬的東西:

interface IBarcodeReader 
{ 
    string ReadBarcode(); 
} 

public class SymbolReader : IBarcodeReader 
{ 
    private Reader m_reader; 

    public SymbolReader() 
    { 
     m_reader = new SymbolReader.Barcode.Reader; 
     m_reader.Actions.Enable(); 
    } 

    public string ReadBarcode() 
    { 
     return m_reader.GetNextReaderData().Text; 
    } 
} 

public class MockReader : IBarcodeReader 
{ 
    public string ReadBarcode() 
    { 
     return "MOCK ABCDE"; 
    } 
} 

然後在運行時,使用一些邏輯來確定你的平臺,並創建相應的實例:

public class Foo 
{ 
    IBarcodeReader Reader { get; set; } 

    public Foo() 
    { 
     if (ThisIsASymbolDevice) 
     { 
      Reader = new SymbolReader(); 
     } 
     else 
     { 
      Reader = new MockReader(); 
     } 

     var barcode = Reader.ReadBarcode(); 
    } 
} 
+0

很好的解決方法。由於模擬器不知道也不支持條形碼讀取器,因此不能在模擬器上使用符號DLL和運行時。通過使用兼容層,您可以模擬您認爲真實硬件將提供的內容。 – josef 2013-03-01 17:59:12

+0

而我們也可以在OpenNETCF.IoC模塊中實現SymbolReader,MyOwnScanner作爲服務;-) – hellboy 2013-03-25 09:18:22

+1

@hellboy:當然! DI容器總是一件好事。 – ctacke 2013-03-25 13:51:52