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