串口調(diào)試助手代碼分析4-2_第1頁
串口調(diào)試助手代碼分析4-2_第2頁
串口調(diào)試助手代碼分析4-2_第3頁
串口調(diào)試助手代碼分析4-2_第4頁
串口調(diào)試助手代碼分析4-2_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、接收區(qū):編輯串口 波特率 校驗(yàn)位 數(shù)據(jù)位 停止位活空重埴|編輯第5章串口調(diào)試助手代碼分析|1、建立基于對(duì)話框的工程SCOMM2、繪制界面,如下圖:串 口調(diào)試助手 SCosAssistant 2. 3 For TIM9X/2000/KP者空接收區(qū)|停止顯示| 廠自動(dòng)活空 r十六進(jìn)制r十六進(jìn)制發(fā)送編輯TX:O關(guān)閉程序r自動(dòng)發(fā)送凋期改變后重選)_:目秘岌醐期一戛裝.I選擇發(fā)淳件1目前當(dāng)態(tài)I eEo接收區(qū)串口組合框:IDC_COMBO_COMSELECT, m_Com波特率組合框:IDC_COMBO_SPEED, m_Speed停止位組合框:IDC_COMBO_STOPBITS, m_StopBits

2、數(shù)據(jù)位組合框:IDC_COMBO_DATABITS m_DataBits校驗(yàn)位組合框:IDC_COMBO_PARITY,m_Parity十六進(jìn)制顯示(接收):IDC_CHECK_HEXRECIEVE,m_ctrlHexReceieve接收編輯框:IDC_EDIT_RECIVE , m_ReceiveData m_ctrlReceiveDataStyle: Vertical Scroll MultiLine打開串口 IDC_BUTTON_OPENPORT,m_ctrlOpenPort串口開關(guān)標(biāo)志圖標(biāo) IDC _STATIC_OPENOFF,m_ctrlIconOpenoff數(shù)據(jù)文件保存路徑 ID

3、C _EDIT_SAVEPATH m_strCurPath保存顯示數(shù)據(jù)文件路徑 IDC _EDIT_SAVEPATH, m_ctrlSavePath 接收計(jì)數(shù) IDC_STATIC_RXCOUNT,m_ctrlRXCOUNT發(fā)送區(qū)3、添加CSeraiPort類文件將類文件SerialPort.h SerialPort.cpp復(fù)制到工程所在文件夾中(選擇改進(jìn)后的類),然后單擊VC 6.0菜單Projrct - Add to Projrct-Files再在打開 的文件選擇對(duì)話框中選擇SerialPort.h和SerialPortcpp,點(diǎn)擊0嗚就把類文 件加入當(dāng)前工程,并在SCOMMDlg.h中加

4、入頭文件,#include SerialPorth”, 通過上述步驟就在當(dāng)前工程中加入了 CSeraiPort類。4、完成串口消息處理函數(shù)OnCommunicatiom在CserailPort類中有多個(gè)串口事件可以響應(yīng)。 在一般串口編程中,只需 要處理WM_COMM_RXCHAR消息就可以了,該類所有的消息均需要人工添 加消息處理函數(shù)。我們將處理函數(shù)名定義為OnComm()。首先在SCOMMDlg.h 中添加串口字符接收消息WM_COMM_RXCHAR(串口接收緩沖區(qū)內(nèi)有一個(gè)字 符)響應(yīng)函數(shù)的聲明:如下圖DHORD mdwCommEuents;BOOL mbOpenPort;HICON ii

