⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 commdsp.cpp

📁 for asuncyhronous pwm motor control
💻 CPP
📖 第 1 页 / 共 2 页
字号:
										//	WriteABuffer("1AB0", 4);
										//sprintf(OutSSadd,"Isha %d\n", 1);
										//strcat(OutSS,OutSSadd);
										//mbstowcs(LOutSS, OutSS,400);
										//MessageBox( hWnd, LOutSS, _T("SalatTime"), MB_OK);
										//OutputDebugString ( LOutSS);
                    break;
                case IDM_EXIT:
										if (hComm) CloseHandle( hComm);
                    SendMessage (hWnd, WM_CLOSE, 0, 0);				
										break;
                default:
                    return DefWindowProc(hWnd, message, wParam, lParam);
            }
            break;
        case WM_CREATE:
            SHMENUBARINFO mbi;

            memset(&mbi, 0, sizeof(SHMENUBARINFO));
            mbi.cbSize     = sizeof(SHMENUBARINFO);
            mbi.hwndParent = hWnd;
            mbi.nToolBarId = IDR_MENU;
            mbi.hInstRes   = g_hInst;

            if (!SHCreateMenuBar(&mbi)) 
								{
                g_hWndMenuBar = NULL;
								}
            else
								{
                g_hWndMenuBar = mbi.hwndMB;
								}
           // Initialize the shell activate info structure
            memset(&s_sai, 0, sizeof (s_sai));
            s_sai.cbSize = sizeof (s_sai);
						// ivalide tte connection future !
						Connected=false;
						break;
        case WM_PAINT:
            hdc = BeginPaint(hWnd, &ps);
 						DrawText(hdc, PrincipaleSS, -1, &rc, DT_CALCRECT | DT_LEFT | DT_TOP);
						DrawText(hdc, PrincipaleSS, -1, &rc, DT_LEFT | DT_TOP);
			
			// TODO: Add any drawing code here...
              //PAINTSTRUCT ps;
              //HPEN hpen, hpOld;

              //POINT ptTriangle[3];
              //ptTriangle[0].x = 20;
              //ptTriangle[0].y = 20;
              //ptTriangle[1].x = 20;
              //ptTriangle[1].y = 170;
              //ptTriangle[2].x = 170;
              //ptTriangle[2].y = 95;

              //hpen = CreatePen( PS_SOLID, 2, 0);
              //hpOld=(HPEN)SelectObject( hdc,hpen);

              //if(VilleSelected == 0) Rectangle(hdc, 20, 20, 170, 170);

              //if(VilleSelected == 1) Ellipse(hdc, 20, 20, 170, 170);

              //if(VilleSelected == 2) Polygon(hdc, ptTriangle, 3);

              //SelectObject(hdc,hpOld);
              //DeleteObject(hpen);
            
            EndPaint(hWnd, &ps);
            break;
        case WM_DESTROY:
            CommandBar_Destroy(g_hWndMenuBar);
            PostQuitMessage(0);
            break;

        case WM_ACTIVATE:
            // Notify shell of our activate message
            SHHandleWMActivate(hWnd, wParam, lParam, &s_sai, FALSE);
            break;
        case WM_SETTINGCHANGE:
            SHHandleWMSettingChange(hWnd, wParam, lParam, &s_sai);
            break;

        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}
//-------------------------------------------------------------------------
// Message handler for about box.
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
        case WM_INITDIALOG:
            {
              // Create a Done button and size it.  
              SHINITDLGINFO shidi;
              shidi.dwMask = SHIDIM_FLAGS;
              shidi.dwFlags = SHIDIF_DONEBUTTON | SHIDIF_SIPDOWN | SHIDIF_SIZEDLGFULLSCREEN | SHIDIF_EMPTYMENU;
              shidi.hDlg = hDlg;
              SHInitDialog(&shidi);
            }
            return (INT_PTR)TRUE;

        case WM_COMMAND:
            if (LOWORD(wParam) == IDOK)
							{
              EndDialog(hDlg, LOWORD(wParam));
              return TRUE;
							}
            break;

        case WM_CLOSE:

            EndDialog(hDlg, message);
            return TRUE;

