vc串列埠原始碼除錯-控制元件初學者必看!
阿新 • • 發佈:2019-01-24
<pre name="code" class="cpp">// pj20Dlg.cpp : 實現檔案 // #include "stdafx.h" #include "pj20.h" #include "pj20Dlg.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // 用於應用程式“關於”選單項的 CAboutDlg 對話方塊 class CAboutDlg : public CDialog { public: CAboutDlg(); // 對話方塊資料 enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支援 // 實現 protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) END_MESSAGE_MAP() // Cpj20Dlg 對話方塊 Cpj20Dlg::Cpj20Dlg(CWnd* pParent /*=NULL*/) : CDialog(Cpj20Dlg::IDD, pParent) , m_edit(_T("")) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); comport=0; } void Cpj20Dlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_MSCOMM1, m_mscom1); //DDX_Control(pDX, IDC_CHECK1, m_led1); //DDX_Control(pDX, IDC_CHECK2, m_led2); //DDX_Control(pDX, IDC_CHECK3, m_led3); // DDX_Control(pDX, IDC_CHECK4, m_led4); // DDX_Control(pDX, IDC_CHECK5, m_led5); DDX_Text(pDX, IDC_EDIT1, m_edit); DDX_Control(pDX, IDC_BUTTON1, m_openserial); DDX_Control(pDX, IDC_COMBO1, m_combocom); DDX_Control(pDX, IDC_BUTTON3, m_status_port); DDX_Control(pDX, IDC_SEVENSEGNUMCTRL2, m_seg1); DDX_Control(pDX, IDC_SEVENSEGNUMCTRL1, m_seg2); DDX_Control(pDX, IDC_SEVENSEGNUMCTRL3, m_seg3); DDX_Control(pDX, IDC_SEVENSEGNUMCTRL4, m_seg4); DDX_Control(pDX, IDC_SEVENSEGNUMCTRL5, m_led_w); DDX_Control(pDX, IDC_STATIC1, m_status); DDX_Control(pDX, IDC_ITHERMOMETERX1, m_itemp); DDX_Control(pDX, IDC_IANGULARGAUGEX1, m_gasgaue); DDX_Control(pDX, IDC_CHECK6, m_checkad); // DDX_Control(pDX, IDC_PANEL1, m_panel); DDX_Control(pDX, IDC_EDIT1, m_receive); DDX_Control(pDX, IDC_MSFLEXGRID1, m_flex); DDX_Control(pDX, IDC_DATAGRID1, m_data); DDX_Control(pDX, IDC_PROGRESS1, m_progross); } BEGIN_MESSAGE_MAP(Cpj20Dlg, CDialog) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() //}}AFX_MSG_MAP ON_BN_CLICKED(IDC_BUTTON1, &Cpj20Dlg::OnBnClickedButton1) ON_BN_CLICKED(IDC_BUTTON2, &Cpj20Dlg::OnBnClickedButton2) ON_CBN_SELCHANGE(IDC_COMBO1, &Cpj20Dlg::OnCbnSelchangeCombo1) ON_BN_CLICKED(IDC_BUTTON3, &Cpj20Dlg::OnBnClickedButton3) // ON_BN_CLICKED(IDC_BUTTON4, &Cpj20Dlg::OnBnClickedButton4) // ON_BN_CLICKED(IDC_BUTTON5, &Cpj20Dlg::OnBnClickedButton5) //ON_BN_CLICKED(IDC_BUTTON6, &Cpj20Dlg::OnBnClickedButton6) // ON_BN_CLICKED(IDC_BUTTON7, &Cpj20Dlg::OnBnClickedButton7) //ON_BN_CLICKED(IDC_BUTTON8, &Cpj20Dlg::OnBnClickedButton8) // ON_BN_CLICKED(IDC_BUTTON9, &Cpj20Dlg::OnBnClickedButton9) ON_BN_CLICKED(IDC_BUTTON10, &Cpj20Dlg::OnBnClickedButton10) ON_BN_CLICKED(IDC_BUTTON11, &Cpj20Dlg::OnBnClickedButton11) ON_BN_CLICKED(IDC_BUTTON12, &Cpj20Dlg::OnBnClickedButton12) ON_BN_CLICKED(IDC_BUTTON13, &Cpj20Dlg::OnBnClickedButton13) ON_BN_CLICKED(IDC_BUTTON14, &Cpj20Dlg::OnBnClickedButton14) ON_BN_CLICKED(IDC_BUTTON15, &Cpj20Dlg::OnBnClickedButton15) ON_BN_CLICKED(IDC_BUTTON16, &Cpj20Dlg::OnBnClickedButton16) ON_BN_CLICKED(IDC_BUTTON17, &Cpj20Dlg::OnBnClickedButton17) //ON_BN_CLICKED(IDC_BUTTON18, &Cpj20Dlg::OnBnClickedButton18) // ON_BN_CLICKED(IDC_RADIO1, &Cpj20Dlg::OnBnClickedRadio1) ON_WM_TIMER() ON_COMMAND(ID_32771, &Cpj20Dlg::On32771) ON_COMMAND(ID_LED32773, &Cpj20Dlg::OnLed32773) ON_BN_CLICKED(IDC_CHECK6, &Cpj20Dlg::OnBnClickedCheck6) ON_COMMAND(ID_32777, &Cpj20Dlg::On32777) ON_BN_CLICKED(IDC_BUTTON20, &Cpj20Dlg::OnBnClickedButton20) ON_WM_CHAR() END_MESSAGE_MAP() // Cpj20Dlg 訊息處理程式 BOOL Cpj20Dlg::OnInitDialog() { CDialog::OnInitDialog(); // 將“關於...”選單項新增到系統選單中。 // IDM_ABOUTBOX 必須在系統命令範圍內。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // 設定此對話方塊的圖示。當應用程式主視窗不是對話方塊時,框架將自動 // 執行此操作 SetIcon(m_hIcon, TRUE); // 設定大圖示 SetIcon(m_hIcon, FALSE); // 設定小圖示 //ShowWindow(SW_MAXIMIZE); // TODO: 在此新增額外的初始化程式碼 static CFont font; //定義靜態變數,也可以定義全域性變數或者對話方塊的成員變數,臨時變數或者區域性變數是不行的 // font.CreatePointFont(120, "隸書"); font.CreatePointFont(300, "隸書"); GetDlgItem(IDC_STATICfont)->SetFont(&font); glen=0; m_combocom.SetCurSel(1); m_flex.put_TextMatrix(0,1,"值"); m_flex.put_TextMatrix(0,2,"單位"); m_flex.put_TextMatrix(1,2,"maH"); m_flex.put_TextMatrix(2,2,"mV"); m_flex.put_TextMatrix(3,2,"mV"); m_flex.put_TextMatrix(4,2,"mV"); m_flex.put_TextMatrix(5,2,"mV"); m_flex.put_TextMatrix(6,2,"%"); m_flex.put_TextMatrix(7,2,"℃"); m_flex.put_TextMatrix(8,2,"mA"); m_flex.put_TextMatrix(9,2,"-----"); //m_flex.put_TextMatrix(0,0,"FCC"); m_flex.put_TextMatrix(1,0,"FCC"); m_flex.put_TextMatrix(2,0,"CELL1"); m_flex.put_TextMatrix(3,0,"CELL2"); m_flex.put_TextMatrix(4,0,"CELL3"); m_flex.put_TextMatrix(5,0,"CELL4"); m_flex.put_TextMatrix(6,0,"SOC"); m_flex.put_TextMatrix(7,0,"溫度"); m_flex.put_TextMatrix(8,0,"電流"); m_flex.put_TextMatrix(9,0,"迴圈次數"); m_progross.SetRange(0,100); m_progross.SetStep(1); SetTimer(1,10,NULL); //SetTimer(1,1000,NULL); return TRUE; // 除非將焦點設定到控制元件,否則返回 TRUE } void Cpj20Dlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } } // 如果向對話方塊新增最小化按鈕,則需要下面的程式碼 // 來繪製該圖示。對於使用文件/檢視模型的 MFC 應用程式, // 這將由框架自動完成。 void Cpj20Dlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 用於繪製的裝置上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 使圖示在工作矩形中居中 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 繪製圖標 dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } //當用戶拖動最小化視窗時系統呼叫此函式取得游標顯示。 // HCURSOR Cpj20Dlg::OnQueryDragIcon() { return static_cast<HCURSOR>(m_hIcon); } BEGIN_EVENTSINK_MAP(Cpj20Dlg, CDialog) ON_EVENT(Cpj20Dlg, IDC_MSCOMM1, 1, Cpj20Dlg::OnCommMscomm1, VTS_NONE) END_EVENTSINK_MAP() void Cpj20Dlg::OnCommMscomm1() { VARIANT var_1; //儲存串列埠發過來的書variant資料型別 COleSafeArray colesafe_1; //型別轉換,可是實現和VARAINT類的資料轉換 long len; //儲存接受到的有效資料 long txdata[1024]; unsigned char bt[5]; long temp,fcc,soc,cell1,cell2,cell3,cell4,cycle,wt; //溫度的中間變數 CString strtemp; //轉換成字串 long k; int i; // TODO: 在此處新增訊息處理程式程式碼 switch(m_mscom1.get_CommEvent()) { case 2: var_1=m_mscom1.get_Input(); //得到串列埠資料VARAINT colesafe_1=var_1; //資料等效轉換 len=colesafe_1.GetOneDimSize(); //得到有效地的資料長度 for (k=0;k<len;k++) colesafe_1.GetElement(&k,txdata+k); bt[0]=*(char *)(txdata+0); bt[1]=*(char *)(txdata+1); bt[2]=*(char *)(txdata+2); bt[3]=*(char *)(txdata+3); bt[4]=*(char *)(txdata+4); // TODO: 在此新增訊息處理程式程式碼和/或呼叫預設值 if((bt[0]==0x7f)&&(bt[4]==0xf7)) { switch (bt[1]) { case 5: temp=bt[2]*256+bt[3]; m_led_w.SetValue(temp%100000/10000,0,NULL); //m_led_w.SetValue(7,0,NULL); m_seg1.SetValue(temp%10000/1000,0,NULL); m_seg2.SetValue((short)temp%1000/100,0,NULL); m_seg3.SetValue((short)temp%100/10,0,NULL); m_seg4.SetValue((short)temp%10/1,0,NULL); // m_itemp.SetPositionNoEvent(temp/10); char *str; itoa(temp,str,10); m_flex.put_TextMatrix(1,1,str); break; case 4: fcc=bt[2]*256+bt[3]; char *str1; itoa(fcc,str1,10); m_flex.put_TextMatrix(2,1,str1); break; case 3: soc=bt[2]*256+bt[3]; char *str2; itoa(soc,str2,10); m_flex.put_TextMatrix(3,1,str2); break; case 2: cell1=bt[2]*256+bt[3]; char *str3; itoa(cell1,str3,10); m_flex.put_TextMatrix(4,1,str3); break; case 1: cell2=bt[2]*256+bt[3]; char *str4; itoa(cell2,str4,10); m_flex.put_TextMatrix(5,1,str4); break; case 0: cell3=bt[2]*256+bt[3]; char *str5; itoa(cell3,str5,10); m_flex.put_TextMatrix(6,1,str5); m_gasgaue.SetPositionNoEvent(cell3); break; case 10: cell4=bt[2]*256+bt[3]; char *str6; itoa(cell4,str6,10); m_flex.put_TextMatrix(8,1,str6); break; case 11: cycle=bt[2]*256+bt[3]; cycle/=10;cycle-=273; char *str7; itoa(cycle,str7,10); m_flex.put_TextMatrix(7,1,str7); break; case 12: wt=bt[2]*256+bt[3]; char *str8; itoa(wt,str8,10); m_flex.put_TextMatrix(9,1,str8); break; } } break; } } void Cpj20Dlg::OnBnClickedButton1() { // TODO: 在此新增控制元件通知處理程式程式碼 if(!m_mscom1.get_PortOpen()) { m_mscom1.put_InBufferSize(1024);//設定輸入緩衝區的大小,Bytes m_mscom1.put_OutBufferSize(1024);//設定輸出緩衝區的大小,Bytes m_mscom1.put_CommPort(m_combocom.GetCurSel()+1); m_mscom1.put_PortOpen(TRUE); m_mscom1.put_RThreshold(5); m_mscom1.put_InputMode(1); //2進位制 m_mscom1.put_Settings(_T("9600,N,8,1")); m_mscom1.put_InputLen(0); m_mscom1.get_Input(); m_status_port.SetWindowText(_T("串列埠已開啟")); m_status.SetWindowText(_T("串列埠已開啟")); m_openserial.SetWindowText(_T("關閉串列埠")); } else { m_mscom1.put_PortOpen(FALSE); m_status_port.SetWindowText(_T("串列埠已關閉")); m_status.SetWindowText(_T("串列埠已關閉")); m_openserial.SetWindowText(_T("開啟串列埠")); } } void Cpj20Dlg::OnBnClickedButton2() { // TODO: 在此新增控制元件通知處理程式程式碼 CByteArray m_sendarray; m_sendarray.RemoveAll(); //把數組裡的資料清空 m_sendarray.SetSize(2); //設定數組裡面的引數為3個元素 m_sendarray.SetAt(0,0x32); //傳送第一個位元組index1 m_sendarray.SetAt(1,0x2f); //傳送第二個位元組index2 m_mscom1.put_Output((COleVariant)m_sendarray); } void Cpj20Dlg::OnCbnSelchangeCombo1() { // TODO: 在此新增控制元件通知處理程式程式碼 switch (m_combocom.GetCurSel()) { case 0: comport=1; break; case 1: comport=2; break; case 2: comport=3; break; case 3: comport=4; break; } } void Cpj20Dlg::OnBnClickedButton3() { } //點亮LED 燈 void Cpj20Dlg::OnBnClickedButton4() { CByteArray m_sendarray4; m_sendarray4.RemoveAll(); //把數組裡的資料清空 m_sendarray4.SetSize(5); //設定數組裡面的引數為3個元素 m_sendarray4.SetAt(0,0x7f); //傳送第一個位元組index1 m_sendarray4.SetAt(1,0x05); //傳送第二個位元組index2 m_sendarray4.SetAt(2,0x00); //傳送第一個位元組index1 m_sendarray4.SetAt(3,0xf7); //傳送第二個位元組index2 m_sendarray4.SetAt(4,0xf7); //傳送第二個位元組index2 m_mscom1.put_Output((COleVariant)m_sendarray4); // TODO: 在此新增控制元件通知處理程式程式碼 } //熄滅LED 燈 void Cpj20Dlg::OnBnClickedButton5() { // TODO: 在此新增控制元件通知處理程式程式碼 CByteArray m_sendarray5; m_sendarray5.RemoveAll(); //把數組裡的資料清空 m_sendarray5.SetSize(5); //設定數組裡面的引數為3個元素 m_sendarray5.SetAt(0,0x7f); //傳送第一個位元組index1 m_sendarray5.SetAt(1,0x05); //傳送第二個位元組index2 m_sendarray5.SetAt(2,0x01); //傳送第一個位元組index1 m_sendarray5.SetAt(3,0xf7); //傳送第二個位元組index2 m_sendarray5.SetAt(4,0xf7); //傳送第二個位元組index2 m_mscom1.put_Output((COleVariant)m_sendarray5); } void Cpj20Dlg::OnBnClickedButton6() { // TODO: 在此新增控制元件通知處理程式程式碼 // TODO: 在此新增控制元件通知處理程式程式碼 CByteArray m_sendarray5; m_sendarray5.RemoveAll(); //把數組裡的資料清空 m_sendarray5.SetSize(5); //設定數組裡面的引數為3個元素 m_sendarray5.SetAt(0,0x7f); //傳送第一個位元組index1 m_sendarray5.SetAt(1,0x7f); //傳送第二個位元組index2 m_sendarray5.SetAt(2,1); //傳送第一個位元組index1 m_sendarray5.SetAt(3,0xf7); //傳送第二個位元組index2 m_sendarray5.SetAt(4,0xf7); //傳送第二個位元組index2 m_mscom1.put_Output((COleVariant)m_sendarray5); } void Cpj20Dlg::OnBnClickedButton7() { // TODO: 在此新增控制元件通知處理程式程式碼 CByteArray m_sendarray5; m_sendarray5.RemoveAll(); //把數組裡的資料清空 m_sendarray5.SetSize(5); //設定數組裡面的引數為3個元素 m_sendarray5.SetAt(0,0x7f); //傳送第一個位元組index1 m_sendarray5.SetAt(1,0x7f); //傳送第二個位元組index2 m_sendarray5.SetAt(2,2); //傳送第一個位元組index1 m_sendarray5.SetAt(3,0xf7); //傳送第二個位元組index2 m_sendarray5.SetAt(4,0xf7); //傳送第二個位元組index2 m_mscom1.put_Output((COleVariant)m_sendarray5); } void Cpj20Dlg::OnBnClickedButton8() { // TODO: 在此新增控制元件通知處理程式程式碼 CByteArray m_sendarray5; m_sendarray5.RemoveAll(); //把數組裡的資料清空 m_sendarray5.SetSize(5); //設定數組裡面的引數為3個元素 m_sendarray5.SetAt(0,0x7f); //傳送第一個位元組index1 m_sendarray5.SetAt(1,0x7f); //傳送第二個位元組index2 m_sendarray5.SetAt(2,3); //傳送第一個位元組index1 m_sendarray5.SetAt(3,0xf7); //傳送第二個位元組index2 m_sendarray5.SetAt(4,0xf7); //傳送第二個位元組index2 m_mscom1.put_Output((COleVariant)m_sendarray5); } void Cpj20Dlg::OnBnClickedButton9() { // TODO: 在此新增控制元件通知處理程式程式碼 CByteArray m_sendarray5; m_sendarray5.RemoveAll(); //把數組裡的資料清空 m_sendarray5.SetSize(5); //設定數組裡面的引數為3個元素 m_sendarray5.SetAt(0,0x7f); //傳送第一個位元組index1 m_sendarray5.SetAt(1,0x7f); //傳送第二個位元組index2 m_sendarray5.SetAt(2,4); //傳送第一個位元組index1 m_sendarray5.SetAt(3,0xf7); //傳送第二個位元組index2 m_sendarray5.SetAt(4,0xf7); //傳送第二個位元組index2 m_mscom1.put_Output((COleVariant)m_sendarray5); } void Cpj20Dlg::OnBnClickedButton10() { // TODO: 在此新增控制元件通知處理程式程式碼 CByteArray m_sendarray5; m_sendarray5.RemoveAll(); //把數組裡的資料清空 m_sendarray5.SetSize(5); //設定數組裡面的引數為3個元素 m_sendarray5.SetAt(0,0x7f); //傳送第一個位元組index1 m_sendarray5.SetAt(1,0x7f); //傳送第二個位元組index2 m_sendarray5.SetAt(2,0); //傳送第一個位元組index1 m_sendarray5.SetAt(3,0xf7); //傳送第二個位元組index2 m_sendarray5.SetAt(4,0xf7); //傳送第二個位元組index2 m_mscom1.put_Output((COleVariant)m_sendarray5); } void Cpj20Dlg::OnBnClickedButton11() { // TODO: 在此新增控制元件通知處理程式程式碼 CByteArray m_sendarray5; m_sendarray5.RemoveAll(); //把數組裡的資料清空 m_sendarray5.SetSize(5); //設定數組裡面的引數為3個元素 m_sendarray5.SetAt(0,0x7f); //傳送第一個位元組index1 m_sendarray5.SetAt(1,0x7f); //傳送第二個位元組index2 m_sendarray5.SetAt(2,1); //傳送第一個位元組index1 m_sendarray5.SetAt(3,0xf7); //傳送第二個位元組index2 m_sendarray5.SetAt(4,0xf7); //傳送第二個位元組index2 m_mscom1.put_Output((COleVariant)m_sendarray5); } void Cpj20Dlg::OnBnClickedButton12() { // TODO: 在此新增控制元件通知處理程式程式碼 CByteArray m_sendarray5; m_sendarray5.RemoveAll(); //把數組裡的資料清空 m_sendarray5.SetSize(5); //設定數組裡面的引數為3個元素 m_sendarray5.SetAt(0,0x7f); //傳送第一個位元組index1 m_sendarray5.SetAt(1,0xf8); //傳送第二個位元組index2 m_sendarray5.SetAt(2,0); //傳送第一個位元組index1 m_sendarray5.SetAt(3,0xf7); //傳送第二個位元組index2 m_sendarray5.SetAt(4,0xf7); //傳送第二個位元組index2 m_mscom1.put_Output((COleVariant)m_sendarray5); } void Cpj20Dlg::OnBnClickedButton13() { // TODO: 在此新增控制元件通知處理程式程式碼 CByteArray m_sendarray5; m_sendarray5.RemoveAll(); //把數組裡的資料清空 m_sendarray5.SetSize(5); //設定數組裡面的引數為3個元素 m_sendarray5.SetAt(0,0x7f); //傳送第一個位元組index1 m_sendarray5.SetAt(1,0xf8); //傳送第二個位元組index2 m_sendarray5.SetAt(2,1); //傳送第一個位元組index1 m_sendarray5.SetAt(3,0xf7); //傳送第二個位元組index2 m_sendarray5.SetAt(4,0xf7); //傳送第二個位元組index2 m_mscom1.put_Output((COleVariant)m_sendarray5); } void Cpj20Dlg::OnBnClickedButton14() { // TODO: 在此新增控制元件通知處理程式程式碼 CByteArray m_sendarray5; m_sendarray5.RemoveAll(); //把數組裡的資料清空 m_sendarray5.SetSize(5); //設定數組裡面的引數為3個元素 m_sendarray5.SetAt(0,0x7f); //傳送第一個位元組index1 m_sendarray5.SetAt(1,0xf9); //傳送第二個位元組index2 m_sendarray5.SetAt(2,0); //傳送第一個位元組index1 m_sendarray5.SetAt(3,0xf7); //傳送第二個位元組index2 m_sendarray5.SetAt(4,0xf7); //傳送第二個位元組index2 m_mscom1.put_Output((COleVariant)m_sendarray5); } void Cpj20Dlg::OnBnClickedButton15() { // TODO: 在此新增控制元件通知處理程式程式碼 CByteArray m_sendarray5; m_sendarray5.RemoveAll(); //把數組裡的資料清空 m_sendarray5.SetSize(5); //設定數組裡面的引數為3個元素 m_sendarray5.SetAt(0,0x7f); //傳送第一個位元組index1 m_sendarray5.SetAt(1,0xf9); //傳送第二個位元組index2 m_sendarray5.SetAt(2,1); //傳送第一個位元組index1 m_sendarray5.SetAt(3,0xf7); //傳送第二個位元組index2 m_sendarray5.SetAt(4,0xf7); //傳送第二個位元組index2 m_mscom1.put_Output((COleVariant)m_sendarray5); } void Cpj20Dlg::OnBnClickedButton16() { // TODO: 在此新增控制元件通知處理程式程式碼 CByteArray m_sendarray5; m_sendarray5.RemoveAll(); //把數組裡的資料清空 m_sendarray5.SetSize(5); //設定數組裡面的引數為3個元素 m_sendarray5.SetAt(0,0x7f); //傳送第一個位元組index1 m_sendarray5.SetAt(1,0xfA); //傳送第二個位元組index2 m_sendarray5.SetAt(2,0); //傳送第一個位元組index1 m_sendarray5.SetAt(3,0xf7); //傳送第二個位元組index2 m_sendarray5.SetAt(4,0xf7); //傳送第二個位元組index2 m_mscom1.put_Output((COleVariant)m_sendarray5); } void Cpj20Dlg::OnBnClickedButton17() { // TODO: 在此新增控制元件通知處理程式程式碼 CByteArray m_sendarray5; m_sendarray5.RemoveAll(); //把數組裡的資料清空 m_sendarray5.SetSize(5); //設定數組裡面的引數為3個元素 m_sendarray5.SetAt(0,0x7f); //傳送第一個位元組index1 m_sendarray5.SetAt(1,0xfA); //傳送第二個位元組index2 m_sendarray5.SetAt(2,1); //傳送第一個位元組index1 m_sendarray5.SetAt(3,0xf7); //傳送第二個位元組index2 m_sendarray5.SetAt(4,0xf7); //傳送第二個位元組index2 m_mscom1.put_Output((COleVariant)m_sendarray5); } void Cpj20Dlg::OnBnClickedButton18() { // TODO: 在此新增控制元件通知處理程式程式碼 } void Cpj20Dlg::OnBnClickedRadio1() { // TODO: 在此新增控制元件通知處理程式程式碼 CByteArray m_sendarray5; m_sendarray5.RemoveAll(); //把數組裡的資料清空 m_sendarray5.SetSize(5); //設定數組裡面的引數為3個元素 m_sendarray5.SetAt(0,0x7f); //傳送第一個位元組index1 m_sendarray5.SetAt(1,0xfb); //傳送第二個位元組index2 m_sendarray5.SetAt(2,1); //傳送第一個位元組index1 m_sendarray5.SetAt(3,0xf7); //傳送第二個位元組index2 m_sendarray5.SetAt(4,0xf7); //傳送第二個位元組index2 m_mscom1.put_Output((COleVariant)m_sendarray5); } void Cpj20Dlg::OnTimer(UINT_PTR nIDEvent) { static int n=0; n++; if(n>=100) n=0; m_progross.SetPos(n); CDialog::OnTimer(nIDEvent); } void Cpj20Dlg::On32771() { // TODO: 在此新增命令處理程式程式碼 // MessageBox(_T("開啟串列埠")); test.DoModal(); } //流水燈的協議 0x7f 0xfc 0xf7 void Cpj20Dlg::OnLed32773() { // TODO: 在此新增命令處理程式程式碼 CByteArray m_sendarray5; m_sendarray5.RemoveAll(); //把數組裡的資料清空 m_sendarray5.SetSize(5); //設定數組裡面的引數為3個元素 m_sendarray5.SetAt(0,0x7f); //傳送第一個位元組index1 m_sendarray5.SetAt(1,0xfc); //傳送第二個位元組index2 m_sendarray5.SetAt(2,23); //傳送第一個位元組index1 m_sendarray5.SetAt(3,0xf7); //傳送第二個位元組index2 m_sendarray5.SetAt(4,0xf7); //傳送第二個位元組index2 m_mscom1.put_Output((COleVariant)m_sendarray5); } void Cpj20Dlg::OnBnClickedCheck6() { // TODO: 在此新增控制元件通知處理程式程式碼 } void Cpj20Dlg::On32777() { // TODO: 在此新增命令處理程式程式碼 } //開啟充電mos void Cpj20Dlg::OnBnClickedButton20() { // TODO: 在此新增控制元件通知處理程式程式碼 } void Cpj20Dlg::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) { // TODO: 在此新增訊息處理程式程式碼和/或呼叫預設值 switch(nChar) { case 'q': CDialog:OnCancel(); break; } CDialog::OnChar(nChar, nRepCnt, nFlags); }