




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
-.zc*上位機(jī)串口通信助手源代碼實(shí)例詳解功能1軟件翻開(kāi)時(shí),自動(dòng)檢測(cè)有效COM端口2軟件翻開(kāi)時(shí),自動(dòng)復(fù)原到上次關(guān)閉時(shí)的狀態(tài)3不必關(guān)閉串口,即可直接進(jìn)展更改初始化設(shè)置容〔串口號(hào)、波特率、數(shù)據(jù)位、停頓位、校驗(yàn)位〕,可按更改后的信息自動(dòng)將串口重新翻開(kāi)4可統(tǒng)計(jì)接收字節(jié)和發(fā)送字節(jié)的個(gè)數(shù)5接收數(shù)據(jù)可按16進(jìn)制數(shù)據(jù)和非16進(jìn)制數(shù)據(jù)進(jìn)展整體轉(zhuǎn)換6可將接收到數(shù)據(jù)進(jìn)展保存7可設(shè)置自動(dòng)發(fā)送,發(fā)送時(shí)間可進(jìn)展實(shí)時(shí)更改8可按字符串、16進(jìn)制字節(jié)、文件方式進(jìn)展發(fā)送,字符串和16進(jìn)制字節(jié)可分別進(jìn)展存儲(chǔ),容互不干擾9按16進(jìn)制發(fā)送時(shí),可自動(dòng)校驗(yàn)格式,不會(huì)輸錯(cuò)10可清空發(fā)送或接收區(qū)域的數(shù)據(jù)使用工具VisualStudio2021程序詳解1界面創(chuàng)立圖1用winform創(chuàng)立如圖1所示界面,控件名字分別為:端口號(hào):cb*COMPort波特率:cb*BaudRate數(shù)據(jù)位:cb*DataBits停頓位:cb*StopBits校驗(yàn)位:label5翻開(kāi)串口按鈕:btnOpenCom發(fā)送〔byte〕:tbSendCount接收〔byte〕:tbReceivedCount清空計(jì)數(shù)按鈕:btnClearCount按16進(jìn)制顯示:cb16Display接收區(qū)清空容按鈕:btnClearReceived保存數(shù)據(jù)按鈕:btnSaveFile接收數(shù)據(jù)框:tbReceivedData發(fā)送數(shù)據(jù)框:tbSendData自動(dòng)發(fā)送:cbAutomaticSend間隔時(shí)間:tbSpaceTime按16進(jìn)制發(fā)送:cb16Send發(fā)送區(qū)清空容按鈕:btnClearSend讀入文件按鈕:btnReadFile發(fā)送按鈕:btnSend2創(chuàng)立一個(gè)方法類按Ctrl+shift+A快捷鍵創(chuàng)立一個(gè)類,名字叫Methods,代碼為:usingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingSystem.IO.Ports;usingSystem.Linq;usingSystem.Te*t;usingSystem.Threading.Tasks;namespace串口助手sdd{classMethods{//獲取有效的COM口publicstaticstring[]ActivePorts(){ArrayListactivePorts=newArrayList();foreach(stringpnameinSerialPort.GetPortNames()){activePorts.Add(Convert.ToInt32(pname.Substring(3)));}activePorts.Sort();string[]mystr=newstring[activePorts.Count];inti=0;foreach(intnuminactivePorts){mystr[i++]="COM"+num.ToString();}returnmystr;}//16進(jìn)制字符串轉(zhuǎn)換為byte字符數(shù)組publicstaticByte[]_16strToHe*(stringstrValues){string[]he*ValuesSplit=strValues.Split('');Byte[]he*Values=newByte[he*ValuesSplit.Length];Console.WriteLine(he*ValuesSplit.Length);for(inti=0;i<he*ValuesSplit.Length;i++){he*Values[i]=Convert.ToByte(he*ValuesSplit[i],16);}returnhe*Values;}//byte數(shù)組以16進(jìn)制形式轉(zhuǎn)字符串publicstaticstringByteTo16Str(byte[]bytes){stringrecData=null;//創(chuàng)立接收數(shù)據(jù)的字符串foreach(byteoutByteinbytes)//將字節(jié)數(shù)組以16進(jìn)制形式遍歷到一個(gè)字符串{recData+=outByte.ToString("*2")+"";}returnrecData;}//16進(jìn)制字符串轉(zhuǎn)換字符串publicstaticstring_16strToStr(string_16str){stringoutStr=null;byte[]streamByte=_16strToHe*(_16str);outStr=Encoding.Default.GetString(streamByte);returnoutStr;}}}2Form1.cs的代碼為:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.IO.Ports;usingSystem.Linq;usingSystem.Te*t;usingSystem.Te*t.RegularE*pressions;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;usingSystem.IO;usingSystem.Collections;namespace串口助手sdd{publicpartialclassForm1:Form{//聲明變量SerialPortsp=newSerialPort();boolisSetProperty=false;//串口屬性設(shè)置標(biāo)志位privateenumPortState//聲明接口顯示狀態(tài),枚舉型{翻開(kāi),關(guān)閉}stringpath=AppDomain.CurrentDomain.BaseDirectory+"confing.ini";//聲明配置文件路徑stringtbSendDataStr=";//發(fā)送窗口字符串存儲(chǔ)stringtbSendData16=";//發(fā)送窗口16進(jìn)制存儲(chǔ)List<byte>receivedDatas=newList<byte>();//接收數(shù)據(jù)泛型數(shù)組//接收串口數(shù)據(jù)privatevoidsp_DataReceived(objectsender,SerialDataReceivedEventArgse){byte[]ReceivedData=newbyte[sp.BytesToRead];//創(chuàng)立接收字節(jié)數(shù)組sp.Read(ReceivedData,0,ReceivedData.Length);//讀取所接收到的數(shù)據(jù)receivedDatas.AddRange(ReceivedData);tbReceivedCount.Te*t=(Convert.ToInt32(tbReceivedCount.Te*t)+ReceivedData.Length).ToString();if(cb16Display.Checked)tbReceivedData.Te*t=Methods.ByteTo16Str(receivedDatas.ToArray());elsetbReceivedData.Te*t=Encoding.Default.GetString(receivedDatas.ToArray());sp.DiscardInBuffer();//丟棄接收緩沖區(qū)數(shù)據(jù)}//發(fā)送串口數(shù)據(jù)privatevoidDataSend(){try{if(cb16Send.Checked){byte[]he*Bytes=Methods._16strToHe*(tbSendData16);sp.Write(he*Bytes,0,he*Bytes.Length);tbSendCount.Te*t=(Convert.ToInt32(tbSendCount.Te*t)+he*Bytes.Length).ToString();}else{sp.WriteLine(tbSendDataStr);tbSendCount.Te*t=(Convert.ToInt32(tbSendCount.Te*t)+tbSendDataStr.Length).ToString();}}catch(E*ceptione*){MessageBo*.Show(e*.Message.ToString());return;}}//設(shè)置串口屬性privatevoidSetPortProperty(){sp.PortName=cb*COMPort.Te*t.Trim();//設(shè)置串口名sp.BaudRate=Convert.ToInt32(cb*BaudRate.Te*t.Trim());//設(shè)置波特率switch(cb*StopBits.Te*t.Trim())//設(shè)置停頓位{case"1":sp.StopBits=StopBits.One;break;case"1.5":sp.StopBits=StopBits.OnePointFive;break;case"2":sp.StopBits=StopBits.Two;break;default:sp.StopBits=StopBits.None;break;}sp.DataBits=Convert.ToInt32(cb*DataBits.Te*t.Trim());//設(shè)置數(shù)據(jù)位switch(cb*Parity.Te*t.Trim())//設(shè)置奇偶校驗(yàn)位{case"無(wú)":sp.Parity=Parity.None;break;case"奇校驗(yàn)":sp.Parity=Parity.Odd;break;case"偶校驗(yàn)":sp.Parity=Parity.Even;break;default:sp.Parity=Parity.None;break;}sp.ReadTimeout=5000;//設(shè)置超時(shí)時(shí)間為5sControl.CheckForIllegalCrossThreadCalls=false;//這個(gè)類中我們不檢查跨線程的調(diào)用是否合法(因?yàn)?net2.0以后加強(qiáng)了平安機(jī)制,,不允許在winform中直接跨線程訪問(wèn)控件的屬性)//定義DataReceived事件的委托,當(dāng)串口收到數(shù)據(jù)后出發(fā)事件sp.DataReceived+=newSerialDataReceivedEventHandler(sp_DataReceived);}//設(shè)置端口顯示狀態(tài)privatevoidDisplayPortState(PortStateportState){toolStripStatusLabel1.Te*t=cb*COMPort.Te*t+"端口處于"+portState+"狀態(tài)"+cb*BaudRate.Te*t+""+cb*DataBits.Te*t+""+cb*StopBits.Te*t+""+cb*Parity.Te*t;}//重新翻開(kāi)串口privatevoidAgainOpenPort(){if(sp.IsOpen){try{sp.Close();SetPortProperty();isSetProperty=true;sp.Open();}catch(E*ception){isSetProperty=false;btnOpenCom.Te*t="翻開(kāi)串口";DisplayPortState(PortState.關(guān)閉);MessageBo*.Show("串口無(wú)效或已被占用!","錯(cuò)誤提示");return;}DisplayPortState(PortState.翻開(kāi));}else{DisplayPortState(PortState.關(guān)閉);}}publicForm1(){InitializeComponent();}//軟件啟動(dòng)時(shí)加載事件privatevoidForm1_Load(objectsender,EventArgse){*region加載配置文件Hashtableht=newHashtable();if(File.E*ists(path)){try{stringmyline=";string[]str=newstring[2];using(StreamReadersr=newStreamReader(path)){myline=sr.ReadLine();while(myline!=null){str=myline.Split('=');ht.Add(str[0],str[1]);myline=sr.ReadLine();}}}catch(E*ceptione*){MessageBo*.Show(e*.Message.ToString());}}*endregion*region設(shè)置窗口為固定大小且不可最大化this.Ma*imumSize=this.Size;this.MinimumSize=this.Size;this.Ma*imizeBo*=false;*endregion*region列出常用的波特率cb*BaudRate.Items.Add("1200");cb*BaudRate.Items.Add("2400");cb*BaudRate.Items.Add("4800");cb*BaudRate.Items.Add("9600");cb*BaudRate.Items.Add("19200");cb*BaudRate.Items.Add("38400");cb*BaudRate.Items.Add("43000");cb*BaudRate.Items.Add("56000");cb*BaudRate.Items.Add("57600");cb*BaudRate.Items.Add("115200");if(ht.ContainsKey("cb*BaudRate"))cb*BaudRate.SelectedInde*=cb*BaudRate.Items.Inde*Of(ht["cb*BaudRate"].ToString());elsecb*BaudRate.SelectedInde*=3;cb*BaudRate.DropDownStyle=ComboBo*Style.DropDownList;*endregion*region列出停頓位cb*StopBits.Items.Add("1");cb*StopBits.Items.Add("1.5");cb*StopBits.Items.Add("2");if(ht.ContainsKey("cb*StopBits"))cb*StopBits.SelectedInde*=cb*StopBits.Items.Inde*Of(ht["cb*StopBits"].ToString());elsecb*StopBits.SelectedInde*=0;cb*StopBits.DropDownStyle=ComboBo*Style.DropDownList;*endregion*region列出數(shù)據(jù)位cb*DataBits.Items.Add("8");cb*DataBits.Items.Add("7");cb*DataBits.Items.Add("6");cb*DataBits.Items.Add("5");if(ht.ContainsKey("cb*DataBits"))cb*DataBits.SelectedInde*=cb*DataBits.Items.Inde*Of(ht["cb*DataBits"].ToString());elsecb*DataBits.SelectedInde*=0;cb*DataBits.DropDownStyle=ComboBo*Style.DropDownList;*endregion*region列出奇偶校驗(yàn)位cb*Parity.Items.Add("無(wú)");cb*Parity.Items.Add("奇校驗(yàn)");cb*Parity.Items.Add("偶校驗(yàn)");if(ht.ContainsKey("cb*Parity"))cb*Parity.SelectedInde*=cb*Parity.Items.Inde*Of(ht["cb*Parity"].ToString());elsecb*Parity.SelectedInde*=0;cb*Parity.DropDownStyle=ComboBo*Style.DropDownList;*endregion*regionCOM口重新加載cb*COMPort.Items.Clear();//去除當(dāng)前串口號(hào)中的所有串口名稱cb*COMPort.Items.AddRange(Methods.ActivePorts());if(ht.ContainsKey("cb*COMPort")&&cb*COMPort.Items.Contains(ht["cb*COMPort"].ToString()))cb*COMPort.SelectedInde*=cb*COMPort.Items.Inde*Of(ht["cb*COMPort"].ToString());elsecb*COMPort.SelectedInde*=0;cb*COMPort.DropDownStyle=ComboBo*Style.DropDownList;*endregion*region初始化計(jì)數(shù)器tbSendCount.Te*t="0";tbSendCount.ReadOnly=true;tbReceivedCount.Te*t="0";tbReceivedCount.ReadOnly=true;*endregion*region初始化當(dāng)前時(shí)間toolStripStatusLabel3.Te*t=DateTime.Now.ToString();*endregion*region初始化串口狀態(tài)toolStripStatusLabel1.ForeColor=Color.Blue;if(!isSetProperty)//串口未設(shè)置則設(shè)置串口屬性{SetPortProperty();isSetProperty=true;}try{sp.Open();btnOpenCom.Te*t="關(guān)閉串口";DisplayPortState(PortState.翻開(kāi));}catch(E*ception){//串口翻開(kāi)失敗后,串口屬性設(shè)置標(biāo)志位設(shè)為falseisSetProperty=false;MessageBo*.Show("串口無(wú)效或已被占用!","錯(cuò)誤提示");}*endregion*region初始化間隔時(shí)間if(ht.ContainsKey("tbSpaceTime"))tbSpaceTime.Te*t=ht["tbSpaceTime"].ToString();elsetbSpaceTime.Te*t="1000";*endregion*region初始化按16進(jìn)制顯示狀態(tài)if(ht.ContainsKey("cb16Display")&&ht["cb16Display"].ToString()=="True")cb16Display.Checked=true;elsecb16Display.Checked=false;*endregion*region初始化按16進(jìn)制發(fā)送狀態(tài)if(ht.ContainsKey("cb16Send")&&ht["cb16Send"].ToString()=="True")cb16Send.Checked=true;elsecb16Send.Checked=false;*endregion*region初始化發(fā)送區(qū)文本if(ht.ContainsKey("tbSendData16")&&ht.ContainsKey("tbSendDataStr")){tbSendData16=ht["tbSendData16"].ToString();tbSendDataStr=ht["tbSendDataStr"].ToString();if(cb16Send.Checked)tbSendData.Te*t=ht["tbSendData16"].ToString();elsetbSendData.Te*t=ht["tbSendDataStr"].ToString();}*endregiontbSendData.Focus();}//顯示當(dāng)前時(shí)間privatevoidtimer1_Tick(objectsender,EventArgse){toolStripStatusLabel3.Te*t=DateTime.Now.ToString();}//點(diǎn)擊翻開(kāi)串口按鈕privatevoidbtnOpenCom_Click(objectsender,EventArgse){if(!sp.IsOpen)//串口沒(méi)有翻開(kāi)時(shí){if(!isSetProperty)//串口未設(shè)置則設(shè)置串口屬性{SetPortProperty();isSetProperty=true;}try{sp.Open();btnOpenCom.Te*t="關(guān)閉串口";DisplayPortState(PortState.翻開(kāi));}catch(E*ception){//串口翻開(kāi)失敗后,串口屬性設(shè)置標(biāo)志位設(shè)為falseisSetProperty=false;MessageBo*.Show("串口無(wú)效或已被占用!","錯(cuò)誤提示");}}else//串口已經(jīng)翻開(kāi){try{sp.Close();isSetProperty=false;btnOpenCom.Te*t="翻開(kāi)串口";DisplayPortState(PortState.關(guān)閉);}catch(E*ception){MessageBo*.Show("關(guān)閉串口時(shí)發(fā)生錯(cuò)誤","錯(cuò)誤提示");}}}//發(fā)送串口數(shù)據(jù)privatevoidbtnSend_Click(objectsender,EventArgse){if(tbSendData.Te*t.Trim()==")//檢測(cè)發(fā)送數(shù)據(jù)是否為空{(diào)MessageBo*.Show("請(qǐng)輸入要發(fā)送的數(shù)據(jù)!","錯(cuò)誤提示");return;}if(sp.IsOpen){DataSend();}else{MessageBo*.Show("串口未翻開(kāi)!","錯(cuò)誤提示");}}//點(diǎn)擊端口號(hào)選擇下拉框按鈕privatevoidcb*COMPort_SelectedInde*Changed(objectsender,EventArgse){AgainOpenPort();}//點(diǎn)擊波特率選擇下拉框按鈕privatevoidcb*BaudRate_SelectedInde*Changed(objectsender,EventArgse){AgainOpenPort();}//點(diǎn)擊數(shù)據(jù)位選擇下拉框按鈕privatevoidcb*DataBits_SelectedInde*Changed(objectsender,EventArgse){AgainOpenPort();}//點(diǎn)擊停頓位選擇下拉框按鈕privatevoidcb*StopBits_SelectedInde*Changed(objectsender,EventArgse){AgainOpenPort();}//點(diǎn)擊校驗(yàn)位選擇下拉框按鈕privatevoidcb*Parity_SelectedInde*Changed(objectsender,EventArgse){AgainOpenPort();}//點(diǎn)擊數(shù)據(jù)接收區(qū)清空按鈕privatevoidbtnClearReceived_Click(objectsender,EventArgse){receivedDatas.Clear();tbReceivedData.Te*t=";}//點(diǎn)擊是否按16進(jìn)制顯示接收數(shù)據(jù)privatevoidcb16Display_CheckedChanged(objectsender,EventArgse){if(cb16Display.Checked)tbReceivedData.Te*t=Methods.ByteTo16Str(receivedDatas.ToArray());elsetbReceivedData.Te*t=Encoding.Default.GetString(receivedDatas.ToArray());}//點(diǎn)擊是否按16進(jìn)制發(fā)送數(shù)據(jù)privatevoidcb16Send_CheckedChanged(objectsender,EventArgse){if(cb16Send.Checked){tbSendData.Te*t=tbSendData16;}else{tbSendData.Te*t=tbSendDataStr;}}//發(fā)送文本框鍵盤(pán)按鍵檢測(cè)privatevoidtbSendData_KeyPress(objectsender,KeyPressEventArgse){if(cb16Send.Checked){//正則匹配stringpattern="[0-9a-fA-F]|\b";//\b:退格鍵Matchm=Rege*.Match(e.KeyChar.ToString(),pattern);if(m.Success){if(e.KeyChar!='\b'){if(tbSendData.Te*t.Length%3==2){tbSendData.Te*t+="";tbSendData.SelectionStart=tbSendData.Te*t.Length;}e.KeyChar=Convert.ToChar(e.KeyChar.ToString().ToUpper());}e.Handled=false;}else{e.Handled=true;}}else{e.Handled=false;}}//點(diǎn)擊清空發(fā)送容privatevoidbtnClearSend_Click(objectsender,EventArgse){tbSendData.Te*t=";if(cb16Send.Checked)tbSendData16=";elsetbSendDataStr=";}//點(diǎn)擊清空計(jì)數(shù)器數(shù)據(jù)privatevoidbtnClearCount_Click(objectsender,EventArgse){tbReceivedCount.Te*t="0";tbSendCount.Te*t="0";}//點(diǎn)擊是否設(shè)置自動(dòng)發(fā)送privatevoidcbAutomaticSend_CheckedChanged(objectsender,EventArgse){if(cbAutomaticSend.Checked){timer2.Enabled=true;timer2.Interval=Convert.ToInt32(tbSpaceTime.Te*t);}else{timer2.Enabled=false;}}//自動(dòng)發(fā)送時(shí)間文本框鍵盤(pán)按鍵檢測(cè)privatevoidtbSpaceTime_KeyPress(objectsender,KeyPressEventArgse){//正則匹配stringpattern="[0-9]|\b";Matchm=Rege*.Match(e.KeyChar.ToString(),pattern);if(m.Success){timer2.Interval=Convert.ToInt32(tbSpaceTime.Te*t);e.Handled=false;}else{e.Handled=true;}}//串口顯示狀態(tài)privatevoidtimer2_Tick(objectsender,EventArgse){if(sp.IsOpen){DataSend();}else{timer2.Enabled=false;cbAutomaticSend.Checked=false;MessageBo*.Show("串口未翻開(kāi)!","錯(cuò)誤提示");return;}if(tbSendData.Te*t.Trim()==")//檢測(cè)發(fā)送數(shù)據(jù)是否為空{(diào)timer2.Enabled=false;cbAutomaticSend.Checked=false;MessageBo*.Show("請(qǐng)輸入要發(fā)送的數(shù)據(jù)!","錯(cuò)誤提示");return;}}//關(guān)閉窗口時(shí)出發(fā)的事件privatevoidForm1_FormClosed(objectsender,FormClosedEventArgse){try{using(StreamWritersw=newStreamWriter(path,false)){sw.WriteLine("cb*COMPort="+cb*COMPort.Te*t);sw.WriteLine("cb*BaudRate="+cb*BaudRate.Te*t);sw.WriteLine("cb*DataBits="+cb*DataBits.Te*t);sw.WriteLine("cb*StopBits="+cb*StopBits.Te*t);sw.WriteLine("cb*Parity="+cb*Parity.Te*t);sw.WriteLine("cb16Display="+cb16Display.Checked.ToString());sw.WriteLine("tbSpaceTime="+tbSpaceTi
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度投資理財(cái)代理服務(wù)合同
- 二零二五年度吊車安全操作規(guī)程制定及執(zhí)行合同
- 二零二五年度冬季勞務(wù)掃雪環(huán)境保護(hù)協(xié)議
- 2025年度正規(guī)貨車駕駛員勞動(dòng)合同及貨運(yùn)業(yè)務(wù)操作規(guī)范合同
- 二零二五年度扶貧項(xiàng)目風(fēng)險(xiǎn)防范與應(yīng)急處理合作協(xié)議
- 二零二五年度合同糾紛賠償調(diào)解服務(wù)協(xié)議
- 二零二五年度名人房產(chǎn)銷售代理合同范本
- 2025年度智能制造股權(quán)抵押貸款合同
- 2025年度電子商務(wù)平臺(tái)合作解除終止范本
- 二零二五年度企業(yè)勞動(dòng)合同解除與離職員工就業(yè)援助服務(wù)協(xié)議
- 圖解2022年新制訂全面推進(jìn)“大思政課”建設(shè)的工作方案學(xué)習(xí)解讀《全面推進(jìn)“大思政課”建設(shè)的工作方案》課件
- 《馬克思主義與社會(huì)科學(xué)方法論》課件第一講馬克思主義與社會(huì)科學(xué)方法論導(dǎo)論
- 港華紫荊產(chǎn)品一覽
- 【保密工作檔案】外場(chǎng)試驗(yàn)保密工作方案
- 《民法典》婚姻家庭編解讀之夫妻個(gè)人財(cái)產(chǎn)第1063條PPT課件
- 2 遺傳圖繪制
- 人教部編版二年級(jí)語(yǔ)文下冊(cè)第六單元15古詩(shī)二首精品教案(集體備課)
- 三年級(jí)下冊(cè)數(shù)學(xué)教案-2.1速度、時(shí)間、路程-滬教版
- 400噸汽車吊性能表
- 墻面板安裝爬梯驗(yàn)算
- 矢量分析與場(chǎng)論講義
評(píng)論
0/150
提交評(píng)論