아래 부턴 쭉쭉 복사, 붙여넣기후 주석으로 설명하겠습니다.

// bin    00    000    000
//       color   col    row

void CMFC_Dot_MatrixDlg::OnBnClickedColor4()

    // CLEAR
    RS232_DATA = 0x00; // 0b 0000 0000
    LED_COLOR = 0;
    m_drag = false;

}

void CMFC_Dot_MatrixDlg::OnBnClickedColor1()

    //RED
    RS232_DATA = 0x40; // 0b 0100 0000
    LED_COLOR = 1;
    m_drag = false;

}

void CMFC_Dot_MatrixDlg::OnBnClickedColor2()

    //GRN
    RS232_DATA = 0x80; // 0b 1000 0000
    LED_COLOR = 2;
    m_drag = false;

}

void CMFC_Dot_MatrixDlg::OnBnClickedColor3()
{
    //ALL
    RS232_DATA = 0xC0; // 0b 1100 0000
    LED_COLOR = 3;
    m_drag = false;

}

void CMFC_Dot_MatrixDlg::OnBnClickedColor5()
{
    LED_COLOR = 4;
    m_drag = false;

}

void CMFC_Dot_MatrixDlg::OnBnClickedColor6()
{
    //ALL_RED
    RS232_Comm('1');
    RS232_Comm('1');
    RS232_Comm('1');
    RS232_Comm('1');

    ALL_COLOR(RED);
    m_drag = false;

}

void CMFC_Dot_MatrixDlg::OnBnClickedColor7()
{
    //ALL_GRN
    RS232_Comm('2');
    RS232_Comm('2');
    RS232_Comm('2');
    RS232_Comm('2');

    ALL_COLOR(GREEN);
    m_drag = false;

}

void CMFC_Dot_MatrixDlg::OnBnClickedColor8()
{
    //ALL_ALL
    RS232_Comm('3');
    RS232_Comm('3');
    RS232_Comm('3');
    RS232_Comm('3');

    ALL_COLOR(YELLOW);
    m_drag = false;

}

void CMFC_Dot_MatrixDlg::OnBnClickedColor9()

    //ALL_CLS
    RS232_Comm('0');
    RS232_Comm('0');
    RS232_Comm('0');
    RS232_Comm('0');

    ALL_COLOR(CLEAR);
    m_drag = false;

}

 
/*
올컬러 함수는 컬러 파라미터를 받아서 격자 안을 몽땅 동일한 컬러로 만들어 줍니다.
이제 와서 쓰면서 드는 생각인데.. 이렇게 할필요없이 첨부터 끝까지 색을 칠하고 격자를 새로 그려주는게 더 간단하지 않았을까 생각됩니다.

*/

void CMFC_Dot_MatrixDlg::ALL_COLOR(INT COLOR){
 
    CBrush *brOld, Brush;
    CDC *pNewDC = GetDC();
 
    switch(COLOR)
    {
    case 0: Brush.CreateSolidBrush(RGB(240, 240, 240)); break;
    case RED: Brush.CreateSolidBrush(RGB(255, 0, 0)); break;
    case GREEN: Brush.CreateSolidBrush(RGB(0, 255, 0)); break;
    case YELLOW: Brush.CreateSolidBrush(RGB(255, 255, 0)); break;
    }

    brOld = pNewDC->SelectObject(&Brush);

    for(int i=0; i<8; i++)
        for(int j=1; j<9; j++)
            pNewDC->Rectangle(i*55+10, j*55-10,  (i+1)*55+11,(j+1)*55-9);
 
    pNewDC->SelectObject(brOld);
    Brush.DeleteObject();
 
    ReleaseDC(pNewDC);

}

void CMFC_Dot_MatrixDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
 
    m_drag = true;

    m_point = point;
 
    char buff_str[20];
        sprintf_s(buff_str, "%d  %d  %d", m_point.x, m_point.y, LED_COLOR);
    m_str = buff_str;
 
    UpdateData(0);
    // 아래쪽에 만든 에딧 컨트롤부분에 현재 마우스 포인터의 좌표와 색을 출력해줍니다.

    CDialog::OnLButtonDown(nFlags, point);
}

void CMFC_Dot_MatrixDlg::OnMouseMove(UINT nFlags, CPoint point)
{
    if( m_drag == true)
        m_point = point;

    char buff_str[20];
    sprintf_s(buff_str, "%d  %d  %d", m_point.x, m_point.y, LED_COLOR);
    m_str = buff_str;
 
    UpdateData(0);
    // 아래쪽에 만든 에딧 컨트롤부분에 현재 마우스 포인터의 좌표와 색을 출력해줍니다.
    CDialog::OnMouseMove(nFlags, point);
}

void CMFC_Dot_MatrixDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
    m_drag = false;
    CDialog::OnLButtonUp(nFlags, point);
}


/*
블루투스 스타트 버튼 메소드 입니다.
이걸눌러야 통신이 시작됩니다.
두번 누르면 안되여 @_@;
충돌 일어납니다. 원랜 확인하고 체크하고 하는데 다 빼버렸어여 -_ㅠ 짧게 만들려고..
*/

void CMFC_Dot_MatrixDlg::OnBnClickedBluetoothstart()
{
    hComm = CreateFileA((LPCSTR)"COM4", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
    //노란색 컴 포트 넘버를 고쳐주면 됩니다 +_+ 원하는 포트로.
    cp.wPacketLength = sizeof(COMMPROP);

    GetCommProperties(hComm, &cp);
    GetCommState(hComm, &dcb);
    SetCommState(hComm, &dcb);

}

void CMFC_Dot_MatrixDlg::OnBnClickedBluetoothend()
{
    CloseHandle(hComm);
}

void CMFC_Dot_MatrixDlg::RS232_Comm(unsigned char data)
{
    unsigned char OutBuff[1];
    unsigned long nByteToWrite;
    unsigned long nByteWritten;

    OutBuff[0] = data;

    nByteToWrite = 1;

    WriteFile(hComm, OutBuff, nByteToWrite, &nByteWritten, NULL);

    PurgeComm(hComm, PURGE_RXCLEAR);
}

'OpenSTUDY > openProjects' 카테고리의 다른 글

MFC Dotmatrix ver 2.0.0  (4) 2011.10.28
MFC Dotmatrix ver 1.1.0  (0) 2011.10.28
MFC Dotmatrix ver 1.0.2  (0) 2011.10.28
MFC Dotmatrix ver 1.0.1  (0) 2011.10.28
MFC Dotmatrix ver 1.0.0  (0) 2011.10.28

+ Recent posts