版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
UCGUI中的中的設(shè)備驅(qū)動(dòng)解析作者:UCGUI郵箱:UCGUI@163.com主頁(yè):http://www.UCGUI.com版本:vl.0.0.0時(shí)間:2006-12-19版本修改說(shuō)明時(shí)間vl.0.0.0/解析UCGUI的輸入設(shè)備驅(qū)動(dòng),如觸摸屏/鍵盤等設(shè)計(jì)接口。/解析UCGUI的輸出設(shè)備驅(qū)動(dòng)以及輸出設(shè)備的接口和寫法。2006-12-19摘要:主要說(shuō)明UCGUI中的設(shè)備驅(qū)動(dòng)接口,包括輸入設(shè)備以及輸出設(shè)備驅(qū)動(dòng),并說(shuō)明如何完成UCGUI的這些驅(qū)動(dòng)。目錄UCGUI的消息處理機(jī)制.UCGUI中支持的幾種輸入設(shè)備.UCGUI中的觸摸屏校正分析.UCGUI中的圖形驅(qū)動(dòng)分析.UCGUI的消息處理機(jī)制.UCGUI的消息流轉(zhuǎn)泵,UCGUI的執(zhí)行路徑是單一執(zhí)行緒的,并沒有專門的消息收集以及消息處理的線程,它是先收集到消息并馬上同步處理,緊接著根據(jù)消息引起的屏幕畫面變化(窗體移動(dòng)/銷毀/生成/尺寸及Z序變化等),繪制變化后的屏幕畫面,主要是處理無(wú)效窗體的重繪.在MainTask()這個(gè)用戶入口點(diǎn)上,調(diào)用WM_Exec1(),就可以讓UCGUI的消息流轉(zhuǎn)起來(lái).消息隊(duì)列問(wèn)題,UCGUI消息處理不用隊(duì)列,而是采取兩個(gè)變量,一個(gè)變量記載當(dāng)前消息,一個(gè)變量記載先前消息,比較兩者是決定是否要處理該消息,處理完消息再將當(dāng)前消息更新到先前消息變量中.這樣處理起來(lái),比起采用消息隊(duì)列,就省了不知道多少空間了,因?yàn)樵趩⒂肕OSUE類設(shè)備時(shí),移動(dòng)消息是非常多的.不采用消息隊(duì)列,也導(dǎo)致了UGGUI中的所有的消息處理都是同步的,但這對(duì)于UCGUI來(lái)說(shuō)也不是什么嚴(yán)重的問(wèn)題,并不是必須的功能;沒有消息隊(duì)列,則每個(gè)消息的處理不能占用大量的時(shí)間,否則嚴(yán)重影響消息處理的靈敏度,造成消息的丟失.但是這些問(wèn)題都是可以接受的,因?yàn)閹?lái)的空間效率太有幫助了.消息多層掛起的問(wèn)題,由于是單一執(zhí)行緒而且是同步處理所有消息,所以如果在消息處理過(guò)程中又導(dǎo)致了再次調(diào)用WM_Exec1(),進(jìn)入到新的消息LOOP當(dāng)中,那么舊的消息LOOP就被永遠(yuǎn)掛起來(lái)了(對(duì)于那些芯片中CALL棧有限的情形,是絕對(duì)應(yīng)該避免的,因?yàn)槠桨椎恼加昧硕鄬拥腃ALL棧而無(wú)法返回),在打開多話框時(shí)即產(chǎn)生此問(wèn)題,避免的辦法很簡(jiǎn)單:.僅創(chuàng)建對(duì)話框,不進(jìn)入對(duì)話框消息LOOP;.將消息LOOP放在MainTask()任務(wù)入口中調(diào)用.注意:有朋友會(huì)以為會(huì)什么不為每一個(gè)消息LOOP在多任務(wù)系統(tǒng)中開啟單獨(dú)的線程?雖然UCGUI的消息處理已經(jīng)加入了互斥機(jī)制,但是UCGUI中各個(gè)窗體沒有單獨(dú)隊(duì)列,消息都是一些全局變量,所以開啟多個(gè)任務(wù)沒有實(shí)質(zhì)上的意義,因?yàn)橐粋€(gè)任務(wù)處理完消息時(shí),另外一個(gè)任務(wù)只能在空轉(zhuǎn),因?yàn)橄⒁呀?jīng)處理完畢了.具體看看WM_Exec1()函數(shù),使用while(1)WM_Exec1();即可建立消息LOOP.intWM_Exec1(void)(//PollPIDifnecessaryif(WM_pfPollPID)(//檢測(cè)是否設(shè)置了讀取pointerinputdevice(touch-screenormouse).)的接口函數(shù).WM_pfPollPID();//比如觸摸屏的GUI_TOUCH_Exec()或者PS2的GUI_MOUSE_DRIVER_PS2_OnRx(),但可不設(shè)置.}if(WM_pfHandlePID)(//處理pointerinputdevice輸入的消息.if(WM_pfHandlePID()) 2 見壯* UCGUI論壇return1; //Wehavedonesomething..}if(GUI_PollKeyMsg()){//處理按鍵式設(shè)備輸入的消息.return1; //Wehavedonesomething...}if(WM_IsActive&&WM__NumInvalidWindows){WM_LOCK();_DrawNext();〃繪制無(wú)效窗體.WM_UNLOCK();return1; //Wehavedonesomething...}return0; //Therewasnothingtodo...}UCGUI中支持的幾種輸入設(shè)備.以前在多篇文章都有介紹過(guò)UCGUI中的消息處理機(jī)制,其中將消息輸入設(shè)備分成了兩類:按鍵式的鍵盤類輸入設(shè)備.鍵盤內(nèi)設(shè)備的處理比較簡(jiǎn)單,UCGUI中也是采用了節(jié)約空間的微型設(shè)計(jì)方案,只求可以正常處理設(shè)備消息即可;具體的思路:向外提供一個(gè)鍵盤驅(qū)動(dòng)接口,讓具體實(shí)現(xiàn)鍵盤輸入設(shè)備驅(qū)動(dòng)的用戶,在自己處理鍵盤輸入驅(qū)動(dòng)處調(diào)用此函數(shù),將得到的硬件鍵盤值傳送給UCGUI,即完成一次鍵盤事件,UCGUI就會(huì)在消息處理LOOP當(dāng)中處理按鍵,將其發(fā)發(fā)到UCGUI中的當(dāng)前焦點(diǎn)窗體.UCGUI中的鍵盤消息,采用一個(gè)的全局鍵盤消息變量以及是否有按鍵的全局變量,如下所示:staticint_KeyMsgCnt;//是否有按鍵消息.staticstruct(intKey;intPressedCnt;}_KeyMsg; 〃啟用win窗體管理時(shí),記載當(dāng)前鍵盤消息.staticint_Key;//未啟用窗體管理時(shí),記載當(dāng)前鍵盤消息.鍵盤消息的驅(qū)動(dòng)接口如下所示,要使UCGUI中的鍵盤驅(qū)動(dòng)起來(lái),有兩種形式:一種是建立一個(gè)任務(wù),以一定的頻率去檢測(cè)并讀取鍵盤;另一種是直接在驅(qū)動(dòng)中讀取鍵盤.這兩種都必須調(diào)用下面的UCGUI提供的鍵盤驅(qū)動(dòng)接口來(lái)將從設(shè)備上讀取到的鍵盤值傳送給UCGUI..啟用win窗體管理時(shí),使用_KeyMsg作為鍵盤消息記錄變量,在使用窗體管理模塊時(shí),通過(guò)在消息LOOP當(dāng)中調(diào)用GUI_PollKeyMsg()函數(shù)檢測(cè)_KeyMsg,并將收集到的鍵盤消息以WM_KEY傳送到當(dāng)前焦點(diǎn)窗體.voidGUI_StoreKeyMsg(intKey,intPressedCnt);//第一個(gè)參數(shù)為按鍵值,第二個(gè)參數(shù)為該鍵狀態(tài),1為按下,0為彈起..未啟用WIN窗體管理時(shí),使用_Key作為鍵盤消息記錄變量,沒有使用窗體管理模塊時(shí),用戶在應(yīng)用中通過(guò)調(diào)用GUI_WaitKey()或者GUI_GetKey()來(lái)讀取按鍵值.voidGUI_StoreKey(intKey);[注意:按鍵式輸入設(shè)備在UCGUI中處理得相當(dāng)簡(jiǎn)單,僅用了一個(gè)全局變量而沒有用到隊(duì)列來(lái)緩沖鍵盤輸入,這有可能會(huì)造鍵盤輸入的丟失,所以如果要求比嚴(yán)格的情況下,最好可以自己建立一個(gè)數(shù)組來(lái)緩沖鍵盤輸入值.]滑動(dòng)式的MOUSE類輸入設(shè)備.UCGUI中的滑動(dòng)類輸入設(shè)備可以具體分為兩類,具體情況如下:.兩類設(shè)備均相同的使用相同的接口,來(lái)最終向UCGUI傳送從設(shè)備中讀取的硬件消息.//pointerinputdevice類設(shè)備最終都調(diào)用這兩個(gè)接口函數(shù)來(lái)設(shè)置及獲取當(dāng)前的消息.voidGUI_PID_StoreState(constGUI_PID_STATE*pState);//傳送給UCGUI從設(shè)備層讀取的pointerinputdevice消息.intGUI_PID_GetState(GUI_PID_STATE*pState); //UCGUI中讀取當(dāng)前pointerinputdevice消息..MOUSE設(shè)備,UCGUI提供了PS2串口MOUSE的驅(qū)動(dòng)支持,并建立了一個(gè)基礎(chǔ)的將MOUSE消息傳送給UCGUI的API集,具體不同的MOUSE設(shè)備可以調(diào)用這套API接口來(lái)將接收到的MOUSE消息分發(fā)出去.〃基礎(chǔ)MOUSE驅(qū)動(dòng)接口.voidGUI_MOUSE_StoreState(constGUI_PID_STATE*pState);intGUI_MOUSE_GetState(GUI_PID_STATE*pState);UCGUI中提示了串口的PS2的驅(qū)動(dòng),具體在GUI_MOUSE_DriverPS2.c文件當(dāng)中,參考一下那個(gè)驅(qū)動(dòng)就可以很清楚的了解其它類型的MOUSE驅(qū)動(dòng)應(yīng)該如何寫,最終都是處理與硬件相關(guān)的部分后,調(diào)用如下接口來(lái)傳送消息..觸摸屏設(shè)備,除了讀取設(shè)備的具體處理方法與Mouse不一樣之外,其收集后消息的傳送與處理全部都是一樣的,均會(huì)被UCGUI處理成同一杰消息分發(fā)出去(WM_TOUCH).相比起MOUSE設(shè)備,UCGUI中對(duì)于觸摸屏的具體驅(qū)動(dòng)接口稍微復(fù)雜一些.UCGUI中的觸摸屏驅(qū)動(dòng)須提供四個(gè)底層驅(qū)動(dòng)接口函數(shù),這四個(gè)函數(shù)在GUI_TOUCH_Exec()中調(diào)用,具體的實(shí)現(xiàn)必須由用戶根據(jù)實(shí)際的觸摸屏來(lái)寫驅(qū)動(dòng).GUI_TOUCH_Exec()的功能就是讀取觸摸屏 4 見壯* UCGUI論壇坐標(biāo),并且傳送到UCGUI當(dāng)中(調(diào)用GUI_TOUCH_StoreStateEx()).以下為UCGUI觸摸屏提供的三層接口.底層觸摸屏驅(qū)動(dòng)接口.//觸摸屏讀的時(shí)候只能Y/X軸分別讀,所以UCGUI提供了兩個(gè)函數(shù),用于開啟讀X軸還是讀Y軸,意即激活讀X或者是激活讀Y軸.GUI_TOUCH_X_ActivateX()PreparesmeasurementforY-axis.GUI_TOUCH_X_ActivateY()PreparesmeasurementforX-axis.〃實(shí)際讀取X或者是Y軸的坐標(biāo).GUI_TOUCH_X_MeasureX()ReturnstheX-resultoftheA/Dconverter.GUI_TOUCH_X_MeasureY()ReturnstheY-resultoftheA/Dconverter中間層觸摸屏驅(qū)動(dòng)接口.voidGUI_TOUCH_StoreStateEx(constGUI_PID_STATE*pState);voidGUI_TOUCH_StoreState(intx,inty);intGUI_TOUCH_GetState(GUI_PID_STATE*pState);觸摸屏高層的應(yīng)用接口voidGUI_TOUCH_Exec(void);//讀取觸摸屏.//校正觸摸屏.intGUI_TOUCH_Calibrate(intCoord,intLog0,intLog1,intPhys0,intPhys1);〃設(shè)置默認(rèn)的校正參數(shù).voidGUI_TOUCH_SetDefaultCalibration(void);voidGUI_TOUCH_GetCalData(intCoord,int*pMin,int*pMax);//獲取校正參數(shù).UCGUI中的觸摸屏校正分析.問(wèn)題:關(guān)于觸摸屏校準(zhǔn)問(wèn)題我用串口打印出來(lái)來(lái)的觸摸屏的坐標(biāo)是AD轉(zhuǎn)換后的值,還沒有轉(zhuǎn)換成LCD的坐標(biāo)我的LAD是320*240的,怎么校準(zhǔn)呀,希望高手能夠指點(diǎn)給我個(gè)例子.深入的解析UCGUI中觸摸屏坐標(biāo)與LCD坐標(biāo)的轉(zhuǎn)換計(jì)算:為什么要進(jìn)行校正.傳統(tǒng)的鼠標(biāo)是一種相對(duì)定位系統(tǒng),只和前一次鼠標(biāo)的位置坐標(biāo)有關(guān),而觸摸屏則是一種絕對(duì)坐標(biāo)系統(tǒng).通常應(yīng)用程序中使用的LCD坐標(biāo)是以像素為單位,而從觸摸屏中讀出的是點(diǎn)的物理坐標(biāo),其坐標(biāo)軸的方向、XY值的比例因子、偏移量、縮放因子都與LCD坐標(biāo)不同,所以必須將從驅(qū)動(dòng)中讀取的觸摸屏絕對(duì)坐標(biāo)轉(zhuǎn)換成LCD的坐標(biāo),然后才能正確處理觸摸屏消息.UCGUI中如何進(jìn)行觸摸屏校正.UCGUI中可以用兩種方法進(jìn)行校正配置,一是配置一個(gè)宏的值;二是使用運(yùn)行時(shí)校正支持,在觸摸屏使用前進(jìn)行校正,如下:.使用配置宏進(jìn)行UCGUI中的觸摸屏校正.以下為觸摸屏驅(qū)動(dòng)返回的觸摸屏坐標(biāo)系統(tǒng)相對(duì)于LCD坐標(biāo)系統(tǒng)的范圍值(可以理解為觸摸屏的邊界在LCD坐標(biāo)系統(tǒng)中的坐標(biāo)),這些值都是可以經(jīng)過(guò)校正計(jì)算出來(lái)的,一般情況下也可以校正出來(lái)后通過(guò)如下宏進(jìn)行默認(rèn)的配置.如下:#defineGUI_TOUCH_AD_LEFT 30 //Minimum value returned by the A/Dconverter.#defineGUI_TOUCH_AD_RIGHT 220 //Maximum value returned by the A/Dconverter.#defineGUI_TOUCH_AD_TOP30//MinimumvaluereturnedbytheA/Dconverter.#defineGUI_TOUCH_AD_BOTTOM220//MaximumvaluereturnedbytheA/Dconverter.[注:簡(jiǎn)單的可以理解為觸摸屏四個(gè)邊界在屏幕坐標(biāo)系中的坐標(biāo)值,觸摸屏左上角(30,220),右下角(220,220)]〃觸摸屏精度,其意義相當(dāng)于LCD屏幕之解析度.#defineGUI_TOUCH_XSIZELCD_XSIZE//Horizontalareacoveredbytouch-screen.#defineGUI_TOUCH_YSIZELCD_YSIZE//Verticalareacoveredbytouch-screen..調(diào)用函數(shù)進(jìn)行觸摸屏運(yùn)行時(shí)校正.//參數(shù)意義依次為:要校正的坐標(biāo)軸(0為校正x,1為較正y)/lcd點(diǎn)1坐標(biāo)及點(diǎn)2坐標(biāo)/觸摸屏點(diǎn)1及點(diǎn)2坐標(biāo).intGUI_TOUCH_Calibrate(intCoord,intLog0,intLog1,intPhys0,intPhys1)(intl0=0;intl1=(Coord==GUI_COORD_X)?LCD_XSIZE-1:LCD_YSIZE-1;if(labs(Phys0-Phys1)<20)(return1;}if(labs(Log0-Log1)<20)(return1;}xyMinMax[Coord].Min=_Log2Phys(l0,Log0,Log1,Phys0,Phys1);xyMinMax[Coord].Max=_Log2Phys(l1,Log0,Log1,Phys0,Phys1);return0;}/**********************************************************************_Log2Phys*/6staticint_Log2Phys(intl,I3210,I3211,I32p0,I32pl)(returnp0+((p1-p0)*(l-l0))/(l1-l0);}以上校正計(jì)算兩個(gè)坐標(biāo)系統(tǒng)偏移值Offset的原理如下,設(shè)Offset/K為觸摸屏坐標(biāo)系統(tǒng)相對(duì)LCD坐標(biāo)系統(tǒng)的在X軸的偏移值即轉(zhuǎn)換比率,觸摸屏Xp,LCD坐標(biāo)Xl.則根據(jù)待定系數(shù)法有:Xp=Offset+X1*Kx;亦即:公式[1].Offset=Xp+(0-X1)*Kx; //這個(gè)公式也就是_Log2Phys()中的求兩坐標(biāo)系統(tǒng)偏移的算法原理.據(jù)此,觸摸屏左邊界GUI_TOUCH_AD_LEFT就是如此計(jì)算出來(lái)的,但要注意其右邊界GUI_TOUCH_AD_RIGHT,則:GUI_TOUCH_AD_RIGHT=Offset+LCD_XSIZE*Kx即:GUI_TOUCH_AD_RIGHT=Xp+(LCD_XSIZE-X1)*KxGUI_TOUCH_AD_LEFT=Xp+(0-X1)*Kx同理可得:GUI_TOUCH_AD_TOP=Yp+(0-Yl)*KyGUI_TOUCH_AD_BOTTOM=Yp+(LCD_YSIZE-Y1)*Ky上面基本就講清了GUI_TOUCH_Calibrate()這個(gè)校正函數(shù)的計(jì)算原理,用戶可以調(diào)用這個(gè)函數(shù)進(jìn)行運(yùn)行時(shí)校正,只須提高一個(gè)點(diǎn)相應(yīng)的兩種坐標(biāo)系統(tǒng)下面的坐標(biāo)值,即可以計(jì)算出觸摸屏邊界相對(duì)于屏幕坐標(biāo)系統(tǒng)的坐標(biāo).公式[2].Xl=(Xp-Offset)/Kx //這個(gè)公式就是從觸摸屏坐標(biāo)轉(zhuǎn)換成LCD坐標(biāo)的原理.這個(gè)公式將在第3點(diǎn)中說(shuō)明.觸摸屏坐標(biāo)與LCD屏幕坐標(biāo)的轉(zhuǎn)換計(jì)算.[1].UCGUI中使用如下函數(shù)來(lái)進(jìn)行轉(zhuǎn)換,其中xyMinMax數(shù)中存放的是觸摸屏校正后的觸摸屏邊界相對(duì)屏幕坐標(biāo)系統(tǒng)的坐標(biāo).staticint_AD2X(intadx);//Convertphysicalvalueintocoordinates.staticint_AD2Y(intady);//Convertphysicalvalueinto(logical)coordinates.staticint_AD2X(intadx)(I32r=adx-xyMinMax[GUI_COORD_X].Min;r*=GUI_TOUCH_XSIZE-1;returnr/(xyMinMax[GUI_COORD_X].Max-xyMinMax[GUI_COORD_X].Min); 7}staticint_AD2Y(intady)(I32r=ady-xyMinMax[GUI_COORD_Y].Min;r*=GUI_TOUCH_YSIZE-1;returnr/(xyMinMax[GUI_COORD_Y].Max-xyMinMax[GUI_COORD_Y].Min);}由第3點(diǎn)推出一個(gè)公式[2]:Xl=(Xp-Offset)/Kx//參見前面第2點(diǎn)所述可以理解_AD2X/_AD2Y這兩個(gè)轉(zhuǎn)換觸摸屏坐標(biāo)到屏幕LCD坐標(biāo)的轉(zhuǎn)換關(guān)系:.xyMinMax[GUI_COORD_X].Min/xyMinMax[GUI_COORD_Y].Min觸摸屏坐標(biāo)相對(duì)屏幕LCD坐標(biāo)系的偏移值OffSet..(GUI_TOUCH_YSIZE - 1)/(xyMinMax[GUI_COORD_Y].Max -xyMinMax[GUI_COORD_Y].Min)即為轉(zhuǎn)換比率Kx.0.UCGUI中的圖形驅(qū)動(dòng)分析.相比于上面的觸摸屏校正計(jì)算,UCGUI中的圖形驅(qū)動(dòng)沒有什么計(jì)算方法問(wèn)題,須要移值UCGUI時(shí)提供相應(yīng)的圖形驅(qū)動(dòng)接口實(shí)現(xiàn)即可,但針對(duì)多種不同的LCD控制器,因?yàn)樘峁┑墓δ軓?qiáng)弱不同,所以差別還是比較大的,而且UCGUI中LCD控制器有大量的配置宏.本文將對(duì)實(shí)際的LCD驅(qū)動(dòng)為例來(lái)講解UCGUI中的LCD的配置以及LCD驅(qū)動(dòng)接口,從而讓移值的用戶能夠更加明白移值過(guò)程.UCGUI在驅(qū)動(dòng)層的接口如下:voidLCD_L0_SetPixelIndex(intx,inty,intPixelIndex);//畫點(diǎn)..unsignedintLCD_L0_GetPixelIndex(intx,inty);〃取點(diǎn)..voidLCD_L0_XorPixel(intx,inty);//反色畫點(diǎn)…voidLCD_L0_DrawHLine(intx0,inty, intx1);//水平線…voidLCD_L0_DrawVLine(intx,inty0, inty1);//豎直線…voidLCD_L0_FillRect(intx0,inty0,intx1,inty1);〃矩形填充…voidLCD_L0_DrawBitmap(intx0,inty0,intxsize,intysize,intBitsPerPixel,intBytesPerLine,constU8*pData,intDiff,constLCD_PIXELINDEX*pTrans);//位圖…staticvoid_DrawBitLine1BPP(intx,inty,U8const*p,intDiff,intxsize,constLCD_PIXELINDEX*pTrans);//單色位圖…staticvoid_DrawBitLine2BPP(intx,inty,U8const*p,intDiff,intxsize,constLCD_PIXELINDEX*pTrans);//2色位圖…staticvoid_DrawBitLine4BPP(intx,inty,U8const*p,intDiff,intxsize,constLCD_PIXELINDEX*pTrans);
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024馬腦山養(yǎng)殖戶合同
- 2024樓頂廣告牌安裝合同范本
- 房產(chǎn)交易資金托管服務(wù)合同
- 社區(qū)環(huán)境衛(wèi)生維護(hù)合同
- 授權(quán)經(jīng)營(yíng)合同范本
- 房屋建筑工程協(xié)議2024年
- 標(biāo)準(zhǔn)傷殘賠償協(xié)議書參考
- 2023年高考地理第一次模擬考試卷-(廣東B卷)(考試版)A4
- 【人教版系列】四年級(jí)數(shù)學(xué)下冊(cè)全冊(cè)專項(xiàng)測(cè)評(píng)(含答案)
- 關(guān)于離婚協(xié)議書的撰寫指南
- 遼寧省大連市金普新區(qū)2024-2025學(xué)年七年級(jí)上學(xué)期11月期中英語(yǔ)試題(無(wú)答案)
- 生態(tài)文明學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 區(qū)病案質(zhì)控中心匯報(bào)
- 期中測(cè)試卷(1-4單元)(試題)2024-2025學(xué)年四年級(jí)上冊(cè)數(shù)學(xué)人教版
- 教育局職業(yè)院校教師培訓(xùn)實(shí)施方案
- 《萬(wàn)維網(wǎng)服務(wù)大揭秘》課件 2024-2025學(xué)年人教版新教材初中信息技術(shù)七年級(jí)全一冊(cè)
- 2024年新華社招聘應(yīng)屆畢業(yè)生及留學(xué)回國(guó)人員129人歷年高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
- 人教版(2024新版)七年級(jí)上冊(cè)英語(yǔ)Unit 5單元測(cè)試卷(含答案)
- (完整版)新概念英語(yǔ)第一冊(cè)單詞表(打印版)
- 美食行業(yè)外賣平臺(tái)配送效率提升方案
- 中國(guó)民用航空局信息中心招聘筆試題庫(kù)2024
評(píng)論
0/150
提交評(píng)論