付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、其于MFC的串口调试助手编辑过程一、新建打开VC6.0 文件一 新建 一工程 一 MFC AppWiard(exe) 位置(选择保存 工程位置)一工程名称(输入工程名XXXX ) 一确定一选择基本对话框一下一步一下一步一下一步一选择(CXXXXDIg 1完成一确定一在生成的基 本对话框内将不需要按钮及提示框(自动生成的“确定”“取消” 及提示框)删除或修改使用,至此基本框架完成如下图:S CCZ II Z- 0 L' 1 I"'I自文件(D 鄴id)查看也J&Ad)工程CT组注(1)布局心I工具®口皿03)II酋耳Q 0 .嗟d - 国电嚼I H1
2、CScommTestDg 创|问Imembrg: CScomimTeetDIg创耳 ” * 巒,韶* Zj Dtolog* _| Icon* _| Siring Table* _| VersionXI基本框架ram:毎这里谡査対i冏ih5心砖.卷)佻2-_11卩.-一|J1|j/调试k在交件1中鹫按 複交中査找二结果h SQL hbiiggH豳/II 勺 i:v .| ,曰过 I就绪-I 創口:亟g 言n 0"骡 m Tfe 伫日 M題H EZ3RU此控件、(标志)是下面步骤添加进来的串口 控件二、往生成的基本框架中添加控件1、因为控件列表框内没有串口通信用到的通信控件,所以要先添加
3、到控件列表框内再 将控件添加到基本框内使用,步骤如下:菜单栏一 工程一添加到工程一 Components and controlsRegisteredActiveX Controls 选择"Microsoft Communications Control, version 6.0 ” Insert 确定 一 OK 关闭此子窗口完成添加操作标志如上图所示。2、将刚才添加添加到控件列表框内的串口控件添加到基本框架内点击控件列表框内的串口控件,此时光标变为“十”形,在基本框架内随意划取一矩形区域,即可以添加串口控件,不需要修改此控件的大小及位置,因为程编译运行后 此控件是看不到的,步骤结果
4、如下图:.J3、继续往基本框架内添加用于编辑发送数据的输入编辑框及输出编辑框,同理选择控 件列表框内的“编辑框控件”,以相同的操作即可添加两个编辑窗口及一个按纽控件如 下图所示:这两个窗口需要修改大小及位置,因为程序运行后将会显示而串口通信控件则不显示,上图是运行后的效果。4、对以上四个控件编程步骤如下:a、右击串口通信控件一 建立类向导一 ember variables * Control IDS中选择 IDC_MSCOMM1 add variable 一 Member variable name 中输入控件变量名 m_ctrlComm (变量名可以随意选取,但程序中应与所取变量名一致)oL
5、确定b、右击编辑框、属性、常规、ID:中输入ID号,此编辑框用于接收显示数据的其ID号为IDC_EDIT_RXDATA (可以随意选取,但程序中应与所取ID号一致),再在此窗口的样式中勾选”多行”同时将“自动水平滚动(T)”勾选去掉,再勾选“垂直滚动(V)”,此勾选操作是用于垂直多行显示的,按回车后即可输入;同理右击另一编辑框输入ID号为IDC_EDIT_TXDATA此编辑框用于编辑发送数据的,多行显示,发送框可以不用垂直多行显示;再为按钮控件添加IDC_BUTTON_MANUALSEND,并将标题中的“ Button1 ” 改为“发送”, 次就把发送编辑框中的内容发送一次。C、为以上两个编辑
6、框添加变量,与串口通信控件一样添加,为同样也选上用于垂直ID号,为功能是按一IDC EDITRXDATA 添力口 CString 型变量 m_strRXData ;为 IDC_EDIT_TXDATA 添加 CString 型变量 m_strTXData。说明:m_strRXData和m_strTXData分别用来放入接收和发送的字符 数据。D、 添加串口事件消息处理函数 OnComm()打开 ClassWizard >Message Maps,选择 IDC_MSCOMM1 ,双击消息 On Comm,将弹出的对话框中将函数名改为 On Comm ,(好 记而已)OK。这个函数是用来处理串
7、口消息事件的,如每当串口接收到数据,就会产生一个串口接收数据缓冲区中有字符的消息事件,我们刚才添加的函数就会执行,我们在OnComm()厂提示1:此句以下、 才是我们要添加 的语句函数加入相应的处理代码就能实现自已想要的功能了。在函数中加入如下代码:代码段1:void CScommTestDlg:O nComm()/ TODO: Add your con trol no tificati on han dler code hereVARIANT variant_inp;/ 定义一个 VARIANT 类对象COIeSafeArray safearray_inp;/ 定义一个 COIeSafeAr
8、ray 对象 LONG le n,k;BYTE rxdata2048;/ 设置 BYTE 数组 AN 8 intterthat is not signed.CStri ng strte mp;if (m_ctrlComm.GetCommEvent()=2)/ 事件值为2表示接收缓冲区内有数据 /以下你可以根据自己的通信协议加入处理代码variant_inp=m_ctrlComm.Getlnput();/ 读缓冲区safearray_inp=variant_inp;/V ARIANT 型变量转换为 ColeSafeArray 型变量 len=safearray_i np .Get On eDim
9、Size();for(k=0;k<le n;k+)safearray_inp.GetElement(&k,rxdata+k);/ 转换为 BYTE 型数组提示2:此三句是 下面用于是否是十 六进制发送的,暂 时可以不用理会for(k=0;k<len;k+)/将数组转换为 Cstring型变量BYTE bt=*(char*)(rxdata+k);/if(m_ctrlHexSend.GetCheck()/ 如果是 HEX 显示则转为 16 进制/ strtemp.Format("%02x ”,bt); /将 16 进制数送入临时变量 strtemp 存放 / else
10、strtemp.Format("%c",bt);/将字符送入临时变量strtemp存放m_strRXData+=strtemp;/加入接收编辑框对应字符串UpdateData(FALSE);/更新编辑框内容(主要是接收编辑框中的)到目前为止还不能在接收编辑框中看到数据,因为我们还没有打开串口, 但运行程序不应该有任何错误,不然,你肯定哪儿没看仔细,因为我是打开 VC6对照着做一步写一 行的,运行试试。没错吧?那么做下一步:E、打开串口和设置串口参数你可以在你需要的时候打开串口,例如在程序中做一个开始按钮,在该按钮的处理函数中打开串口。现在我们在主对话框的CSCommTest
11、Dlg:O nl ni tDialog() 打开串口,加入如下代码:代码段2:BOOL CSCommTestDlg:O nini tDialog()CDialog:O nl ni tDialog();/ Add "About." menu item to system menu./ IDM_ABOUTBOX must be in the system comma nd ran ge. ASSERT(IDM_ABOUTBOX & OxFFFO) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMe nu* pSysM
12、e nu = GetSystemMe nu(FALSE); if (p SysMe nu != NULL)CStri ng strAboutMe nu;strAboutMe nu丄oadStri ng(IDS_ABOUTBOX); if (!strAboutMe nu.lsE mp ty()p SysMe nu->A ppen dMe nu(MF_SE PARATOR);pSysMenu->AppendMenu(MF_STRING , IDM_ABOUTBOX, strAboutMenu);提示4 :此5句是我们下 面要用到的 暂时可以不 用理会/ Set the icon for
13、 this dialog. The framework does this automatically/ whe n the app licatio n's main window is not a dialogSetIco n(m_hlco n, TRUE);/ Set big iconSetIco n( m_hIco n, FALSE);/ Set small icon/ TODO: Add extra ini tialization here/厂提示3:此句以下才 是我们要添加的语 句m_ComboBox.SetCurSel(0);/打开软件时串口选择框默认显示COM1/m_Ba
14、udRate_M.SetCurSel(0);/打开软件时波特率选择框默认显示9600m_Date_Select_M.SetCurSel(0);/打开软件时数据位选择框默认显示8m_StopBit_M.SetCurSel(0);/打开软件时停止位选择框默认显示1m_ParityCheck_M.SetCurSel(0);/打开软件时奇偶校验选择框默认显示无校验/ 下面 if 语句用于打开默认串口 /*/ if(m_ctrlComm.GetPortOpen() m_ctrlComm.SetPortOpen(FALSE);/ 关闭串口m_ctrlComm.SetCommPort(1);/ 打开软件时默
15、认使用 COM1 串口 if(!m_ctrlComm.GetPortOpen()m_ctrlComm.SetPortOpen(TRUE);/ 打开串口elseAfxMessageBox("cannot open serial port");/*/m_ctrlComm.SetSettings("9600,n,8,1");/ 打开软件时端口设置默认为波特率9600,无校验位, 8位数据, 1 位停止位m_ctrlComm.SetInputMode(1); /1 :表示以二进制方式检取数据 m_ctrlComm.SetRThreshold(1); / 参数 1
16、 表示每当串口接收缓冲区中有多于或等于 1 个 字符时将引发一个接收数据的 OnComm 事件m_ctrlComm.SetInputLen(0); / 设置当前接收区数据长度为 0 m_ctrlComm.GetInput(); / 先预读缓冲区以清除残留数据 return TRUE; / return TRUE unless you set the focus to a controlF、发送数据,先为发送按钮添加一个单击消息即BN_CLICKED处理函数,打开ClassWizard Message Maps ,选择 IDC_BUTTON_MANUALSEND ,双击 BN_CLICKED 添
17、加 OnButtonManualsend() 函数,并在函数中添加如下代码:代码段 3:void CSCommTestDlg:OnButtonManualsend()/ TODO: Add your control notification handler code here UpdateData(TRUE); / 读取编辑框内容 m_ctrlComm.SetOutput(COleVariant(m_strTXData);/ 发送数据 此时运行程序,在发送编辑框中随意输入数,单击发送按钮,若出错则修改后再测试, 直到成功再进行以下操作。5 、添加两个“组框”或“静态文本”控件,调整位置及大小,
18、在标师处输入提示文字, 这两个控件不用编程,效果如下图:接收数駆:按送数据输入:6、添加5个“静态文本”控件并由属性修改其标题,均不用编程,效果如下图:7、添加5个“组框”控件,效果如下图:接收数腿.:在 SCouTest串口昌:液特率:发送I发送数据输入:数据恆:停止傥:逐一对各个组框属性编辑如下:串口号:常规 ID : IDC_COMBO_CommSelect数据输入列表框项目 (N): COM1、COM2、COM3、COM4、COM5、COM6、COM7、 COM8、COM9 (注意每输入一个数据选项以Ctrl+Enter回车后再输入下一个数据选项)样式将“分类勾选去掉”进入类向导添加变
19、量,为 IDC_COMBO_CommSelect添加一个 value类int型变量 m_Index,点击 OK 后,再添加一个 Control 类 CComboBox 型变量 m_ComboBox 点 击OK最后“确定”波特率:常规 ID : IDC_COMBO_BaudRate_Select数据输入列表框项目(N): 9600、14400、19200、38400、56000、57600、115200、128000 、 256000样式将“分类勾选去掉”进入类向导添加变量,为 IDC_COMBO_BaudRate_Select 添加一个 value类int型变量 m_ BaudRate 点击
20、OK 后,再添加一个 Control 类 CComboBox 型变量 m_ BaudRate_M 点击OK最后“确定”数据位:ID : IDC_COMBO_Date_Select输入列表框项目(N): 8、7、6、5、4将“分类勾选去掉”常规数据样式进入类向导添加变量,为IDC_COMBO_Date_Select 添加一个 value类int型变量m_Date_Select 点击 OK 后,再添加一个 Control 类 CComboBox 型变量 m_Date_Select _M点击OK最后“确定”停止位:常规数据样式ID : IDC_COMBO_StopBit输入列表框项目(N): 1、2
21、将“分类勾选去掉”进入类向导添加 变量,为IDC_COMBO_St op Bit 添 加一个 value 类int型变量 m_St op Bit 点击 OK 后,再添加一个 Co ntrol 类 CComboBox 型变量 m_Sto pBit_M 点击 OK最后“确定”奇偶校验位:常规 ID : IDC_COMBO_Paritycheck数据输入列表框项目(样式将“分类勾选去掉”进入类向导添加变量,为m_ParityCheck 点击m_ParityCheck_M 点击说明:以上数据配置添加的int型8、为各个列表框添加处理函数:A、在建立类向导中 Message Maps ,object I
22、Ds 中选中 IDC_COMBO_CommSelect 再 在Messages中选中CBN_SELCHANG双击后单击 OK,再在Member funtions 中双击刚才生 成的函数进入程序编辑页面,添加程序代码如下:代码段4:void CSCommTestDlg:O nSelcha ngeCOMBOCommSelect()/ TODO: Add your con trol no tificatio n han dler code herem_lndex=(CComboBox*)GetDlgltem(IDC_COMBO_CommSelect)->GetCurSel();/ 当前选 中的
23、行""(CComboBox*)GetDlgltem(IDC_COMBO_CommSelect)->SetCurSel(m_lndex);/ 设置当 前选中的行的内容为显示的内容if(m_ctrlComm.Get Port Open()/当要改变时则要先关闭串口才可以用按键进行打开, 先判断当前串口是否打开/如果是打开的则先关闭m_ctrlComm.Set PortOpen (FALSE);/关闭串口"SetDlgltemText(IDC_BUTTON1,"打开串口 ");/将打开或关才按钮改为"打开串口 "显示状 态B
24、、同理为IDC_COMBO_BaudRate_Select添加处理函数程序代码如下:代码段5:void CSCommTestDlg:O nSelcha ngeCOMBOBaudRateSelect()/ TODO: Add your con trol no tificatio n han dler code hereN) : N、0、E、IDC_COMBO_Paritycheck 添加一个 value 类 int 型变量 OK 后,再添加一个 Control 类 CComboBox 型变量 OK最后"确定”Control类CComboBox型变量可能用不到,但value类必须为所以提
25、示5下面、添加串口打 开或关闭按 钮后将用到 此将用到此 判断及以下 语句Up dateData(true); m_BaudRate=(CComboBox*)GetDlgltem(IDC_COMBO_BaudRate_Select)->GetCurSel();/当前选中的行/*/ /根据当前选中的值进行波特率设置/*/switch(m_BaudRate)case 1: m_ctrlComm.SetSettings("14400,");break;case 2: m_ctrlComm.SetSettings("19200,");break;case
26、3: m_ctrlComm.SetSettings("38400,");break;case 4: m_ctrlComm.SetSettings("56000,");break;case 5: m_ctrlComm.SetSettings("57600,");break;case 6: m_ctrlComm.SetSettings("115200,");break;case 7: m_ctrlComm.SetSettings("128000,");break;case 8: m_ctrlComm
27、.SetSettings("256000,");break;default:m_ctrlComm.SetSettings("9600,");break;/*/UpdateData(false);C、同理为IDC_COMBO_Date_Select添加处理函数程序代码如下:代码段 6:void CSCommTestDlg:OnSelchangeCOMBODateSelect()/ TODO: Add your control notification handler code hereUpdateData(true);m_Date_Select=(CCom
28、boBox*)GetDlgItem(IDC_COMBO_Date_Select)->GetCurSel() ;/当前选中的行 /*/ /* */switch(m_Date_Select)case 1: m_ctrlComm.SetSettings(",7,"); break;case 2: m_ctrlComm.SetSettings(",6,"); break;case 3: m_ctrlComm.SetSettings(",5,"); break;case 4: m_ctrlComm.SetSettings(",4
29、,"); break;default:m_ctrlComm.SetSettings(",8,"); break;/*/UpdateData(false);D、 同理为 IDC_COMBO_StopBit 添加处理函数程序代码如下: 代码段 6:void CSCommTestDlg:OnSelchangeCOMBOStopBit()/ TODO: Add your control notification handler code hereUpdateData(true); m_StopBit=(CComboBox*)GetDlgItem(IDC_COMBO_Sto
30、pBit)->GetCurSel();/ 当 前 选 中 的行/*/ /* */switch(m_StopBit)case 1: m_ctrlComm.SetSettings(",2");break;default:m_ctrlComm.SetSettings(",1");break;/* */UpdateData(false);E、同理为IDC_COMBO_Paritycheck添加处理函数程序代码如下:代码段 7:void CSCommTestDlg:OnSelchangeCOMBOParityCheck()/ TODO: Add your c
31、ontrol notification handler code hereUpdateData(true);m_ParityCheck=(CComboBox*)GetDlgItem(IDC_COMBO_ParityCheck)->GetCurSel();/ 当前选中的行/*/ /* */switch(m_ParityCheck)case 1: m_ctrlComm.SetSettings(",O,");break;case 2: m_ctrlComm.SetSettings(",O,");break;default:m_ctrlComm.SetSe
32、ttings(",N,");break;/*/UpdateData(false);此时应将代码段2:提示 4中所指的那 5个语句前的“ /”删除9、串口添加打开或关闭按钮以同样的方式添加按钮,并将标题修改为“关闭串口”字样,为此按钮添加处理函 数程序代码如下:代码段 8:void CSCommTestDlg:OnButton1Start()检查是否改变默认的串口值,没有改变m_Index的值是0的,否则则不为0if(m_lndex<0)/串口的默认值没有改变switch(m_ctrlComm.Get PortOpen ()/点击打开或关闭串口按键时,根据当前串口 是否
33、打开进行相应操作case/*关闭串口前先将自动发送功能关闭*/ SetDlgltemText(IDC_BUTTON_AutoSend,"自动发送");/更改按键指示 KillTimer(1);/*/当前串口是打开的则进行关串口操作m_ctrlComm.Set PortOpen (FALSE);/关闭串口SetDlgItemText(IDC_BUTTON1," 打开串口 ");/更改按键指示Up dateData(FALSE);/更 新按键状态break;case 0:/当前串口是关闭的则进行开串口操作m_ctrlComm.SetComm Port(1);
34、/如果要打开串口则应先选择哪个串口 m_ctrlComm.Set PortOpen (TRUE);/打开串口 SetDlgItemText(IDC_BUTTON1,"关闭串口 ");/更改按键指示 UpdateData(FALSE);break;default : AfxMessageBox("cannot open or close serial port");else/串口的默认值有改变switch(m_ctrlComm.Get PortOpen ()/点击打开或关闭串口按键时,根据当前串口是否 打开进行相应操作case 0:/当前串口是关闭的则进行
35、开串口操作m_ctrlComm.SetCom mPort(m_ln dex+1);/如果要打开串口则应先选择哪个串口m_ctrlComm.Set PortO pen (TRUE);/打开串口SetDlgItemText(IDC_BUTTON1," 关闭串口 ");/更改按键指示Up dateData(FALSE);/更 新按键状态 break;case 1: /* 关闭串口前先将自动发送功能关闭*/SetDlgltemText(IDC_BUTTON_AutoSend,"自动发送");/更改按键指示 KillTimer(1);/*/当前串口是打开的则进行关
36、串口操作 m_ctrlComm.SetPortOpen(FALSE);SetDlgItemText(IDC_BUTTON1," 打开串口 ");UpdateData(FALSE);break;default : AfxMessageBox("cannot open serial port");if(m_Index<0)(CComboBox*)GetDlgItem(IDC_COMBO_CommSelect)->SetCurSel(0);/ 如果没有另外进 行串口选择则显示 COM1if(m_BaudRate<0)(CComboBox*)G
37、etDlgItem(IDC_COMBO_BaudRate_Select)->SetCurSel(0);/ 如果没有另 外进行波特率选择则显示 9600if(m_Date_Select<0)(CComboBox*)GetDlgItem(IDC_COMBO_Date_Select)->SetCurSel(0);/ 如果没有另外进 行数据位选择则显示 8if(m_StopBit<0)(CComboBox*)GetDlgItem(IDC_COMBO_StopBit)->SetCurSel(0);/ 如果没有另外进行停 止位选择则显示 1if(m_ParityCheck&l
38、t;0)(CComboBox*)GetDlgItem(IDC_COMBO_ParityCheck)->SetCurSel(0);/ 如果没有另外进 行校验位选择则显示没有校验位 N10、添加自动发送功能:IDA、添加一个“编辑框”控件,此控件用于获取自动发送的时间间隔的,修改其为 IDC_EDIT_Timer ,为其添加一个 value 类 UINT 型变量 m_TimerB、添加一个“按钮”控件,修改其 ID为IDC_BUTTON_AutoSend修改其标题为 “自动发送”C、添加一个“按钮”控件,修改其 ID为IDC_BUTTON_StopAutoSend修改其标 题为“停止自动发送
39、”D、为“自动发送”按钮添加 BN_CLICKED处理函数,程序代码如下:代码段 9:void CSCommTestDlg:OnBUTTONAutoSend()UpdateData(TRUE);if(m_Timer<=0)/ 判断是否设置自动发送时间间隔AfxMessageBoxC请设置自动发送时间间隔");else if(!m_ctrlComm.GetPort Op en()/判断是否打开串口 AfxMessageBoxC请打开串口 ");elseSetDlgItemText(IDC_BUTTON_AutoSend," 自动发送 .");/更改按
40、键指示 SetTimer(1,m_Timer,NULL);E、为“停止自动发送”按钮添加 BN_CLICKED处理函数,程序代码如下: 代码段 9:void CSCommTestDIg:OnBUTTONStopAutoSend()/ TODO: Add your controI notification handIer code here SetDIgItemText(IDC_BUTTON_AutoSend," 自动发送 ");/ 更改按键指示 KiIITimer(1);F、因为要设置自发送,所以要添加一个 Windows定时函数,步骤如下:进入类向导,Message Ma
41、ps中的Object IDs中选择CScommTestDIg再选择Messages中的 WM_TIMER ,进入 TIMER 函数后,添加如下 程序代码如下:代码段 10:void CSCommTestDIg:OnTimer(UINT nIDEvent)/ TODO: Add your message handIer code here and/or caII defauIt UpdateData(TRUE);if(m_ctrIHexSend.GetCheck()CByteArray hexdate;int Ien=String2Hex(m_strTXData,hexdate); m_ctrI
42、Comm.SetOutput(COIeVariant(hexdate);eIsem_ctrIComm.SetOutput(COIeVariant(m_strTXData); CDiaIog:OnTimer(nIDEvent);11、十六进制数据发送及接收显示m_ctrlHexSend ,然后为为添加一个“复选框”控件,修改ID为IDC_CHECK_HexSend,标题为“ HEX发送”,进 入类向导添加 control 类 CButton 型变量,变量名为SCommTestDlg 类 添 加 以 下 两 个 PUBLIC 成 员 函 数 , 在 Class view 中 右 击 CCommTe
43、stDIg选中Add Member Function 然后在函数类型中输入“ int”,在 函数描述中输入“ String2Hex(CString str, CByteArray &senddate)” 然后确定。编 辑函数体如下:代码段 11:int CSCommTestDlg:String2Hex(CString str, CByteArray &senddate)int hexdate,lowhexdate;int hexdatelen=0;int len=str.GetLength(); senddate.SetSize(len/2); for(int i=0;i<
44、;len;)char lstr,hstr=stri; if(hstr=' ')i+;continue;i+;if(i>=len)break;lstr=stri;hexdate=ConvertHexChar(hstr);lowhexdate=ConvertHexChar(lstr);if(hexdate=16)|(lowhexdate=16) break;else hexdate=hexdate*16+lowhexdate;i+;senddatehexdatelen=(char)hexdate; hexdatelen+;senddate.SetSize(hexdatelen); return hexdatelen;再添加别一个CCommTestDIg添加两个成员函数,在函数类型中输入“ char”,在函数描述中输入“ ConvertHexChar(char ch)”然后确定。编辑函数体如下:代码段 12:char CSCommTestDlg:ConvertHexChar(char ch)if(ch>='0')&&(ch<='9')return ch-0x30;else
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小升初语文第12天修改病句课件-人教级全册语文课件
- 吹奏乐器制作工安全专项考核试卷含答案
- 对(间、邻)二甲苯装置操作工岗位环保竞赛考核试卷含答案
- 文化经纪人岗前安全生产知识考核试卷含答案
- 膜法水处理材料和设备制造工岗后测试考核试卷含答案
- 管模维修工安全综合竞赛考核试卷含答案
- 医疗机构消毒隔离与防护
- 腰椎间盘突出症的诊治大全
- 医疗卫生服务评价指标
- 肿瘤靶向治疗策略优化
- 团体标准解读及临床应用-成人经鼻高流量湿化氧疗技术规范2025
- 成都文理就业协议书
- 惠尔顿网络安全审计系统使用手册V0
- 10千伏环网柜(箱)标准化设计方案 (2023 版)
- 《国际资本流动理论》课件
- 《贴片工艺培训》课件
- 康熙字典-繁体字笔画五行1-30
- 山东省汽车维修工时定额(T-SDAMTIA 0001-2023)
- 水资源与流域经济协同发展
- 第一次数学危机
- 23J916-1:住宅排气道(一)
评论
0/150
提交评论