阿爾泰科技ARM8603主板WinCE部分說明書_第1頁
阿爾泰科技ARM8603主板WinCE部分說明書_第2頁
阿爾泰科技ARM8603主板WinCE部分說明書_第3頁
阿爾泰科技ARM8603主板WinCE部分說明書_第4頁
阿爾泰科技ARM8603主板WinCE部分說明書_第5頁
已閱讀5頁,還剩46頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

阿爾泰科技ARM8603主板WinCE部分說明書一.測試主板錯誤!未定義書簽。二、利用VS2005開發(fā)工具編寫HelloWorld程序錯誤!未定義書簽。三、LED及蜂鳴器測試程序錯誤!未定義書簽。四、串口操作錯誤!未定義書簽。五、網(wǎng)口操作錯誤!未定義書簽。六、CAN操彳錯誤!未定義書簽。附錄一、NANDFLASH的格式化錯誤!未定義書簽。附錄二、開機(jī)時(shí)自動啟動用戶程序錯誤!未定義書簽。附錄三、休眠喚醒錯誤!未定義書簽。北京阿爾泰科技發(fā)展有限公司BeijingArtTechnologyDevelopmentCo.,Ltd.環(huán)境要求:⑴Windows操作系統(tǒng)(自行配置)(2)VisualStudio2005⑶MicrosoftActiveSync(免費(fèi)軟件,位于光盤"工具"->"ActiveSync").測試主板準(zhǔn)備:先將顯示屏連接到主板的LCD接口上,然后用RS-232交叉電纜線將主板的調(diào)試串口(CN11)與PC機(jī)連接起來。測試:1、串口測試(1)打開串口調(diào)試工具(或PC機(jī)自帶的超級終端),設(shè)置串口如下:打開文件I西石串口號三]命關(guān)閉串口|幫助波特率數(shù)據(jù)位串口號三]命關(guān)閉串口|幫助波特率數(shù)據(jù)位停止位校噓位流控制11幽s-Nqpg▼Mone二rDTRr定時(shí)量送口把喘諾字符串輸入框rFITS廠及送新行wv^j.imcuE1.comS:0R:08"說明:串口選才i為你使用PC機(jī)上的串口號指示燈亮,串口已打開。連接電源,啟動主板,在串口調(diào)試工具中可以看見如下圖所示的信息:,與文口-干一,工作者上景山Nt丁T】.iUThtTprZ/TTW.BcufiL.cn?,E.1JIJU-LitkL?甘虱1?卜UK口*L0?innQ£5tuftingWz辱*,s,,HlvLeiQozkl3J-lxMilIcl門口二kis燙HiMaUtCltcklsKM)5J9南任鞫胴前吊第Iff怒杓的時(shí)啊州加15dj證里L(fēng)^tS正?陣選潞混箱伊1IWB懂西障到辭1苗伴T痛專集仙古?FE乏哂'咄弓鈴M用程卿J)一七通我腺中頊壓均恒力如累至羊在曜百逕箔登T丁佗的整建麥窟史晾彥1三些梏吃i1nmiideLn?f?iMidiinSyLenjtealy!Prtp*iifcg.ftrdawriL&aa..Imis-Uiecii1nmiideLn?f?iMidiinSyLenjtealy!Prtp*iifcg.ftrdawriL&aa..Imis-Uieciin?fl?h....tTani.lFldvLdTclIiut':llevicalHe:tBionDrlC|Dfi^r口零".>L0*0£dE11I0LOMD10CkUMO.LJMOCJSLMl.UJCMOOsHLV*^I.4J>1flCKSl^r?UK.占mW:m占mW:m:,.關(guān)?吊口|襁bWWW.MCU51.CO^擴(kuò)庭|謝糅13,初&謝糅13,初&田鼠二泊國I▼枝船位叵二▼流控制刖rDTFPKFE景送字殍串步入揖:|]西聚日玩運(yùn)I球迎序月與I?生口新式丁且辛5性者背小信(TT1量新虐占下茯地址:kt.Ip1a<tn/laqTJio-qee?nh次世俎id您的建承,E;T65小知已FT開”F200g『scn>QE;T65說明:串口調(diào)試工具窗口出現(xiàn)信息說明調(diào)試串口已通。等待3秒后,將進(jìn)入啟動初始化硬件設(shè)備階段,可以看見如下圖所示的一系

列信息:必需才卬13-?《作君:聶小手41if「1.j£AlMtp;//irwT.■tpmfi1ain<raj比一.;如MJkzidJlas、LcvLar&lZiLLl:Zkvi.IflgEiET|Bc:vOmBATOC\o"1-5"\h\z□EKIKiiixUJ出皿3口川"』C.dHU』m?c4-4檔,"CkQlD][g.4UriEin〃二ph/口】IJfcsuj(porte1Cr永OffJ01WJ-4-4-vi"7icD1D1于6-11勺^PUlnvar-Sf£_Eiikt■Oant*ztDriv?r&\Ac11ya4-nEHTft~mirFil1航加制西汽4匚c"(lw]^i]UMI=dkvi*甘匚?口]口]景91P5名OEHIcCfxatialULeu^pdat?1CcJxiOklD]DO£B-kvie0iChcOlD]土皿2簽PU,i“CUebii?因OGkMHKeIN190001CimlEisetJwnitlfr<injSec^slz^rLilrriLLU]UhipsgmbuviilUMgIeILU■HlKTJr中*MaieTrq,tl,口MLs"于grB】Uj3.ULcdPdd._ltLIHUiinliEHIHn-Zill1laidecOHTICl?efaa■的%EiG涮HiefliTterCLflnfci等盥新KSNHe芭口U4lat?rrjyLlniI.配m訃EuXlpF*-Fflldr?r■Uhd^Fvirv紀(jì)重”的。〒****J^mriA.,》??!■'戶?*?Wl*ad,1rii:tni"+i.?nT曜匕Qlrivcrs)<_Ilrivurc-hsbdIk-v打開空忤I度砰石一,主送至忤?財(cái)/口|jsfttrajr0顯王黃rDTR廠PITSm步出|l皿mW.JKFlKil廠-中用中]卜+口同mtssror?卡古看葉適rmW驛顯上下氫歧址-http//*¥*//岳】七小“PhUtJorJ/■>%wnfBf家過錢匕悠的士承」由口府手苻田喻人中:I_/匯|lZ37556本口弓扇F?卻腳口I種IWWW,^CV51£<?^Eliiw*物常位?!棺U/田“ipr^L<?n:QE-W37E1已打開I日CTFin西?。FIRE(4)當(dāng)出現(xiàn)下圖所示的信息時(shí),主板啟動完成:(4)當(dāng)出現(xiàn)下圖所示的信息時(shí),主板啟動完成:這時(shí)在主板顯示屏上我們可以看見如下圖所示的開機(jī)畫面這時(shí)在主板顯示屏上我們可以看見如下圖所示的開機(jī)畫面:如果啟動后屏幕顯示不正常,只顯示一部分,原因可能是LCD屏的尺寸選擇沒有和系統(tǒng)設(shè)定的相匹配。這時(shí)需要重新啟動系統(tǒng),保證調(diào)試串口與PC機(jī)正常連接,打開串口調(diào)試工具,然后在啟動的過程中單擊PC鍵盤的空格鍵,進(jìn)行Wince的BOOT,如下圖所示,根據(jù)提示信息通過鍵盤輸入z,選擇該選項(xiàng),會有提示信息EntertypesofLCD[0-255]:,在其后輸入連接屏的尺寸,如選擇6.4寸屏就輸入3,選定后輸入s進(jìn)行保存,然后重啟,就可以顯示正常了。測試用戶串口系統(tǒng)啟動后,將PC機(jī)的串口連接線與主板的用戶串口相連。首先,打開PC機(jī)的串口調(diào)試工具,設(shè)置串口號為本PC機(jī)的串口號,設(shè)置波特率為115200。然后,在主板的我的設(shè)備-->NandFlash下執(zhí)行RS323下的RS232_Test程序,選擇COM端口為“COM1:",選擇BaudRate,可根據(jù)用戶要求選擇,與PC機(jī)的一致即可,本例為“115200”,設(shè)置完成后單擊Open按鈕,連接成功則在Statu編程框中顯示"OpenCOM1:Success!"。最后,在編輯框中輸入要發(fā)送的數(shù)據(jù),如:,單擊Send按鈕,查看PC機(jī)串口調(diào)試工具的接收區(qū),顯示為,則該程序運(yùn)行正常。同時(shí),可通過PC機(jī)的串口調(diào)試工具向主板發(fā)送數(shù)據(jù),在CommMFC程序的接收區(qū)中將顯示出發(fā)送的信息。如下圖所示:該主板上共有8個串口,一個調(diào)試串口,5個RS232串口(2個三線制、1個五線制、2個九線制)及2個RS485串口。主板上硬件接口與軟件上定義的串口號對應(yīng)關(guān)系如下:RS232串口CN14—COM1、CN18一兩個口三線串口COM2和COM4、CN7—COM5、CN8-COM6,RS485串口CN9對應(yīng)于COM7和COM8,具體的管腳定義請參見硬件說明書,根據(jù)管腳定義自制串口連接線,分別選擇對應(yīng)的串口進(jìn)行測試即可:

關(guān)閉此應(yīng)用程序之前先執(zhí)行“Close”操作關(guān)閉串口。RS485測試RS485測試?yán)帽竟咀约涸O(shè)計(jì)的DAM3000系列產(chǎn)品的應(yīng)用程序,測試方法如下:“程<1>將DAM3000系列模塊通過RS485接口與主板相連,執(zhí)行“我的設(shè)備“程序”“VS2005”“RS485”“DAM3000M”程序,彈出如下界面:<2>選擇“COM4”,執(zhí)行“開始查找”,查詢到后,在樹型框中將顯示查找到的DAM3000M系列的模塊信息,說明RS485已連接,單擊模塊信息,可彈出模塊的測試界面,如下所示:夏仃(Ej遍擊冷世tft窗口T昌三機(jī)界CO*11—帆通JPJ-I[3:口:即C5I畫LT;T昌三機(jī)界CO*11—帆通JPJ-I[3:口:即C5I畫LT;卜升林計(jì)拿T慨不單BiT中償壬是加久T裝中旱臉大T較不£片大T必字至柏兒器才阿輔人▼T|塔宇里希入田[二井新"|>F |?TS?A傳字也常/C[金字叁虛廠怪字早而人寬手里細(xì)訃JSTS^.A整字用鼻三"生吐什基憶感外用計(jì)里TRfli■卜粕開口計(jì)勤聯(lián)后計(jì)豹開I劭+的Hfti+&珀會計(jì)數(shù)RI5執(zhí)行鈕,點(diǎn)擊執(zhí)行鈕,點(diǎn)擊我的設(shè)備”->“NandFlash”->“PIO->“PIOTes腥序,測試LED,單擊“LED1'按“ON則LED1亮,點(diǎn)擊“OFF則LED1滅,觀察用戶燈的狀態(tài),與之相對應(yīng),用戶燈在主板上。測試背光控制,點(diǎn)擊背光控制”按鈕,顯示器將熄滅,2秒鐘后自動點(diǎn)亮。測試蜂鳴器,單擊蜂鳴器控制”按鈕,蜂口器將響100mS,狀態(tài)如圖所示:3、網(wǎng)口測試(1)用交叉網(wǎng)線將PC機(jī)和主板連接起來,在PC機(jī)端運(yùn)行命令ping4十(PC機(jī)的IP地址必須與主板的IP地址在同一網(wǎng)段內(nèi)),連接正??煽吹饺缦聢D窗口所示的信息:plvfrmiranron業(yè)]yf肚能力plvfrmiranron業(yè)]yf肚能力花91期ff帆plyfpun192.1bH710T14:bytes-?timeClnsll92.1£a.1.141:byl:E9-32tImeCln2192,1^0.1.14;by型於e192 hyEna^32七方小歸《Iim191.1611.1.14^byte?=3Ztifi?<lfksTTI-*12BTTL-12WTTL-12aTTL*12ftTTL-I2?TTL=1招imping192xlb?.1.14withJZJbyteucufdatai(2)在主板端的“我的設(shè)備一>ProgramFiles”路徑下雙擊“命令提示符",打開主板上的命令窗口,在此窗口中輸入ping+PC機(jī)IP地址的命令(方法同于在PC機(jī)上輸入命令,也要求主板與PC機(jī)的IP在同一網(wǎng)段內(nèi)),可以在主板上看見如下圖所示的信息:n尊也?奮手】軍用西)中親白匚?二山mS+屯8聞依?1HLIM1EB.i.iz:瓶不利文件■Bpltiicjpuff[-1e-lsc]("BM)lml[1]l|=1TH]I-VTO5]I"Ewcmc]0日力23-131±E-rj-rJ7TM.EOKSlTTilT?EQCDtsemidU3ux8tbe?酰皿」?i麗u。。工aFlruaQ<eapecitedhmuntilinxtEivced.出idbuiferS±E4.Seiucfirdnc.gn'tTuetoli^e-加厄n配mi配ni^jur|iti工niHEar心|RtEczdroute-Farronzot口cfis-rouretotecfljflT島匕”需事si上匚餐3皿片,子ujs,工丁fete-VL5JJ13Il\r4.l^tcEUruh』Iftdr?6舊fTg192.I6B.1.U:EeTb?31Ee?3iriu-LnsTTL*121Kcplj虹gL9獸就《h&L斯正曰W5^Ee=32tii±-l5i3TTL-125teasLA2.i6fl..L.jj£上。hn9^.se=J2tJ_i.-=-eJJU3TTL-lLirto&jjw.】@」」』!:IC3WClWlfiHE,1辦心ply1?2.1SS.1.12riJLjlfcijcrtk:st19Z.liiELL.iz(3)在主板端的“我的設(shè)備一>控制面板一>網(wǎng)絡(luò)和撥號連接”路徑下雙擊“DM9CE1出現(xiàn)如下圖所示的界面:

:屋址|名和R當(dāng)=1rHiki心反,而:=■法止31神帳吸,:乳%同工31:屋址|名和R當(dāng)=1rHiki心反,而:=■法止31神帳吸,:乳%同工31:TP曜址精曰僅二億*Iks迪的片WTK」;:(4)FTP服務(wù)nM^nnn/goooAfwiio帚FastEttwrnBlMantFrPC上打開IE瀏覽器,在其地址欄輸入即:〃4并回車。這時(shí)可見到主板的文件目錄,并可對其操作。界面如下上述配置完成以后,用戶可以直接點(diǎn)擊IP地址,然后切換頁面到名稱服務(wù)器,配置.愀u*wtej-ww血麗|闔|FTk|落|DNS(配置主DNS如里2上占用"HT-P,年工君時(shí)津金升睡讓可以目西酎配?拿匹uM由£通,書室算為¥;后感<1>用網(wǎng)線連接PC和主板。L<MDCxL巾地址痛口自上由加仄生,■打利?加星也若左法用靖不芾自動片配W電址■值向呂皓言度由中af嗜址.也■mmDM?nnri/|xnnAr90ioisafjsiehkjtnmmmjIutHf+r://l!17-lf?T[,]V[-[nrxiT同門,幫斯g?一&Q捷主工曲1口口X??|VJ回.1|41自中,度器1SDLIV7日叫g(shù)餐式小=a濟(jì)iSBT同_j少皿土口事,i0仁Ilw文附俎10述口酎gEE4:;ME磔4A11目:師1口|1~皿ifflxh克產(chǎn)共1996-1-120.ODifrog=*nFiJt-s婦'=央幻|四-EH1011G口1HP交伴找乃/ET10.Iao.A?wK3d為的-g1ioie如夷iw-i-i罰m乎在喇褊gjq宇r昨F式制葉卜119用戶,(B芯■gtm”<2>利用FTP可直接向主板端進(jìn)行文件的傳輸,將PC機(jī)的內(nèi)容進(jìn)行復(fù)制,在主板TOC\o"1-5"\h\z端執(zhí)行粘帖即可下載到主板端(為復(fù)制到主板端的文件)。[女伴E—床值jjm|11.4*IfeL.匕U?0層I林&二疝巾,Hs-idFtehficqierriFi&sTentivwdcisscrm32HxeUxldIbIXLiniEntl制|dMAC.*上I。vt?3第(5)修改MAC地址若您在同一網(wǎng)絡(luò)中使用了不只一塊主板,則需要修改其MAC地址。這是由于出廠時(shí)它們的MAC地址是一樣的,而在同一網(wǎng)絡(luò)中是不允許出現(xiàn)相同的MAC地址的主板。具體操作如下:<1>打開“我的設(shè)備”“Windows”,然后執(zhí)行程序,界面如下:

<2>點(diǎn)擊"HKEY_LOCAL_MACHINE前的“+”號可展開該項(xiàng)。界面如下:<3>通過路徑KEY_LOCAL_MACHINE->Comm->EMACB1->Parms,找到“NetworkAddress”子項(xiàng),雙擊NetworkAd項(xiàng),并按“XX-XX-XX-XX-XX”的格式修改其值即可。界面如下:

TELNET服務(wù)<1>執(zhí)行PC的“開始”“運(yùn)行",輸入telnet+主板端IP地址,如下圖所示:<2>單擊“確定”按鈕后,彈出如下圖所示的控制臺窗口,輸入“help”命令,回車后列出相關(guān)操作命令,通過執(zhí)行其命令可進(jìn)行遠(yuǎn)程操作。U^lcunu<4>ill?UliirduwuCElelnifI£磨臚U^lcunu<4>ill?UliirduwuCElelnifI£磨臚uJjuhunVlndux$CEFnn^ntCUDw以r金令可司二Al'TXlBCALLCDGHDTRCLSCOP¥MTEDEL勵TNFifflOAiHH^EEKITHELPGOTOIFribHMCLRHMJEMTUmiJlREPROMPTPUDiRDREHVtFlHIRFNflMEmmRSETSHIP!snm御.不批處JE距能更詼口五與G1*弓同“病聞.豆制芯心l.顯示,晚耳蛻日期.比性H串甥墾出或更改回顯券卻與UE…洞,“艮出"衛(wèi)公解群苕aK.尋紳丁程幣將捏制權(quán)爵至標(biāo)寫.句〒藝通行蒂務(wù)可建目與M?相同將毛,手用占二庫.SEIF0TH的月庫。莊起世杜崖+f;產(chǎn)不行過強(qiáng).哥瞳鼻j羯顯贏文忤中的注博里波文件;V,與HEN機(jī)同、號附呵同。4、LCD和觸摸屏測試LCD測試<1>本卡LCD顯示屏可進(jìn)行9。度、180度、270度旋轉(zhuǎn),執(zhí)行桌面一>RotatDisply程序,彈出如下界面:<2>應(yīng)用可執(zhí)行程序進(jìn)行修改后掉電不能保存,可通過注冊表修改后實(shí)現(xiàn)保存屏幕的旋轉(zhuǎn),注冊表操作如下圖所示:通過注冊表工具在HKEY-LOCSL-MACHINE->System->GDI->ROTATION下修改Angle的值可進(jìn)行不同旋轉(zhuǎn)角度的設(shè)置,此值為十六進(jìn)行數(shù)。

IlXQftX第三|2NebdKhe用Vlevv,d南口H<EYCLFREFJTUSERH-QH<E¥」LQZALJV1MEUM三NJ'G1H如_slAncjeoooconoa(o);中二9TTTFlJ口由CJ日日b3『Ftl二且二MEi=m5:由£3HaR口端/F;Er-iIcbnt:山口unitib」MUljlilCJriSS3jRinte-Bsi+l口Setmcct;申qa>dlilOSDFTWA^LEliOSvslEfiiioCedcl'司OiCirrmcContidS^tOnFv^nhs■王。日oicter百?~]Drvers」Gmr啟QGLYPK^OHE二moN^"iiFKEYLCCALMACHFEk5ritWl\3DI<RCTAT]CNFKEYLCCALMACHFEk5ritWl\3DI<RCTAT]CN二svsirrr!!'QG內(nèi)E-OHbfeiTfcdte,-j。匕jocmoro甩Qi升?即刃Wwndgs,:由Htjm(2)觸摸屏測試一般來說,當(dāng)用戶拿到一個觸摸屏?xí)r,需要重新使用觸摸屏校驗(yàn)程序校驗(yàn)這個觸摸屏,這樣就可以使用觸摸筆很準(zhǔn)確的點(diǎn)擊目標(biāo)位置。在WinCE操作系統(tǒng)下,觸摸屏的校驗(yàn)過程是這樣的:用鼠標(biāo)點(diǎn)擊WinCE桌面圖標(biāo)“我的電腦”,打開“控制面板”,然后點(diǎn)擊“筆針”,在彈出的窗口中,選擇“校準(zhǔn)”標(biāo)簽頁,點(diǎn)擊“再校準(zhǔn)”按扭,如下圖:KHJEtt羽擊I被暗I如掌也已泄真正FR配點(diǎn)擊?函H委弭校唯算高*再常JR祕曲1才此帽,?濡山序”兩甘施?在出現(xiàn)的校驗(yàn)畫面中,我們可以看到中心位置有一個“+”號,我們需要用觸摸筆點(diǎn)擊這個加號的中心位置,記住點(diǎn)擊時(shí),需要把觸摸筆帖在這個中心位置2、3秒時(shí)間,再提起來,否則,如果輕觸的時(shí)間太快,觸摸程序可能捕捉不到用戶的動作,當(dāng)中心位置校驗(yàn)成功后,加號會移到左上角,用戶需要跟著加號的移動,點(diǎn)擊加號的中心位置,以最終完成整個校驗(yàn)過程。完成校驗(yàn)后,點(diǎn)擊鼠標(biāo)左鍵確認(rèn)校驗(yàn)結(jié)果。5、USB測試(1)通過USB主接口測試

<1>將USB主接口插上U盤(USB主接口也可以接USB鼠標(biāo)或鍵盤使用),在主板的我的設(shè)備目錄下可以看見如下圖陰影部分的內(nèi)容:<2>將USB鼠標(biāo)直接插入主板的USB接口即可使用。(2)通過USB從建立ARM8603主板與PC機(jī)Windows的ActiveSync連接裝有WindowsCE.net的嵌入式設(shè)備一般可通過USB線、RS232串行線、以太網(wǎng)等通信協(xié)議實(shí)現(xiàn)與PC機(jī)Windows的ActiveSync連接。在ARM8603上,可以通過USB總線實(shí)現(xiàn)ARM8603與PC機(jī)Windows的ActiveSync連接。實(shí)現(xiàn)連接之后,就可以很輕松的傳輸文件至ijARM8603的WindowsCE.net中,還可以實(shí)現(xiàn)VisualStudio2005的遠(yuǎn)程調(diào)試功能。<1>安裝ActiveSync程序。找到光盤資料里的"工具"下的"ActiveSync”文件,進(jìn)行安裝,安裝完成后,將會彈出"SetUpaPartnership(新建合作關(guān)系)”的對話框,選擇“No(O)”,點(diǎn)擊“下一步”按鈕,如下圖:出現(xiàn)下圖說明PC機(jī)與主板已經(jīng)通過USB自動建立了連接關(guān)系。

①①IxcrosciftActztcSync在Wince開發(fā)中,很多人需要連接到目標(biāo)主板上進(jìn)行調(diào)試。VisualStudio2005提供了強(qiáng)大的遠(yuǎn)程工具集幫助開發(fā)者進(jìn)行輔助調(diào)試,這些遠(yuǎn)程工具都位于開始菜單下的程序MicrosoftVisualStudio2005—>VisualStudioRemoteTools下,如下圖所示:二;.交EU口二;.交EU口i?ni;/1icQ.鼻劫Q(mào)HQji曰前?rFtfl4和iaiib曲.:rqi,國美閉用IMOP…SAjLS4iv**DlJ£'kElhEft!fj-i-jBcvl't、#『MUqhjxz?備r.zfl*k』Stu亞丫:CW5Tib”◎:ft金山福:■1b江坪汝般中[E?知t飛不藤山鞋浮MDUE(Fluh<-?t)?JUR-I'R.Ll"R■,,6、CF卡、硬盤和SD卡測試主板下電后,將CF卡或硬盤(CF卡和硬盤不能同時(shí)插入接口,只能運(yùn)行一種設(shè)備)

硬盤接口請參考硬件說明書自制硬盤接口線。SD卡插入到接口中,然后上電,查看“我的設(shè)置”是否有SD_Card盤符及CF_Card盤符,有則說明已識別可使用,之后可進(jìn)行文件的讀寫操作,如下圖所示。|TW1??附一]?I*f*lcal>|glw-|*■**^/■imiCF_J1E/MnFLKtiHewnMblR」£,dilvnp啊ndomn:"1FE1H!”IEtaIuxmfiq,

7、CAN測試?yán)靡粋€CAN^備與ARM8603^CAN(CN19接口相連,接口定義請參見硬件說明書,正

負(fù)信號線連接好后,就可進(jìn)行數(shù)據(jù)傳輸,7、CAN測試?yán)靡粋€CAN^備與ARM8603^CAN(CN19接口相連,接口定義請參見硬件說明書,正

負(fù)信號線連接好后,就可進(jìn)行數(shù)據(jù)傳輸,打開NandFlash->CAN下的應(yīng)用程序進(jìn)行測試, 界面如下所示:CANTesI序號II牖^回I4切帶空E!I始珞式a01 -4S67□1二二廿ET01望M45ET01£=4EE101234E6712345670| ■級廠一1坪U 二CAHJ速擇即向J 1_:I卜川卅日 將止|?帕參數(shù)訪西8、音頻測試根據(jù)硬件說明自制音頻連接線,與主板的音頻接口(CN3進(jìn)行連接,通過播放NandFlash下的Media下的音頻文件進(jìn)行測試。二、利用VS2005開發(fā)工具編寫HelloWorld程序利用VS2005可以開發(fā)智能設(shè)備應(yīng)用程序,下面介紹實(shí)現(xiàn)HelloWorld演示程序的整個過程。<1>打開VS2005,選擇項(xiàng)目類型中的“智能設(shè)備”,在“VisualStudio已安裝的模板”中選擇“MFC智能設(shè)備應(yīng)用程序”,工程名為“HelloWorld",界面如下:

<2>點(diǎn)擊“確定”,進(jìn)入開發(fā)界面,如下:<3>單擊“下一步”,進(jìn)入如下所示界面:<4>選擇已安裝的所有SDK平臺(需安裝光盤“工具”中的“SDK”,本主板應(yīng)用的是AT91SM9263),如下圖所示:

<5>單擊“下一步”,進(jìn)入如下界面,在“應(yīng)用程序類型”中選擇“基于對話框”,在MFC的使用”中選擇“在靜態(tài)庫中使用MFC",如下圖所示:<6>單擊“完成”,進(jìn)入程序界面,如下所示:JIhIIEfVutli-d-HJIhIIEfVutli-d-HDirult iHluAk*z回區(qū)<7>選擇"解決方案",并在""的OnInitDialong函數(shù)中下添加代碼"MessageBox(_T(HelloWorld!")”,如下所示:<8>將電腦與ARM主板相聯(lián)接,設(shè)置生成文件類型為Release,SDK選擇AT91SM9263,ReleaserAT91SM9263,ReleaserAT9L5AM9263(ARMV4I)。然后,右鍵單擊工程名,選擇“重新生成”選項(xiàng),如下圖左所示,編譯通過無誤后,右鍵單擊工程名選擇“部署”選項(xiàng),如下圖右所示:i」J1百i」J1百3即弓”二型三融廠口葉厚1—國Sii3生前1)生咸?■4-3功.二逑項(xiàng)后用工況自上1卜HB于野CD白定岫制|融以工具生欣3事tow弓用Qi市加V4可日Q.■■eX■愀EJ拓照1)毒悔電■命名修?ro.Hiy1W性為,婦二斫牛成匚事各&as即15(用于軍目Q)*日定義生曬網(wǎng)國1,H且#成眸京小?考加?虱用力…黑力口HehE用S).崔力啟迓硬月班|我更切?鼻woX性除wKA£電1近效而目L白呼心<9>然后查看ARM8603的“我的設(shè)備成的可執(zhí)行文件,即可執(zhí)行該程序。這時(shí),所示:WinCE“ProgramFiles”—>HelloWord,雙擊生中可得到本演示程序的運(yùn)行結(jié)果。如下intemarT]MISHtlQM,r--二'?ILtgUUUSLIU網(wǎng)山CODSC132OZH)三、LED及蜂鳴器測試程序該程序功能包括兩LED燈的控制、背光的亮滅控制和蜂鳴器控制。1、建立工程,新建一個基于對話框的工程,工程名為1、建立工程,新建一個基于對話框的工程,工程名為PIOTest,如下所示:2、界面如下圖所示,包括LED燈的控制、背光控制、蜂鳴器的控制。土kg?例>])?H47II-M ?區(qū)qjXHBgM 土kg?例>])?H47II-M ?區(qū)qjXHBgM ■■“山M■X貴,F(xiàn)I巴_JEXuJ-UhtEK?j124-aia

串JiWTwppi"

*jnnTM.u£-a:HF 『Mr」聞 IllFl:UlCM||4i叫IbbFUli! ■>>?*?*?■*W.22、具體程序的實(shí)現(xiàn)<1>本例中程序的運(yùn)行要有接口函數(shù)動態(tài)庫文件的支持,所需文件已在DLL文件夾中給出,編寫代碼前先將DLL文件夾中的三個文件復(fù)制到工程下,如下圖所示:<2>將PIO.h頭文件加載到工程中,右鍵單擊頭文件”選擇添加一>現(xiàn)有項(xiàng)",如下所示:m導(dǎo) 二器也才買"rtDTesi"下所示:m導(dǎo) 二器也才買"rtDTesi"d■口FT(lT?ti整口登屈西…52]OthjerCtrl.c?■MFIOC'U.eh口UUh*12PpJrLDltsWlf.cjp臼xllfcrxr^p,J費(fèi)勰文產(chǎn)二tei-dfit看Ij我叮在gi」卦止淵息囂⑤TT:1冠工f13E",纖m遇H:CPIOTcffl芍/】T"此

1%

!||2jL^id-CP:<3>彈出如下所示對話框,選擇PIO.h頭文件,單擊添加按鈕”,完成文件的添力口。<4>添加.dll動態(tài)庫文件,右鍵單擊工程名,選擇添加”一皿有項(xiàng)",如上右圖所示:<5>彈出如下對話框,文件類型選擇所有文件(*.*)”選擇「單擊添加”按鈕,如下圖所示:<6>查看已添加的.dll動態(tài)庫文件,如下圖所示:二;解決現(xiàn)FI0T的n】牛項(xiàng)町HOTest國一1頭文件

&-」撤件■史PtOfesLcpf■■■的PlGTestflg.:pp■己stdabc.cppR:/快源文件國PlO.d⑥ReadMs.txt<7>添加功能函數(shù)程序//LED控制if(!m_Led1Status){m_Led1Status=TRUE;m_Btn_ndowText(_T("ON"));LEDOnOff(1,FALSE);}else{m_Led1Status=FALSE;m_Btn_ndowText(_T("OFF"));LEDOnOff(1,TRUE);}//蜂鳴器控制Beep(100);//設(shè)置蜂鳴器響的時(shí)間為100ms//背光控制BackLightOnOff(FALSE);Sleep(2000);BackLightOnOff(TRUE);4、編譯生成應(yīng)用程序首先,編譯該程序,通過編譯后,執(zhí)行部署,然后,查看我的設(shè)備”一>"ProgramFiles,”生成一個PIOTest的應(yīng)用程序。用戶界面如下圖所示:5程序測試單擊其他功能控制”選項(xiàng)卡,測試5程序測試單擊其他功能控制”選項(xiàng)卡,測試LED,單擊“LEDT按鈕,點(diǎn)擊“OFF則LED1滅,觀察用戶燈的狀態(tài),與之相對應(yīng)。測試背光控制,點(diǎn)擊“ONI則LED1亮,點(diǎn)擊背光控制”按鈕,顯示器將熄滅,2秒鐘后自動點(diǎn)亮。單擊一次蜂鳴器按鈕響100mS,狀態(tài)如圖所示:PlOTestPlOTest四、串口操作通過對串口的編程可實(shí)現(xiàn)自動接收與之相連接設(shè)備的信息,串口的編程與應(yīng)用十分廣泛,下面詳細(xì)介紹如何進(jìn)行對串口的程序編寫。1、打開VisualStudion2005的開發(fā)環(huán)境,單擊“File”菜單上的“NeW命令,新建一個基于對話框的工程,工程名為CommMFC一個基于對話框的工程,工程名為CommMFC2、本程序利用串口類函數(shù)實(shí)現(xiàn)串口的初始化、數(shù)據(jù)的接收和發(fā)送,寫程序代碼前先將及Comm.hW加到該工程中,并將Comm.限文件包函到該工程的.cpp文件中,設(shè)計(jì)串口測試程序的用戶界面,如下圖所示:

3、部分程序說明如下所示:(源碼請參見光盤中的程序—>VS2005->RS232->RS232_TestCommMFC//串口類中的函數(shù)說明voidCommInit(CStringIndexText,unsignedlongBaudrate){DCBdcb;//創(chuàng)建句柄hSer=CreateFile(IndexText,//文件索引//共享模式:四匕1是//忽略////共享模式:四匕1是//忽略//打開文件當(dāng)關(guān)閉時(shí)自動失效//忽略0,NULL,OPEN_EXISTING,0,NULL);if(hSer==INVALID_HANDLE_VALUE)//打開非正確文件{pm_Status->SetWindowText(_T("Open")+IndexText+_T("Failed!"));return;}pm_Status->SetWindowText(_T("Open")+IndexText+_T("Success!"));//settheDCBstructurength=sizeof(DCB);//設(shè)置長度GetCommState(hSer,&dcb);//獲取COMM狀態(tài)ty=FALSE;=FALSE;ty=FALSE;=FALSE;its=ONESTOPBIT;y=NOPARITY;ate=Baudrate;ize=8;//非二進(jìn)制有效//無效值設(shè)置//1停止位//奇偶校驗(yàn)//波特率//8位SetCommState(hSer,&dcb);//設(shè)置COM狀態(tài)//Setthetimeout{{COMMTIMEOUTSCommTimeOuts;ntervalTimeout=OxFFFFFFFF;//讀的超時(shí)時(shí)間間隔otalTimeoutMultiplier=10;//以乘的方式讀取值為10otalTimeoutConstant=10;//常數(shù)TotalTimeoutMultiplier=50;//以乘的方式寫入值為50TotalTimeoutConstant=100;SetCommTimeouts(hSer,&CommTimeOuts);return;}//接收數(shù)據(jù)voidCommRcv(void){BYTEReadBuffer[2000]={0};TCHARTReadBuffer[2000]={0};DWORDdwErrorFlags;//出錯標(biāo)志COMSTATComStat;//定義清除錯誤變量DWORDi;DWORDdwBytesRead=0;SetCommMask(hSer,EV_RXCHAR);//數(shù)據(jù)發(fā)送到Bufferwhile(1){WaitCommEvent(hSer,NULL,NULL);SetCommMask(hSer,EV_RXCHAR);ClearCommError(hSer,&dwErrorFlags,&ComStat);if(!ue){Sleep(1);}else{if(!ReadFile(hSer,ReadBuffer,ue,&dwBytesRead,NULL)){pm_Status->SetWindowText(_T("ReadCOMMFailed!"));return;}else{MultiByteToWideChar(CP_ACP,0,(char*)ReadBuffer,dwBytesRead,TReadBuffer,dwBytesRead);if(TReadBuffer[0])lstrcat(TReadBuffer,_T("\r\n"));if((pm_Edit->GetLineCount())>40)//清輸出編輯框內(nèi)容pm_Edit->SetSel(0,-1);pm_Edit->Clear();}//顯示接收的數(shù)據(jù)intnLen=pm_Edit->GetWindowTextLength();pm_Edit->SetFocus();pm_Edit->SetSel(nLen,nLen);pm_Edit->ReplaceSel(TReadBuffer);//清接收數(shù)據(jù)的Bufferfor(i=0;i<dwBytesRead+2;i++){ReadBuffer[i]=0;TReadBuffer[i]=0;}}}}}//發(fā)送數(shù)據(jù)voidCommTrans(void){DWORDdwBytesWrite;charWriteBuffer[100]={0};TCHARTWriteBuffer[100]={0};while(1){if(WaitForSingleObject(g_hevWriteEnable,INFINITE)==WAIT_OBJECT_0){//WritetoCommpm_Send->GetWindowText(TWriteBuffer,100);lstrcat(TWriteBuffer,_T("\r'n"));WideCharToMultiByte(CP_ACP,//轉(zhuǎn)換讀取方式WC_COMPOSITECHECK|WC_DEFAULTCHAR,TWriteBuffer,lstrlen(TWriteBuffer),WriteBuffer,lstrlen(TWriteBuffer),NULL,NULL);if(WriteFile(hSer,(char*)WriteBuffer,lstrlen(TWriteBuffer)*sizeof(char),&dwBytesWrite,NULL)){pm_Status->SetWindowText(TEXT("WriteCOMSuccess!"));}else{DWORDi=GetLastError();pm_Status->SetWindowText(TEXT("WriteCOMFailed!"));}}elsebreak;}return;}//主程序說明//初始化變量CStringCommText=_T("COM1:");unsignedlongCommBaudRate=9600;DWORDdwTStat;CEdit*pm_Edit;CEdit*pm_Send;CEdit*pm_Status;HANDLEhSer=INVALID_HANDLE_VALUE;HANDLEhXmitThread=INVALID_HANDLE_VALUE;HANDLEhRcvThread=INVALID_HANDLE_VALUE;HANDLEg_hevWriteEnable;BOOLg_bButton2State=FALSE;//Open按鈕函數(shù)if(!g_bButton2State){g_bButton2State=TRUE;m_ndowText(TEXT("Close"));CommInit(CommText,CommBaudRate);if(!GetExitCodeThread(hRcvThread,&dwTStat)||!GetExitCodeThread(hXmitThread,&dwTStat)||(dwTStat!=STILL_ACTIVE)){//創(chuàng)建接收線程hRcvThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)CommRcv,NULL,0,&dwTStat);if(hRcvThread)CloseHandle(hRcvThread);//關(guān)閉接收線程句柄//創(chuàng)建發(fā)送線程

hXmitThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)CommTrans,NULL,0,&dwTStat);if(hXmitThread)CloseHandle(hXmitThread);//關(guān)閉發(fā)送線程句柄}//創(chuàng)建寫事件g_hevWriteEnable=CreateEvent(NULL,FALSE,FALSE,NULL);}else{g_bButton2State=FALSE;m_ndowText(TEXT("Open"));pm_Status->SetWindowText(TEXT("COMClosed!"));GetExitCodeThread(hRcvThread,&dwTStat);TerminateThread(hRcvThread,dwTStat);GetExitCodeThread(hXmitThread,&dwTStat);TerminateThread(hXmitThread,dwTStat);if(hSer!=NULL){CloseHandle(hSer);hSer=NULL;}}//串口選擇(雙擊串口選擇下拉列表控制添加以下代碼)intn,i;=m_rSel();n=m_TextLen(i);m_Text(i,ffer(n));seBuffer();//波特率設(shè)置(雙擊波特率選擇下拉列表控制添加以下代碼)unsignedlongBR[]={1200,2400,4800,9600,14400,19200,38400,57600,115200,230400,921600};修?方百**WW第1?4xl:"㈠廣UF月北tiihff十%用于項(xiàng)目白J,目定三生京和?山工1潴加口jl■羽用也*加叫用t)..比帕軸yai皿?4flu'llinti=m_rSel();CommBaudRate=BR[i];//Send按鈕函數(shù)(雙擊Send按鈕添加以下代碼)SetEvent(g_hevWriteEnable);//Clear按鈕函數(shù)(雙擊Clear控制添加以下代碼)pm_Edit->SetSel(0,-1);pm_Edit->Clear();4、右鍵單擊工程名選擇“重新生成”按鈕編譯工

如下左圖所示:5、編譯成功后,右鍵單擊工程名選擇“部署”按鈕下載該工程,如上右圖所示:6、測試過程首先,將ARM8603的用戶串口(CN13)與PC機(jī)的串口用9針串口線相連,打開PC機(jī)的串口調(diào)試工具,設(shè)置串口號為本PC機(jī)的串口號,設(shè)置波特率為115200。然后,打開編譯通過下載到ARM8603主板中的應(yīng)用程序,選擇Com端口為“COM1:,選擇BaudRate,可根據(jù)用戶要求選擇,與PC機(jī)的一致即可,本例為“115200”,設(shè)置完成后單擊Open按鈕,此時(shí)ARM8603的串口將與PC串口相連,成功則在Status編程框中顯示“OpenCOM1:Success!”。最后,在編輯框中輸入要發(fā)送的數(shù)據(jù),如:,單擊Send按鈕,查看串口調(diào)試工具的接收區(qū),顯示為,則該程序運(yùn)行正常。同時(shí),可通過PC機(jī)的串口調(diào)試工具向ARM發(fā)送數(shù)據(jù),在CommMFC程序的接收區(qū)中將顯示出發(fā)送的信息。7、CN11上的RS485應(yīng)用實(shí)例是根據(jù)本公司自已的DAM3000系列模塊設(shè)計(jì)的應(yīng)用程序,分為ModBus協(xié)議和公司自己的協(xié)議兩種,程序參見光盤“程序”“RS485”“DAM3000M(ModBus協(xié)議)以及“程序”“RS485”“DAM3000”(公司協(xié)議)。五、網(wǎng)口操作網(wǎng)口的操作,是通過兩個ARM8603主板用網(wǎng)線相連,一方為服務(wù)端,一方一客戶端,分別執(zhí)行不同的應(yīng)用程序,對端口進(jìn)行監(jiān)測,主要是應(yīng)用網(wǎng)絡(luò)套接字實(shí)現(xiàn)功能。具體實(shí)現(xiàn)如下所示:2、客戶端的應(yīng)用程序?qū)崿F(xiàn)過程建立一個基于對話框的VS2005程序,工程名為TCPClient。如下所示:建立完成后,設(shè)計(jì)用戶界面,對話設(shè)置如下所示:ICFtlicntX.蛆業(yè)也讓:豆桂由1:II呈開.端£」[經(jīng)史甑據(jù)程序?qū)崿F(xiàn)//建立Socket線程、連接、關(guān)閉函數(shù)//構(gòu)造函數(shù)CTCPClient_CE二CTCPClient_CE(void){WSADATAwsd;WSAStartup(MAKEWORD(1,1),&wsd);m_exitThreadEvent=CreateEvent(NULL,FALSE,FALSE,NULL);}//析構(gòu)函數(shù)CTCPClient_CE二?CTCPClient_CE(void){WSACleanup();CloseHandle(m_exitThreadEvent);}//監(jiān)聽TCP客戶端通訊的事件,例如當(dāng)接收到數(shù)據(jù)、連接斷開和通訊過程發(fā)生錯誤等事件DWORDCTCPClient_CE二SocketThreadFund(LPVOIDIparam){CTCPClient_CE*pSocket;pSocket=(CTCPClient_CE*)lparam;//定義讀事件集合fd_setfdRead;intret;TIMEVALaTime;_sec=1;_usec=0;while(TRUE){//收到退出事件,結(jié)束線程if(WaitForSingleObject(pSocket->m_exitThreadEvent,0)==WAIT_OBJECT_0){break;}FD_ZERO(&fdRead);FD_SET(pSocket->m_socket,&fdRead);ret=select(0,&fdRead,NULL,NULL,&aTime);if(ret==SOCKET_ERROR){pSocket->OnError(pSocket->m_pOwnerWnd,1);pSocket->OnDisConnect(pSocket->m_pOwnerWnd);closesocket(pSocket->m_socket);break;}if(ret>0){if(FD_ISSET(pSocket->m_socket,&fdRead)){charrecvBuf[1024];intrecvLen;ZeroMemory(recvBuf,1024);recvLen=recv(pSocket->m_socket,recvBuf,1024,0);//錯誤處理if(recvLen==SOCKET_ERROR){intiError=WSAGetLastError();pSocket->OnError(pSocket->m_pOwnerWnd,iError);pSocket->OnDisConnect(pSocket->m_pOwnerWnd);closesocket(pSocket->m_socket);break;}elseif(recvLen==0){pSocket->OnDisConnect(pSocket->m_pOwnerWnd);closesocket(pSocket->m_socket);break;}else{pSocket->OnRead(pSocket->m_pOwnerWnd,recvBuf,recvLen);}}}}return0;}//用于打開客戶端socketboolCTCPClient_CE::Open(CWnd*pWnd){ResetEvent(m_exitThreadEvent);m_pOwnerWnd=pWnd;m_socket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if(m_socket==SOCKET_ERROR){returnFALSE;}//創(chuàng)建通訊線程m_tcpThreadHandle=CreateThread(NULL,0,SocketThreadFund,this,0,NULL);if(m_tcpThreadHandle==NULL){closesocket(m_socket);returnFALSE;}returnTRUE;}//用于關(guān)閉客戶端socketboolCTCPClient_CE二Close(){SetEvent(m_exitThreadEvent);Sleep(100);//關(guān)閉Socket,釋放資源{{interr=closesocket(m_socket);if(err==SOCKET_ERROR){returnFALSE;}returnTRUE;}//用于建立與TCP服務(wù)器連接boolCTCPClient_CE二Connect。{structsockaddr_inaddr;interr;_family=AF_INET;_port=htons(m_port);charansiRemoteHost[255];ZeroMemory(ansiRemoteHost,255);WideCharToMultiByte(CP_ACP,WC_COMPOSITECHECK,m_remoteHost,wcslen(m_remoteHost),ansiRemoteHost,wcslen(m_remoteHost),NULL,NULL);_addr.s_addr=inet_addr(ansiRemoteHost);err=connect(m_socket,(structsockaddr*)&addr,sizeof(addr));if(err==SOCKET_ERROR){returnFALSE;}DWORDul=1;ioctlsocket(m_socket,FIONBIO,&ul);returnTRUE;}//向服務(wù)器端發(fā)送數(shù)據(jù)boolCTCPClient_CE二SendData(constchar*buf,intlen){intnBytes=0;intnSendBytes=0;while(nSendBytes<len){nBytes=send(m_socket,buf+nSendBytes,len-nSendBytes,0);if(nBytes==SOCKET_ERROR)intiErrorCode=WSAGetLastError();OnError(m_pOwnerWnd,iErrorCode);OnDisConnect(m_pOwnerWnd);Close();returnFALSE;}nSendBytes=nSendBytes+nBytes;if(nSendBytes<len){Sleep(1000);}}returnTRUE;}(3)編譯生成應(yīng)用程序首先,編譯該程序,通過編譯后,執(zhí)行部署,然后,查看“我的設(shè)備”一>"ProgramFiles”,生成一個TCPClient的應(yīng)用程序。用戶界面如下圖所示:3、建立服務(wù)端應(yīng)用程序服務(wù)端的應(yīng)用程序主要實(shí)現(xiàn)對網(wǎng)口的監(jiān)聽,當(dāng)有客戶端進(jìn)行網(wǎng)口操作時(shí),服務(wù)端會監(jiān)聽到客戶端的信息,并將其進(jìn)行顯示。(源碼請參見光盤程序—>VS2005—>LANTest)(1)建立一個基于對話框的VS2005程序,名為TCPClient。對話設(shè)置如下所示:(2)程序設(shè)計(jì)如下:(源碼請參見光盤一程序一VS2005—LAN—TCPSeaver)//初始化定義//客戶端連接建立事件處理函數(shù)staticvoidCALLBACKOnClientConnect(CWndpWndCTCPCustom_CE*pTcpCustom);//客戶端SOCKET閉事件處理函數(shù)staticvoidCALLBACKOnClientClose(CWndpWndCTCPCustom_CEpTcpCustom);//服務(wù)器端收到來自客戶端的數(shù)據(jù)staticvoidCALLBACKOnClientRead(CWndpWndCTCPCustom_CEpTcpCustom,constchar*buf,intlen);//客戶端Socket錯誤事件處理函數(shù)staticvoidCALLBACKOnClientError(CWndpWndCTCPCustom_CEpTcpCustom,intnErrorCode);//服務(wù)器端Socket錯誤事件處理函數(shù)staticvoidCALLBACKOnServerError(CWndpWndCTCPServer_CE*pTcpServer_CE,intnErrorCode);//處理函數(shù)//客戶端連接建立事件處理函數(shù)voidCALLBACKCTCPServerDlg::OnClientConnect(CWndpWndCTCPCustom_CEpTcpCustom){CTCPServerDlg*pDlg=(CTCPServerDlg*)pWndCListBox*pLstConn=(CListBox*)pDlg->GetDlgItem(IDC_LSTCONNASSERTpLstConn!=NULL;pLstConn->AddString(pTcpCustom-〉m_RemoteHost+_T("建立連接"));}//客戶端SOCKE關(guān)閉事件處理函數(shù)voidCALLBACKCTCPServerDlg::OnClientClose(CWndpWndCTCPCustom_CEpTcpCustom){CTCPServerDlg*pDlg=(CTCPServerDlg*)pWndintilndex;CListBox*pLstConn=(CListBox*)pDlg->GetDlgItem(IDC_LSTCON)N

ASSERTpLstConn!=NULL;ilndex=pLstConn->FindString(ilndex,pTcpCustom->m_RemoteHost+_T(建立連接"));if(iIndex==LB_ERR{return;}pLstConn->DeleteString(iIndex);}//監(jiān)聽按鈕的實(shí)現(xiàn)UpdateData(TRUE;m_tcpServer.m_LocalPort=m_localPort;m_tcpServer.m_pOwnerWnd=this;m_entConnect=OnClientConnect;m_entClose=OnClientClose;m_entRead=OnClientRead;m_entError=OnClientError;m_verError=OnServerError;if(m_()<=0){AfxMessageBox(_T("監(jiān)聽失敗"));return;}CButton*pBtnListen=(CButton*)GetDlgItem(IDC_BTNLISTEN;ASSERTpBtnListen!=NULL;pBtnListen->EnableWindow(FALSH;CButton*pBtnClose=(CButton*)GetDlgItem(IDC_BTNCLOSEASSERTpBtnClose!=NULL;pBtnClose->EnableWindow(TRUE;//讀取按鈕的實(shí)現(xiàn)CStringstrRecv;CStringstrLen;t(L"%d",len);strRecv=buf;CTCPServerDlg*pDlg=(CTCPServerDlg*)pWndCListBox*pLstRecvASSERTpLstRecv!=pLstRecv->AddStringpLstRecv->AddStringpLstRecv->AddString=(CListBox*)pDlg->GetDlgItem(IDC_LSTRECVCListBox*pLstRecvASSERTpLstRecv!=pLstRecv->AddStringpLstRecv->AddStringpLstRecv->AddString(_t("************************************"));(_T("來自:")+pTcpCustom->m_RemoteHost);(_T("數(shù)據(jù)長度:")+strLen);pLstRecv->AddString(strRecv);if(!pTcpCustom->SendData("recvok",strlen("recvok"))){AfxMessageBox(_T("發(fā)送失敗"));

}//關(guān)閉按鈕if(m_()<=0){AfxMessageBox(_T("關(guān)133TC用艮務(wù)器失敗”));return;}CButton*pBtnListen=(CButton*)GetDlgltem(IDC_BTNLISTEN;ASSERTpBtnListen!=NULL;pBtnListen->EnableWindow(TRUE;CButton*pBtnClose=(CButton*)GetDlgltem(IDC_BTNCLOS)EASSERTpBtnClose!=NULL;pBtnClose->EnableWindow(FALSE;CListBox*pLstConn=(CListBox*)GetDlgltem(IDC_LSTCONNASSERTpLstConn!=NULL;CListBox*pLstRecv=(CListBox*)GetDlgltem(IDC_LSTRECVASSERTpLstRecv!=NULL;//釋放連接pLstConn->ResetContent();pLstRecv->ResetContent();(3)編譯生成應(yīng)用程序—>“Program首先,編譯該程序,通過編譯后,執(zhí)行部署,然后,查看“—>“ProgramFiles”,生成一個TCPServer的應(yīng)用程序。用戶界面如下圖所示:程序測試(4)程序測試分別將客戶端程序TCPClient和服務(wù)端程序TCPServer程序下載到不同的ARM8603中,一端作為客戶端,一端作為服務(wù)端。用網(wǎng)線將兩個ARM板相連,TCP端口號為“5000”,遠(yuǎn)程地址顯示的是自動獲取的本機(jī)的IP地址。首先,單擊服務(wù)端的“監(jiān)聽”按鈕,然后,單擊客戶端的“建立連接”按鈕,在客戶端下方的狀態(tài)欄中將顯示“連接已建立“,在服務(wù)端的“客戶端連接”編輯框中將顯示“IP地址建立連接”,此時(shí)連接表明連接已順利建立,可發(fā)送數(shù)據(jù)。通過軟件提供的不鍵盤向發(fā)送數(shù)據(jù)編輯框中寫入要發(fā)送的數(shù)據(jù),如“1234qwer”,單擊“發(fā)送數(shù)據(jù)”按鈕,查看服務(wù)端“服務(wù)器收到的信息”

編輯框,將顯示數(shù)據(jù)信息、對方IP地址、數(shù)據(jù)長度。顯示如下圖所示:剛塊TCPSurwrrnuprnFtErplaer的也.TCPSurwrrnuprnFtErplaer的也.委也理的:e*4gr* gp**w*奢*ye**聲r(shí)****目LHL跖[14KJBn,渡b酬最嚴(yán)m(xù)eat實(shí)例程序請參見光盤中的4、基于網(wǎng)口的應(yīng)用,可以直接連接我公司各種功能的網(wǎng)口模塊,“程序”->“VS2006->“LAIN'->"DAME3000。實(shí)例程序請參見光盤中的八、CAN操作八、本主板有一路CAN接口,最高傳送速度1M,編程可實(shí)現(xiàn)與其他CAN接口通訊,進(jìn)行數(shù)據(jù)傳送,具體編程如下:<1>創(chuàng)建一個基于VS2005的對話框應(yīng)用程序,程序名為CANTest,用戶界面如下所示:<2>加載動態(tài)庫,先將所提供的DLL文件夾中的三個文件拷貝到該工程文件夾下,然后添加到工程中,操作如下:<3>添加動態(tài)庫完成后,進(jìn)行代碼的編寫,初始化變量:intm_FrameFormat;//幀格式(數(shù)據(jù)幀、遠(yuǎn)程幀)intm_FrameStyle;//幀類型(標(biāo)準(zhǔn)幀、擴(kuò)展幀)intm_FrameCount;//發(fā)送的幀數(shù)intm_CANNum;//CAN端口intm_CANBaud;//波特率intm_nIndex;//列表項(xiàng)intm_RevCount;//本次接收到的幀數(shù)intm_RevAllCount;//接收到的所有幀數(shù)BOOLm_bStart;BOOLm_bRecvToListTRUE;BOOLm_OnCheck;CanDatam_DataWr[100];HANDLEm_hTRevhread;//為界面的各控件添加變量:DDX_Control(pDX,IDC_COMBO_FORMAT,m_Combo_Format);DDX_Control(pDX,IDC_COMBO_STYPE,m_Combo_style);DDX_Control(pDX,IDC_EDIT_ID,m_Edit_ID);DDX_Control(pDX,IDC_EDIT_SendData,m_Edit_Data);DDX_Control(pDX,IDC_EDIT_SENDSPACE,m_Edit_SendSpace);DDX_Control(pDX,IDC_COMBO_COUNT,m_Combo_Count);DDX_Control(pDX,IDC_COMBO_CANNUM,m_Combo_CanNum);DDX_Control(pDX,IDC_COMBO_BAUD,m_Combo_Baud);DDX_Control(pDX,IDC_EDIT_REVCOUNT,m_Edit_RevCount);DDX_Control(pDX,IDC_LIST_Data,m_List_Data);DDX_Control(pDX,IDC_CHECK_ShowData,m_Check_Show);DDX_Control(pDX,IDC_BUTTON_START,m_Btn_Start);DDX_Control(pDX,IDC_BUTTON_STOP,m_Btn_Stop);DDX_Control(pDX,IDC_BUTTON_SEND,m_Btn_Send);DDX_Control(pDX,IDC_EDIT_Times,m_Edit_Times);<3>寫功能函數(shù):在BOOLCCANTestDlg::OnInitDialog()函數(shù)中初始化窗口//設(shè)置數(shù)據(jù)列表格式DWORDtype=LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP|LVS_EX_TRACKSELECT|LVS_EX_ONECLICKACTIVATE|LVS_EX_SUBITEMIMAGES;m_List_essage(LVM_SETEXTENDEDLISTVIEWSTYLE,0,LPARAM(type));m_List_tColumn(0,_T("序號"),LVCFMT_LEFT,40);m_List_tColumn(1,L"傳輸方向",LVCFMT_LEFT,60);m_List_tColumn(2,_T("幀ID"),LVCFMT_LEFT,40);m_List_tColumn(3,_T("幀類型"),LVCFMT_LEFT,50);m_List_tColumn(4,_T("幀格式"),LVCFMT_LEFT,50);m_List_tColumn(5,_T("數(shù)據(jù)長度"),LVCFMT_LEFT,60);m_List_tColumn(6,_T("數(shù)據(jù)"),LVCFMT_CENTER,160);//設(shè)置CAN參數(shù)默認(rèn)值m_Combo_rSel(0);m_Combo_rSel(5);m_Combo_rSel(0);m_Combo_rSel(0);m_Combo_rSel(0);m_CANNum=0;m_CANBaud=BAUD_250KHZ;m_FrameCount=1;m_FrameFormat=0;m_FrameStyle=0;m_bRecvToListTRUE=TRUE;m_OnCheck=FALSE;m_bStart=FALSE;m_RevCount=0;m_RevAllCount=0;m_nIndex=0;m_Edit_ndowText(_T("12345678"));m_Edit_ID.SetWindowText(_T("0x123"));m_Edit_ndowText(_T("100"));m_Edit_ndowText(_T("1"));m_Btn_eWindow(TRUE);m_Btn_eWindow(FALSE);m_Btn_eWindow(FALSE);m_Combo_eWindow(FALSE);m_Combo_eWindow(FALSE);m_Combo_eWindow(FALSE);m_Check_eWindow(TRUE);//讀取數(shù)據(jù)的線程DWORDWINAPIRevCANDataThread(PVOIDhWnd){CCANTestDlg*pDlg=(CCANTestDlg*)hWnd;CanDataRevCANData[2048]={0};while(pDlg->m_bStart){pDlg->m_RevCount=CAN_BufCount(pDlg->m_CANNum);if(pDlg->m_RevCount>0){if(pDlg->m_OnCheck==0){pDlg->m_nFrameReads=CAN_ReceiveFrame(pDlg->m_CANNum,RevCANData,pDlg->m_RevCount);//接收數(shù)據(jù)pDlg->m_RevAllCount+=pDlg->m_nFrameReads;CStringstr;t(_T("%d"),pDlg->m_RevAllCount);pDlg->m_Edit_ndowText(str);//顯示讀取的幀數(shù)}else{pDlg->m_nFrameReads=CAN_ReceiveFrame(pDlg->m_CANNum,RevCANData,pDlg->m_RevCount);pDlg->m_RevAllCount+=pDlg->m_nFrameReads;CStringstr;t(_T("%d"),pDlg->m_RevAllCount);pDlg->m_Edit_ndowText(str);//顯示讀取的幀數(shù)for(inti=0;i<pDlg->m_RevCount;i++){pDlg->WriteListInfo(&RevCANData[i],1);}}}elseSleep(1);}return0;}voidCCANTestDlg::OnBnClickedButtonStart(){if(!CreateDevice(m_CANNum))//創(chuàng)建設(shè)置{MessageBox(_T("創(chuàng)建設(shè)備失??!"));return;}if(!CANN_Init(m_CANNum,m_CANBaud,0))//初始化CAN參數(shù)波特率為KMZ{MessageBox(_T("初始化失?。 ?);return;}m_Btn_eWindow(FALSE);m_Btn_eWindow(TRUE);m_bStart=TRUE;m_Combo_eWindow(FALSE);//CAN波特率設(shè)置m_Combo_eWindow(FALSE);//CAN端口號m_Btn_eWindow(TRUE);m_Combo_eWindow(TRUE);m_Combo_eWindow(TRUE);m_Combo_eWindow(TRUE);m_Check_eWindow(FALSE);//開啟接收數(shù)據(jù)的線程m_hTRevhread=CreateThread(NULL,0,RevCANDataThread,this,0,NULL);}//將字符串轉(zhuǎn)換成十六進(jìn)制數(shù)BYTECCANTestDlg二StrToHEX(CStringstr,BYTE*ch){intndataIndex=0;WCHAR*strchs=ffer();WCHARchs[3];intcnt=0;for(inti=0,cnt=0;i<ngth();i++){if(strchs[i]!=0x20)//0x20為空格字符的值{chs[cnt++]=strchs[i];}elseif(strchs[i-1]!=0x20){if(cnt>2){AfxMessageBox(TEXT("格式不對"));return0;}cnt=0;if(ndataIndex<8){ch[ndataIndex++]=(BYTE)wcstol(chs,NULL,16);chs[0]=0;chs[1]=0;}elsereturn0;}ch[ndataIndex]=(BYTE)wcstol(chs,NULL,16);}returnndataIndex+1;}//發(fā)送數(shù)據(jù)voidCCANTestDlg::OnBnClickedButtonSend(){CStringszFrID;CStringszData;CStringszSpTime;CStringszTimes;m_Edit_ID.GetWindowText(szFr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論