Symbol mc1000开发体验
拿到一個motorola mc1000的盤點機,本想在開發程序與普通桌面程序差不多,也可能是思維沒有轉變過來,總有種找不到出路的感覺。經過10天的摸索,終于修成正果了。現將過程記錄如下:
一、準備工作
1、? 我用的開發環境是的vs2008。
2、? 下載Symbol開發包,雖然盤點機是motorola牌子的,但開發包的名稱還是叫Symbol。下載地址:https://docs.symbol.com/downloads/SMDK-M-1.07.03.exe
3、? 安裝PC機與盤點機的通信軟件Microsoft ActiveSync 4.5 中文版安裝。
二、選擇數據庫
環境安裝好了,很興奮,以為這就可以開發程序了。剛開始確實挺順利的,建個空窗體,編譯正常,還可以部署上機子上,正常運行。接下來,按照開發Windows程序的思路開始動作了。
剛開始數據庫選擇了sqlite3,也挺好用的,主要是因沒有機子,所以寫的是winform程序,讀取數據庫,保存數據都正確。結果等拿到機子后,傻眼了。機子不支持sqlite數據庫,要安裝wince版本的運行庫,試了幾個沒有成功,可能是與我用的vs2008有關。由于是新手,也不知道怎么修正,就換了microsoft推薦的sqlce數據庫。Sqlce數據庫在wince上能使用,同樣也可以開發winform程序,導出數據后,然后拷到wince上使用。本來想用文本文件然后再到wince上,再保存到sqlce數據庫中,結果發現速度太慢。
后來發現,由于商品信息格式相對固定,還不如保存到Arraylist中,然后通過二分法查找。實際測試的結果,速度還是挺快的,這是我最滿意的結果。
三、激光掃描
程序好了,讀取商品信息,保存盤點結果,一切正常。高興呀O(∩_∩)O~。拿了條碼一試,天那,不發紅光,要暈倒了。
因為剛開始不知道要安裝symbol開發包。從網上搜索motorola開發,沒有找到想要的結果,后來想到motorola收購了symbol,會不會是symbol開發呢?結果正是想要的。下載安裝,查看例子。發現寫的測試條碼掃描功能的例子,太復雜了。結果就直接用barcode控件,挺好,功能正常。繼續設置屏幕亮度,壞了,包有沖突。繼續查看例子,去掉不必要的代碼,到最后才發現,只有幾行代碼是有效的,太經典了。定義編量
private Symbol.Barcode.Reader MyReader = null;
private Symbol.Barcode.ReaderData MyReaderData = null;
初始化
private void InitRead()
??????? {
??????????? MyReader = new Symbol.Barcode.Reader();
??????????? MyReaderData =
?????? ??????new Symbol.Barcode.ReaderData(Symbol.Barcode.ReaderDataTypes.Text,
???????????? Symbol.Barcode.ReaderDataLengths.DefaultText);
??????????? MyReader.ReadNotify += new EventHandler(MyReader_ReadNotify);//定義接收事件
??????????? MyReader.Actions.Enable();
? ??????????MyReader.Actions.Read(MyReaderData);
??????? }
顯示掃描的條碼
??????? private void MyReader_ReadNotify(object sender, EventArgs e)
??????? {
??????????? txt_barcode.Text = MyReaderData.Text;
??????????? txt_barcode.Focus();
??????????? txt_barcode.Select(13, 1);
??????????? MyReaderData.Dispose();//這一句很重要,一定要釋放內存
??????????? //以下兩句話,實現連續掃碼功能
??????????? MyReaderData = MyReader.GetNextReaderData();
??????????? MyReader.Actions.Read(MyReaderData);
、??????? }
到此程序完成,可以正常使用。
四、部署到盤點機
通過vs開發環境部署程序中可以看到需要安裝哪些CAB包,把這些包拷到機子上,運行,提示‘不是一效的windows ce安裝程序’,暈了。最后才發現是我拷的目錄不正確。因為機子空間太小,所以想拷到擴展卡上安裝,結果又繞了彎路,有一些包必須在系統目錄下才能安裝。
MC1000的機型應用程序的安裝需要以下幾個CAB文件:
a) NETCFv2.wce5.armv4i.cab,這是.NET Compact Framework v2.0的一個安裝包;或者NETCFv35.wce.armv4.cab ,這是.NET Compact Framework v3.5 的一個安裝包;
b) symbol.all.arm.cab,這是SYMBOL的一個安裝包,在Symbol提供的軟件開發包中;
c) sqlce30.dev.CHS.wce5.armv4i.CAB,sqlce30.repl.wce5.armv4i.CAB,sqlce30.wce5.armv4i.CAB,這三個CAB安裝包是SQL CE數據庫必須的。如果不是有SQL CE 數據庫,則這些文件不需要安裝。
System_SR_CHS.CAB,這是調試用到的一個安裝包,不是必須的。
用.NET制作的應用程序部署到PDA上之前,必須安裝.NET Compact Framework v2.0 或者.NET Compact Framework v3.5。由實際設備項目程序開發的版本來定,也就是上面的安裝包,此外還要裝SYMBOL的一個安裝包(symbol.all.arm.cab),這些都是運行應用程序必須的環境。如果沒有用到SQL CE,則其他幾個安裝包不是必須的。
由于CAB包在安裝后,如果沒有設置為只讀,系統會自動刪除,所以就想寫一個自動調用的程序,安裝后就會刪除這些包了,那么下次就不會再安裝了,如果機子冷啟動了,就再次拷貝這些CAB包,為的是節省系統空間(勞神呀)。
在startup目錄下增加installcab.run。內容類似下面內容Wceload /NOASKDEST /Application/CAB/NETCFv2.wce5.armv4i.cab,但當再次啟動時會提示找不到cab文件,不理想。
繼續查資料,發現可以在注冊表中增加啟動安裝項。在application下增加netct.reg,內容如下:
; For Windows CE .NET devices
[HKEY_CURRENT_USER/Software/Symbol/Startup/Programs/Prog14]
"Name"="/windows/wceload.exe"
"Command"="/noaskdest /Application/cab/NETCFv2.wce5.armv4i.cab"
"Continue"=dword:0
"ColdBootOnly"=dword:1
這兩種方法只有在冷啟動時才執行,因而不能滿足要求。
后來發現可以用bat文件,放在StartUP目錄下,內容類似Wceload /NOASKDEST /Application/CAB/NETCFv2.wce5.armv4i.cab,這樣每次啟動機子都會執行,也就實現自動安裝功能了。
五、其它知識
.cpy文件拷貝快捷方式命令如下例:
/application/PDlnk.lnk??? >??? /%WSM%/PDlnk.lnk
/application/PDlnk.lnk??? >??? /%WDT%/PDlnk.lnk
注:Windows System
Windows DeskTop
.cpy文件是冷啟時用來復制文件到指定目錄的命令文件。CE系統快捷方式為.lnk文件,命令行中必須使用全名(包含后綴),否則失敗。
.lnk文件直接通過ActiveSync由設備拷貝出來即可。
六、安裝程序
程序一般都很小,還要設置快捷方式,又不想做成CAB包(主要是VS2003制作CAB太不方便了),所以就采用了一種另類的方法。把程序拷到PDA中,設置好快捷方式,然后把部署需要的CAB包,及程序和快捷方式對應的目錄結構拷下來。當PDA冷啟動,數據丟失后,直接把這些文件拷到機了上,重啟一下,就會自動安裝了。
QQ:80294551
總結
以上是生活随笔為你收集整理的Symbol mc1000开发体验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4G网卡驱动调试-ec20
- 下一篇: 【Code pratice】—— 纸牌三