블루투스 또는 Rs232 시리얼통신이 하이퍼터미널을 통해 된다는 가정하에 프로그램을 만들어 보겠습니다.

MFC Joystick 프로젝트에 이어서 실제 서보모터를 움직일 수 있도록 해봅시다.

스피디 하게 진행을 하겠습니다.

myDlg.h의 클래스 내부에 public: 아래
 
 LPCSTR lpszCommName;
 DCB dcb;
 COMMPROP cp;
 HANDLE hComm;
 COMSTAT cs;
 DWORD dwErrorMask;

 afx_msg void RS232_Comm(unsigned char);

를 추가해줍니다.

myDlg.cpp의 OnInitDialog()함수 내부에서 dcb구조체를 초기화 해줍니다.

 dcb.BaudRate = CBR_9600;
 dcb.ByteSize = 8;
 dcb.Parity   = NOPARITY;
 dcb.StopBits = ONESTOPBIT;

리소스의 다이얼로그창에서 버튼 두개를 만든다음 ID를 통신시작, 통신종료로 만들어줍니다.

아이디가 생긴 버튼을 더블클릭하면 두개의 함수가 생기지요,

통신 시작 함수에는

 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);

이부분이 들어가야 하구,, 빨간 부분은 컴포트 넘버를 뜻하는것으로 입맛에 맞게 바꿔주시면 됩니다.

통신 종료 함수에는

CloseHandle(hComm);

이것만 들어가면 되지요.

이후 헤더에서 추가를 해뒀던 Rs232_Comm함수내부에는

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);

이렇게 들어갑니다.



이제 통신을 시작해 봐야지요,

Rs232_Comm( 값 );

값을 써주시면 통신이 시작되는데, 1Byte 크기로 하나가 전송된답니다.


일전에 만들었던 OnTimer 함수에서 m_Xpos라는 변수가 현재 값을 DWORD 형으로 받고 있네요, 이 값을 1Byte 크기로 변환하기 위해 256으로 나누어 주어야 하고, m_Data에는 보내지는 값을 출력해야겠지요.

전역변수로 UCHAR 자료형의 CalcXpos를 선언하고

OnTimer 함수 m_Xpos = gapp.wJoyXpos; 아랫줄에

 m_Xpos = gapp.wJoyXPos;

// -32767 <= (signed)real_x  <= +32768
// 0  <  (Unsigned)real_x  < +65536 - 16bit
//  0  <  (UCHAR)calc_x  < +256  - 8bit

 CalcXpos = (INT)m_Xpos >> 8;

 RS232_Comm(CalcXpos);

이렇게 써줍니당.

256을 나누어 주는것과 같은문장이 오른쪽 8비트 쉬프트구요..

RS232_Comm을 통해 1Byte를 전송해 주네요 @_@ 오호호호..

m_Data에 값을 써주기 위해선,

char BuffStr[10];
sprintf(BuffStr, "%d", m_Xpos);
m_Data = BuffStr;

이렇게 해주면 된답니당.

참 쉽졀 ??

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

MFC BlueTooth ver 1.3.0  (0) 2011.10.18
MFC BlueTooth ver 1.2.0  (0) 2011.10.16
MFC Joystick ver 1.0.5  (0) 2011.10.16
MFC Joystick ver 1.0.4  (0) 2011.10.16
MFC Joystick ver 1.0.3  (0) 2011.10.16

+ Recent posts