前年用vs2008開發wince 追溯程序的時候,因為人家設備提供商給了技術支持,而且程序一路使用都比較順利,除了無線條碼打印開發遇到點困難之外。再有就是一開是用wince上的sql server存儲數據,但是后來發現這是一個嚴重的錯誤,因為設備是分布在各個工廠,而且wince 這個系統冷啟動之后什么都恢復了,這里說一下我開始用的設備是mc3090,所以后來考慮使用webservice來做這個數據 訪問和存儲的,這樣可以實施分布式同步。
可是最近,公司成品倉庫也要使用移動設備出庫,所以也買了一個同樣的設備,當我幫助銷售組在設備上開發布置的時候,我考慮都沒有考慮就把程序布置上去了,可是一運行不行錯了。運行到myreader.Actions.Enable的時候,出現了UnmarshalStructInfoForm錯誤,但是網上找好久的,都沒有有解決答案,而且很多開發者因為自己解決了這個問題,很簡單的就講解一下。
不過我也找到了根本原因那就是:我現在MC3100是MC3090的升級版,系統是wince6.0的而之前是5.0的。說要下載emdk,EMDK其實是SMDK的一個升級版,這里我就很納悶,你說軟件至少要有一個向前兼容吧,也許跟android一樣2.3到4.0的時候也會來個質的飛躍,但是android是性能上的提升啊。
好吧速度去找emdk的下載地址,果然網上有很多,去摩托羅拉的官網吧,真是病急亂投醫下載了一個EMDK for .NET v2.1,悲劇了,按照網上的步驟,怎么也沒有解決,有點氣餒啊。
終於在msdn上找到答案了:http://social.msdn.microsoft.com/Forums/zh-CN/windowsembeddedcezhchs/thread/fce5059a-7f59-4ae2-b58f-f1edca29df47,人家說要裝emdk,我一開始以為要裝到wince上,但是想想不對,java c#開發sdk都是裝在我們電腦上的,而且如果裝在設備上,冷啟動不是要重裝嗎。
下載emdk:https://docs.symbol.com/KanisaPlatform/Publishing/465/13209_f.html?userId=37
然后裝電腦上,趕快運行看看吧。。
1 using System; 2 using System.Linq; 3 using System.Collections.Generic; 4 using System.ComponentModel; 5 using System.Data; 6 using System.Drawing; 7 using System.Text; 8 using System.Windows.Forms; 9 10 namespace test1 11 { 12 public partial class Form1 : Form 13 { 14 Symbol.Barcode.Reader myReader; 15 Symbol.Barcode.ReaderData myReaderData; 16 public Form1() 17 { 18 myReader = new Symbol.Barcode.Reader(); 19 myReaderData = new Symbol.Barcode.ReaderData( 20 Symbol.Barcode.ReaderDataTypes.Text, 21 Symbol.Barcode.ReaderDataLengths.DefaultText); 22 myReader.Actions.Enable(); 23 myReader.Actions.Read(myReaderData); 24 InitializeComponent(); 25 } 26 } 27 }
好期待啊,應該完成了吧,可是,錯誤還是出現了,好氣餒啊。
搜索繼續找答案,找到了,我們還是要在設備上安裝一個組件symbol.all.arm.cab,找到我們emdk的安裝目錄:
D:\Program Files\Motorola EMDK for .NET\v2.5\Windows CE\MassDeployment\CE.NET,下面有我們需要安裝的組件。
把這個組件拷貝到我們wince設備上,然后在設備上安裝,如果是安裝emdk for .net 2.1的時候會提示與系統不兼容,安裝完之后,我們還要把兩個程序集拷貝到我們項目下面(這個一般在wince \windows目錄下面),Symbol.ddl,Symbol.Barcode.ddl。然后再運行上面這段程序,終於成功了(現在想想這種打補丁的方式開發系統還是真討厭,不過目前我們軟件開發好多都是打補丁式的升級)。最近老忙了,幸好周末有時間,記錄下來,希望對大家有幫助。