5、hlcon;/ Generated message map functions/AFX MSG(CSCOMMDlg)uirtual BOOL OnlnitDialogO ;afxmsg LONG OnCommunication(HPARAM ch, LPARAM port)afx msg LONG OnFileSendingEnded(UPARAM uParam,LPARAM port);然后,在SCOMMDlgcpp文件中進(jìn)行WM_COMM_RXCHAR消息映射:如下圖;BEGIN_MESSAGE_MAP(CSCOMMDlg, CDialog)-7計(jì)ON_MESSAGE(WM_COMM_RX

6、CHAR, OnCommunication)| ON_MESSAGE(WM_COMM_TXEMPTV_DETECTED, OnFileSendingEnded) onZwm_svscommand( flM I.IM DA I MT f Y接著,在 SCOMMDlg.cpp 文件中加入函數(shù) OnCommunication(WPARAM ch,LPARAM ?。!1)的實(shí)現(xiàn),暫不添加代碼。LONG CSCOMMDlg:OnCommunication(WPARAM ch, LPARAM port)return 0;以上步驟需要手工完成。至此完成了程序的對(duì)話框模板,在工程中插入了串口操作類Cserai

7、lPort類。5、添加串口初始化及關(guān)閉程序中有兩種方法大開串口,一是程序啟動(dòng),調(diào)用OnInitDialog()函數(shù),就可 以打開串口,缺省的串口號(hào)為COM1,如果COM1不存在或占用,就會(huì)給出提示; 另外,單擊“打開串口”按鈕也可以打開串口。在初始化中打開串口BOOL CSCOMMDlg:OnInitDialog()m_nBaud=9600;/ 波特率m_nCom=1;/ 串口號(hào)m_cParity=N;/ 奇偶校驗(yàn)m_nDatabits=8;/ 數(shù)據(jù)位m_nStopbits=1;/ 停止位m_dwCommEvents = EV_RXFLAG I EV_RXCHAR;/ 串口事件/if (m_P

8、ort.InitPort(this, 1, 9600,N,8,1,dwCommEvents,512)CString strStatus;if(m_Port.InitPort(this,m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits,m_dwCommEvents,512)/ 如 果啟動(dòng) 串口成功m_Port.StartMonitoring();/ 啟動(dòng)監(jiān)測(cè)輔助線程strStatus.Format(STATUS: COM%d OPENED, %d,%c,%d,%d,m_nCom, m_nBaud,m_cParity,m_nDatabits,m_n

9、Stopbits); 打印串口狀態(tài)及參數(shù)m_ctrlIconOpenoff.SetIcon(m_hIconRed);/ 設(shè)置串口狀態(tài)燈/m_ctrlIconOpenoff.SetIcon(m_hIconOff);當(dāng)前狀態(tài):串口打開,無奇偶校驗(yàn),8數(shù)據(jù)位,1停止位,else/如果啟動(dòng)失敗AfxMessageBox(沒有發(fā)現(xiàn)此串口);m_ctrlIconOpenoff.SetIcon(m_hIconOff);m_ctrlPortStatus.SetWindowText(strStatus) / 顯示串口的狀態(tài)及參數(shù) return b;6、在 Class Wizard 中為按鈕“打開串口”控制 ID

10、C_BUTTON_OPENPORT 添加單擊響應(yīng)函數(shù)。打開,關(guān)閉串口void CSCOMMDlg:OnButtonOpenport()/ TODO: Add your control notification handler code herem_bOpenPort=!m_bOpenPort;取反if(m_bOpenPort) 如果串口是打開的if(m_ctrlAutoSend.GetCheck()/檢測(cè)自動(dòng)發(fā)送標(biāo)志是否打開一m_bOpenPort=!m_bOpenPort; 恢復(fù)原來的標(biāo)志 AfxMessageBox(請(qǐng)先關(guān)掉自動(dòng)發(fā)送); return;/返回m_ctrlOpenPort.S

11、etWindowText(打開串口);m_Port.ClosePort();/ 關(guān)閉串口m_ctrlPortStatus.SetWindowText(STATUS COM Port Closed);m_ctrlIconOpenoff.SetIcon(m_hIconOff);/m_hIconRed; 串口打開時(shí)的紅燈圖標(biāo)句柄/HICON m_hIconOff; 串口關(guān)閉時(shí)的指示圖標(biāo)句柄else 打開串口m_ctrlOpenPort.SetWindowText(關(guān)閉串口);CString strStatus;if(m_Port.InitPort(this,m_nCom,m_nBaud,m_cPar

12、ity,m_nDatabits,m_nStopbits,m_dwCommEvents,512)m_Port.StartMonitoring();/ 啟動(dòng)監(jiān)視線程m_ctrlIconOpenoff.SetIcon(m_hIconRed);/ m_hIconRed;串口打開時(shí)的 紅燈圖標(biāo)句柄strStatus.Format(STATUS : COM%d OPENED,%d,%c,%d,%d,m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits);當(dāng)前狀態(tài):串口打開,無奇偶校驗(yàn),8數(shù)據(jù)位,1停止位,else如果沒有打開串口成功AfxMessageBox(

13、沒有發(fā)現(xiàn)此串口或被占用);m_ctrlIconOpenoff.SetIcon(m_hIconOff); / m_hIconOff 串口關(guān)閉時(shí)的 紅燈指示圖標(biāo)句柄m_ctrlPortStatus.SetWindowText(strStatus);7、 為了在程序關(guān)閉時(shí)通過關(guān)閉串口并釋放占用資源,在 ClassWizard中為 CSCOMMDlg添加了 WM_DISTROY的消息響應(yīng)函數(shù)OnDestroy(),函數(shù)在 主窗口即將銷毀時(shí)調(diào)用。為主窗口關(guān)閉時(shí)添加關(guān)閉響應(yīng)函數(shù)void CSCOMMDlg:OnDestroy()CDialog:OnDestroy();m_ctrlAutoSend.SetC

14、heck(0); 強(qiáng)行關(guān)閉自動(dòng)發(fā)送KillTimer (1);關(guān)閉定時(shí)器KillTimer(4);m_Port.ClosePort(); 關(guān)閉串口m_ReceiveData.Empty(); 清空接收數(shù)據(jù)字符串8、十六進(jìn)制數(shù)據(jù)發(fā)送處理首先為CSCOMMDlg類添加兩個(gè)成員函數(shù)Str2Hex()和HexChar,前者對(duì) 后者進(jìn)行了調(diào)用,Str2Hex()的作用是將一個(gè)字符串作為十六進(jìn)制轉(zhuǎn)化為一個(gè) 字符組,其中,data即為返回的數(shù)組,函數(shù)的返回值為data數(shù)組的長度。/將一個(gè)字符串作為十六進(jìn)制轉(zhuǎn)化為一個(gè)字符數(shù)組,字節(jié)間可用空格分隔,/返回轉(zhuǎn)換后的字節(jié)數(shù)組長度,同時(shí)字節(jié)數(shù)組長度自動(dòng)設(shè)置int CS

15、COMMDlg:Str2Hex(CString str, char* data)int t,t1;int rlen=0,len=str.GetLength();/獲取字符串的長度/data.SetSize(len/2);for(int i=0;i=len) break; /跳出 for 循環(huán)l=stri;t=HexChar(h);t1=HexChar (l);if(t=16)|(t1=16)break;elset=t*16+t1;i+;datarlen=(char)t;rlen+;return rlen;char CSCOMMDlg:HexChar(char c)if(c=0)&(c=A)&(

16、c=a)&(cGetWindowText(strText);m_nCycleTime=atoi(strText);11、接收處理及十六進(jìn)制顯示接收處理均在串口事件消息處理函數(shù) OnCommunication(WPARAM ch, LPARAM ?。)函數(shù)中實(shí)現(xiàn)。其中,十六進(jìn)制的接收顯示時(shí)并不像發(fā)送那樣麻煩, 只要將數(shù)據(jù)直接以十六進(jìn)制打印輸出就可以了,注意中間插入一個(gè)空格。LONG CSCOMMDlg:OnCommunication(WPARAM ch, LPARAM port)if (port 4)return -1;rxdatacount+;接收的字節(jié)計(jì)數(shù)CString strTemp;st

17、rTemp.Format(%ld”,rxdatacount);strTemp=RX:+strTemp;m_ctrlRXCOUNT.SetWindowText(strTemp); 顯示接收計(jì)數(shù)if(m_bStopDispRXData)如果選擇了 “停止顯示”接收數(shù)據(jù),則返回return -1;注意,這種情況下,計(jì)數(shù)仍在繼續(xù),只是不顯示若設(shè)置了 “自動(dòng)清空”,則達(dá)到50行后,自動(dòng)清空接收編輯框中顯示的數(shù) 據(jù)if(m_ctrlAutoClear.GetCheck()&(m_ctrlReceiveData.GetLineCount()=50)m_ReceiveData.Empty();UpdateDa

18、ta(FALSE);如果沒有“自動(dòng)清空”,數(shù)據(jù)行達(dá)到400后,也自動(dòng)清空因?yàn)閿?shù)據(jù)過多,影響接收速度,顯示是最費(fèi)CPU時(shí)間的操作if(m_ctrlReceiveData.GetLineCount()400)m_ReceiveData.Empty();m_ReceiveData=*The Length of the Text is too long, Emptied Automaticly!*rn;UpdateData(FALSE);如果選擇了 十六進(jìn)制顯示,則顯示十六進(jìn)制值CString str;if(m_ctrlHexReceieve.GetCheck()str.Format(%02X ,ch

19、);elsestr.Format(%c”,ch);以下是將接收的字符加在字符串的最后,這里費(fèi)時(shí)很多但考慮到數(shù)據(jù)需要保存成文件,所以沒有用List Controlint nLen=m_ctrlReceiveData.GetWindowTextLength();m_ctrlReceiveData.SetSel(nLen, nLen);m_ctrlReceiveData.ReplaceSel(str);nLen+=str.GetLength();m_ReceiveData+=str;return 0;以下是“清空接收區(qū)”和“停止/繼續(xù)顯示”兩個(gè)按鈕的單擊響應(yīng)函數(shù)。清空接收區(qū)void CSCOMMDl

20、g:OnButtonClearReciArea()/ TODO: Add your control notification handler code herem_ReceiveData.Empty();UpdateData(FALSE);停止/繼續(xù)顯示接收數(shù)據(jù)void CSCOMMDlg:OnButtonStopdisp()/ TODO: Add your control notification handler code herem_bStopDispRXData=!m_bStopDispRXData;if(m_bStopDispRXData)m_ctrlStopDisp.SetWindo

21、wText(繼續(xù)顯示);elsem_ctrlStopDisp.SetWindowText(停止顯示);其他輔助工程功能的實(shí)現(xiàn)1、接收數(shù)據(jù)的文件保存串口設(shè)備調(diào)試時(shí),有時(shí)需要把接收到的數(shù)據(jù)保存成文件,以對(duì)這些數(shù)據(jù)做進(jìn)一 步的分析。本程序?qū)⒔邮站庉嬁蛑械臄?shù)據(jù)保存成文本文件。缺省的路徑為 C:COMDATA使用者可以通過點(diǎn)擊“更改”按鈕來選擇其他文件。文件名為 Rec*.txt,程序自動(dòng)檢測(cè)文件名是否存在,若存在,則在后面序號(hào)自動(dòng)遞增, 例如當(dāng)程序檢測(cè)到Rec00.txt,Rec01.txt文件存在,則會(huì)自動(dòng)為正要保存的文件 命名為 Rec02.txt.在Class Wizard中為按鈕“保存顯示數(shù)據(jù)

22、” IDC_BUTTON_SAVEDATA添 加單擊響應(yīng)函數(shù)OnButtonSavedata():/保存顯示數(shù)據(jù)void CSCOMMDlg:OnButtonSavedata()/ TODO: Add your control notification handler code here UpdateData(TRUE);int nLength;nLength = m_strCurPath.GetLength();for( int nCount = 0; nCount nLength; nCount+ )if( m_strCurPath.GetAt( nCount ) = )CreateDir

23、ectory( m_strCurPath.Left( nCount + 1 ), NULL );CreateDirectory( m_strCurPath, NULL );CFile m_rFile;LPCSTR lpszPath =m_strCurPath;/ c:comdata”;SetCurrentDirectory( lpszPath );文件名為Rec*.txt,以下代碼自動(dòng)檢測(cè)文件名是否存在,若存在,則后面序 號(hào)自動(dòng)遞增如Rec00.txt Rec01.txt,程序自動(dòng)為正要保存的文件命名為Rec02.txt.char buf20;for(int j=0;j100;j+)sprin

24、tf(buf,Rec%02d.txt,j);if( (access( buf, 0 ) = -1 )break;if(!m_rFile.Open(buf,CFile:modeCreate I CFile:modeWrite )AfxMessageBox(創(chuàng)建記錄文件失??!); return;if(access(buf,0)=-1)AfxMessageBox(failed);return;CTime t = CTime:GetCurrentTime();CString str=t.Format(%Y 年m 月 %d 日 %H 時(shí)M 分$ 秒rn);m_rFile.Write(LPCTSTR)st

25、r,str.GetLength();m_rFile.Write(LPCTSTR)m_ReceiveData,m_ReceiveData.GetLength();m_rFile.Flush();m_rFile.Close();str=OK,;for(int i=0;im_hWnd;bi.pidlRoot = NULL;bi.pszDisplayName = displayname;bi.lpszTitle =請(qǐng)選擇要保存接收數(shù)據(jù)的文件夾;bi.ulFlags = BIF_EDITBOX ;bi.lpfn = NULL;pidlBrowse=SHBrowseForFolder( &bi);if(p

26、idlBrowse!=NULL)SHGetPathFromIDList(pidlBrowse,path);CString str=path; 得到路徑if(str.IsEmpty() return; /如果沒有選擇,就返回m_strCurPath=str;接收路徑編輯框?qū)?yīng)變量UpdateData(FALSE);2、實(shí)現(xiàn)小文件發(fā)送嚴(yán)格來講,三線制的串口線用來發(fā)送文件有很多困難,一般需要用到流控 制,但只要文件長度不太長,這在工控領(lǐng)域可以用得上,例如,可以做一個(gè)文件, 隨時(shí)改變文件中的內(nèi)容,通過串口發(fā)送出去。首先,選擇要發(fā)送的小文件。在 ClassWizard中為按鈕“選擇發(fā)送文件” IDC_B

27、UTTON_FILEBROWSER 添加單擊響應(yīng)函數(shù) OnButtonFilebrowser()。選擇要發(fā)送的文件void CSCOMMDlg:OnButtonFilebrowser()/ TODO: Add your control notification handler code hereLPCSTR lpszPath = c:comdata;SetCurrentDirectory( lpszPath );static char BASED_CODE szFilter=文本文件(*.txt)|*.txt| 所有文件NULL, NULL,OFN_HIDEREADONLY |CFileDia

28、log FileDlg( TRUE,OFN_OVERWRITEPROMPT,szFilter );FileDlg.m_ofn.lpstrInitialDir = lpszPath ;if( FileDlg.DoModal() =IDOK )CString strFileName = FileDlg.GetFileName();CString strFileExt = FileDlg.GetFileExt();CString lpstrName = FileDlg.GetPathName();m_strSendFilePathName=lpstrName;UpdateData(FALSE);再為

29、ClassWizard中為按鈕“發(fā)送文件” IDC_BUTTON_SENDFILE添加單擊響 應(yīng)函數(shù) OnButtonSendfile().發(fā)送文件void CSCOMMDlg:OnButtonSendfile()/ TODO: Add your control notification handler code hereCFile fp;if(!(fp.Open(LPCTSTR)m_strSendFilePathName,CFile:modeRead)AfxMessageBox(Open file failed!);return;fp.SeekToEnd();unsigned long fp

30、length=fp.GetLength();m_nFileLength=fplength;char* fpBuff;fpBuff=new charfplength;fp.SeekToBegin();if(fp.Read(fpBuff,fplength)1)fp.Close();return;fp.Close();CString strStatus;if (m_Port.InitPort(this, m_nCom, m_nBaud, m_cParity, m_nDatabits, m_nStopbits, m_dwCommEvents, fplength)m_Port.StartMonitori

31、ng();strStatus.Format(STATUS: COM%d OPENED, %d,%c,%d,%d”,m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits);m_ctrlIconOpenoff.SetIcon(m_hIconRed);m_bSendFile=TRUE;m_strTempSendFilePathName=m_strSendFilePathName;m_ctrlEditSendFile.SetWindowText(”正在發(fā)送 );發(fā)送文件時(shí),以下功能不能使用m_ctrlManualSend.EnableWindow(FALS

32、E);m_ctrlAutoSend.EnableWindow(FALSE);m_ctrlSendFile.EnableWindow(FALSE);m_Port.WriteToPort(LPCTSTR)fpBuff,fplength);elseAfxMessageBox(Failed to send file!);m_ctrlIconOpenoff.SetIcon(m_hIconOff);delete fpBuff;那么文件什么時(shí)候發(fā)送完了呢?通過 CserialPort類的 WM_COMM_TXEMPTY_DETECTED消息來判斷。下面手工添加該消息的處理 函數(shù)。首先,在 SCOMMDlg.

33、h 中添串口字符接收消息 WM_COMM_TXEMPTY_DETED(串口接收緩沖區(qū)內(nèi)有一個(gè)字符)的響應(yīng)函數(shù)聲 明:/ Generated message map Functions/fiFX_MSG(CSCOMMDlg)uirtual BOOL OnInitDialog();afxmsg LONG OnCommunication(UPARAM ch, LPARAM port);afxmsg LONG OnFileSendingEnded(UPARAM uParam,LPARAM port)afxmsg uoid OnSysCommand(UINT nID, LPARAM IParam);af

34、xmsg uoid OnPaint();I C C FH. T afx_msg LONG OnFileSendingEnded(WPARAM wParam,LPARAM port);然后,在 SCOMMDlg.cpp 文件中進(jìn)行 WM_COMM_TXEMPTY_DETED 消息映 射:BEGIN_MESSflGE_MfiP(CSCOMMDlg, CDialog)/7 Add to Project-Files., 再在打開的文件選擇對(duì)話框中選擇上PushPin.h和PushPin.cpp,單擊OK,就把 類文件加入了當(dāng)前工程,如圖在Class View中就可以看到CpushPinButton類了

35、。然后在 SCOMMDlg.h 中將頭文件 PushPin.h 說明:#include “PushPin.h”。接著, 設(shè)置按鈕控件的IDC_BUTTON_PUSHPIN的屬性,在Properties-Style中,選上 Ower draw、Bitmap 和 Notify 屬性?,F(xiàn)在我們要做的就是將兩個(gè)代表“釘住”(浮在最上面,保持可見)和“松 口”(不浮在最上面)的位圖放到工程文件夾中的res文件夾中,將位圖pinned.bmp,unpinned.bmp Import導(dǎo)入到項(xiàng) 目 中,對(duì)應(yīng)ID 分別為: IDB_PINNED_BITMAP,IDB_UNPINNED_BITMAP.再在 Cla

36、ssWizardMember Variable 中為按鈕控件 IDC_BUTTON_PUSHPIN 添 加一個(gè) CpushPinButton 控制變量 m_ctrplPushPin。Message Maps Member Variables | Automation | ActiveX Events | Class InfoProject:Class name:ISCOMMIcSCOMMDIg.Add Variable.C:.ASCOMMV23SCOMMDIg.h, C:.SCOMMV23SCOMMDIg.cpp卜二Control Ds:TypeMemberDelete VariableIDC

37、 BUTTON CLEAR RECI AREA人IDC BUTTON CLEARRECASENDACButtonm ctrlClearTXDataUpdate Columns 1IDC BUTTON CLOSECButtonm ctrlClose1IDC_BUTTON_COUNTRESETCButtonmctrl CounterResetBind AllIDC BUTTON DIRBROWSERIDC BUTTON FILEBROWSERIDC BUTTON HELPCButtonm ctrlHelpIDC BUTTON MANUALSENDCButtonm ctrlManualSendIDC

38、 BUTTON OPENPORTCButtonm ctrlOpenPortIDC BUTTON PUSHPINCPushPinButtonm CtrlPushPinlDC_B UTTON_S AVE DATAnpArrintinn:利用 ClassWizard 為 IDC_BUTTON_PUSHPIN 添加 BN_CLICKED 消息出來函數(shù), 名稱缺省名稱OnButtonPushpin()。void CSCOMMDlg:OnButtonPushpin()/ TODO: Add your control notification handler code herem_ctrlPushPin.P

39、rocessClick();m_bVisible=!m_bVisible;if(m_bVisible)SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);elseSetWindowPos(&wndBottom, 0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_NOREDRAW);BringWindowToTop(); 4、對(duì)話框動(dòng)畫圖標(biāo)的實(shí)現(xiàn)對(duì)話框左上角動(dòng)畫圖標(biāo)對(duì)于串口功能并無影響。AnimateDlgIco.cpp和AnimateDlgIcon.h是類文件,復(fù)制到當(dāng)前工程文件的中,并把類加入到當(dāng)前工程。并

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論