//#ifdef _DEVICE_RESOLUTION_AWARE
//        case WM_SIZE:
//            {
//						DRA::RelayoutDialog( g_hInst, hDlg, MAKEINTRESOURCE(IDD_ABOUTBOX));
//            }
//            break;
//#endif
    }
    return (INT_PTR)FALSE;
}
//-------------------------------------------------------------------------
// Message handler for about box.
INT_PTR CALLBACK Config(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
char OutSS[120];
wchar_t LOutSS[120];

    switch (message)
    {
        case WM_INITDIALOG:
            {
              // Create a Done button and size it.  
              SHINITDLGINFO shidi;
              shidi.dwMask = SHIDIM_FLAGS;
              shidi.dwFlags = SHIDIF_DONEBUTTON | SHIDIF_SIPDOWN | SHIDIF_SIZEDLGFULLSCREEN | SHIDIF_EMPTYMENU;
              shidi.hDlg = hDlg;
              SHInitDialog(&shidi);
            }
            return (INT_PTR)TRUE;

        case WM_COMMAND:
						switch (LOWORD(wParam))
							{
							case IDOK :
									EndDialog(hDlg, LOWORD(wParam));
									return TRUE;
									break;
							}
            break;

        case WM_CLOSE:

            EndDialog(hDlg, message);
            return TRUE;

    }
    return (INT_PTR)FALSE;
}
//-------------------------------------------------------------------------
// Message handler for PiloteReferences dialog box.
INT_PTR CALLBACK PiloteReferences(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
BOOL NoErr;
__int8 code;
double data;
char OutSS[120];
wchar_t LOutSS[120];

	switch (message)
    {
        case WM_INITDIALOG:
            {
              // Create a Done button and size it.  
              SHINITDLGINFO shidi;
              shidi.dwMask = SHIDIM_FLAGS;
              shidi.dwFlags = SHIDIF_DONEBUTTON | SHIDIF_SIPDOWN | SHIDIF_SIZEDLGFULLSCREEN | SHIDIF_EMPTYMENU;
              shidi.hDlg = hDlg;
              SHInitDialog(&shidi);
							VitessePositionFlag=1;
							SendDlgItemMessage(hDlg, IDC_RBVitesse, BM_SETCHECK, VitessePositionFlag, 0);
							SendDlgItemMessage(hDlg, IDC_RDPosition, BM_SETCHECK, !VitessePositionFlag, 0);
							// slider : trackbar
							SendDlgItemMessage(hDlg, IDC_SBReference, TBM_SETRANGE, TRUE, MAKELONG(-2400, 2400));
							SendDlgItemMessage(hDlg, IDC_SBReference, TBM_SETPOS, TRUE, 0);
							SetDlgItemInt(hDlg, IDC_EDITData, 0, TRUE);
						}
            return (INT_PTR)TRUE;

				case WM_HSCROLL:
						data=SendDlgItemMessage(hDlg, IDC_SBReference, TBM_GETPOS, 0, 0)/4.0;
						SetDlgItemInt(hDlg, IDC_EDITData, data, TRUE);
						if (VitessePositionFlag)		code=ID_ModeControleVitesse;
															else			code=ID_ModeControlePosition;
						EnvoieSemiWord(hDlg, code, data);
						return TRUE;
				case WM_COMMAND:
						switch (LOWORD(wParam))
							{
//						case TB_THUMBTRACK:
//									data=SendMessage(hDlg, TBM_GETPOS, 0, 0)/4.0;
//									SetDlgItemInt(hDlg, IDC_EDITData, data, TRUE);
//									if (VitessePositionFlag)		code=ID_ModeControleVitesse;
//																		else			code=ID_ModeControlePosition;
//									EnvoieSemiWord(hDlg, code, data);
									return TRUE;
						case IDC_BUTTONReset :
									data=0;
									SendDlgItemMessage(hDlg, IDC_SBReference, TBM_SETPOS, TRUE, data);
									SetDlgItemInt(hDlg, IDC_EDITData, data, TRUE);
									if (VitessePositionFlag)		code=ID_ModeControleVitesse;
																		else			code=ID_ModeControlePosition;
									EnvoieSemiWord(hDlg, code, data);
									//sprintf(OutSS, "Button reset");
									//mbstowcs(LOutSS, OutSS, 120);
									//MessageBox( hDlg, LOutSS, _T("Send dlg"), MB_OK);
									return TRUE;
						case IDC_RBVitesse :
									VitessePositionFlag=true;
									if (VitessePositionFlag)		data=0;
																		else			data=1;
									EnvoieSemiWord(hDlg, ID_ModeControle, data);
									return TRUE;
						case IDC_RDPosition :
									VitessePositionFlag=false;
									if (VitessePositionFlag)		data=0;
																		else			data=1;
									EnvoieSemiWord(hDlg, ID_ModeControle, data);
									return TRUE;
									
						case IDC_BUTTONSend :
									data=GetDlgItemInt(hDlg, IDC_EDITData, &NoErr, TRUE);
									if (NoErr){
														SendDlgItemMessage(hDlg, IDC_SBReference, TBM_SETPOS, TRUE, data*4);
														
														if (VitessePositionFlag)		code=ID_ModeControleVitesse;
																							else			code=ID_ModeControlePosition;
														EnvoieSemiWord(hDlg, code, data);
														}
									return TRUE;
							case IDOK :
									EndDialog(hDlg, LOWORD(wParam));
									return TRUE;
							}
            break;

        case WM_CLOSE:

            EndDialog(hDlg, message);
            return TRUE;
    }
    return (INT_PTR)FALSE;
}
//---------------------------------------------------------------------------
void EnvoieSemiWord(HWND hDlg, __int8 code, double data)
{
char OutSS[120];
wchar_t LOutSS[120];
char Out[4];
int WrittenCount;
__int16 idata;        // donn閑 sur 16 bits sign閟 dont 14 sont significatifs et 2 de controle =0
	idata=data*4;
	Out[0]=code;
	Out[1]=idata & 0x7F;    // sur 7 bits seulement
	Out[2]=(idata>>7) & 0x7F;
	Out[4]=0;
	// pas besoin du dummy char car le PPC aura int sur 1 byte re鐄  ---	Out[3]=13;
	if (Connected)
						{
						WrittenCount=WriteABuffer( Out, 3);
						if (!WrittenCount) 
								MessageBox( hDlg, _T("3 bytes non ecrits !"), _T("Erreur"), MB_OK |MB_ICONSTOP);
						sprintf(OutSS, "%03d: 0x%2x : c%c",UINT8(Out[0]), UINT8(Out[0]), Out[0]);
						mbstowcs(LOutSS, OutSS, 120);
						SetDlgItemText(hDlg, IDC_LabelCode, LOutSS);
						sprintf(OutSS, "%03d: 0x%2x : c%c",UINT8(Out[1]), UINT8(Out[1]), Out[1]);
						mbstowcs(LOutSS, OutSS, 120);
						SetDlgItemText(hDlg, IDC_LabelLow, LOutSS);
						sprintf(OutSS, "%03d: 0x%2x : c%c",UINT8(Out[2]), UINT8(Out[2]), Out[2]);
						mbstowcs(LOutSS, OutSS, 120);
						SetDlgItemText(hDlg, IDC_LabelHi, LOutSS);
						}
		else   {
						MessageBox( hDlg, _T("Port Com non ouvert"), _T("Erreur"), MB_OK |MB_ICONSTOP);
						sprintf(OutSS, "none");
						mbstowcs(LOutSS, OutSS, 120);
						SetDlgItemText(hDlg, IDC_LabelCode, LOutSS);
						sprintf(OutSS, "%03d: 0x%x : c%c",UINT8(Out[1]), UINT8(Out[1]), Out[2]);
						SetDlgItemText(hDlg, IDC_LabelLow, LOutSS);
						SetDlgItemText(hDlg, IDC_LabelHi, LOutSS);
						}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -