6월3일 API(테스트겸 비트맵뷰어) RFID(CRC코드)
2010. 6. 3. 12:43ㆍ2010년/6월
RFID
#include <windows.h>
#include <stdio.h>
unsigned short MecCRC(void *arg)
{
unsigned short i;
unsigned short j;
unsigned short cnt;
unsigned short crc=0xFFFF;
unsigned char *buf = arg;
cnt = (*buf) - 2;
for(i=0 ; i < cnt ; ++i)
{
crc^= *(buf + i);
for(j=0 ; j < 8 ; ++j){
if(0 != (crc&0x0001))
{
crc=(crc>>1)^0x8408;
}
else
{
crc=(crc>>1);
}
}
}
return crc;
}
int main()
{
// RFID 리더기 시리얼 셋팅:1초간 LED 깜빡임, 소리 내기
u_char caString[] = {
0X0D, 0X00, 0X71, 0X00, 0X37,
0X00, 0X00, 0X00, 0X28, 0X00,
0X00, 0XDD, 0X30
};
unsigned short ret = MecCRC(caString);
DWORD dwWritten; // 쓰기 후 실제 쓴 바이트 수 저장 공간
DCB SerialState; // 시리얼 상태 저장
HANDLE hComm = CreateFile("COM1",GENERIC_READ | GENERIC_WRITE,0,NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,0);
printf("0x%02X%02X\n", ((unsigned char *)&ret)[0], ((unsigned char *)&ret)[1]);
printf("0x%02X%02X\n", caString[11], caString[12]);
if (INVALID_HANDLE_VALUE == hComm)
{
printf("포트 열 수 없음\n");
return 0;
}
if(0 == SetupComm(hComm, 4096, 3096))
{
printf("버퍼 설정 에러\n");
CloseHandle(hComm);
return 0;
}
if(0 == PurgeComm(hComm, PURGE_TXABORT | PURGE_TXCLEAR))
{
printf("버퍼 초기화 에러\n");
CloseHandle(hComm);
return 0;
}
SerialState.DCBlength = sizeof(SerialState);
if(0 == GetCommState(hComm, &SerialState))
{
printf("시리얼 상태 읽기 에러\n");
CloseHandle(hComm);
return 0;
}
SerialState.BaudRate = CBR_38400; // 속도
SerialState.ByteSize = 8; // 바이트 크기
SerialState.Parity = EVENPARITY; // 패리티
SerialState.StopBits = ONESTOPBIT; // 스톱 비트
if (0 == SetCommState(hComm, &SerialState))
{
printf("시리얼 상태 설정 에러\n");
CloseHandle(hComm);
return 0;
}
if (0 == WriteFile(hComm, caString, sizeof(caString), &dwWritten, 0))
{
printf("쓰기 에러\n");
}
else
{
printf("쓰기 성공\n");
}
dwWritten =6;
ReadFile(hComm, caString, dwWritten, &dwWritten, 0);
printf("%02x %02x %02x %02x %02x\n", caString[0], caString[1], caString[2], caString[3], caString[4]);
CloseHandle(hComm);
return 0;
}
'2010년 > 6월' 카테고리의 다른 글
6월7일 RFID(Reqeust Data,UID) 영상처리(ctrl+alt+t,SetDIBitsToDevice,비트맵구조체 (0) | 2010.06.07 |
---|---|
6월4일 RFID(CRC) 영상신호처리( (0) | 2010.06.04 |
6월1일 API(bitmapviewer) RFID( (0) | 2010.06.01 |
5월7일 c++(extern,makefile생성내용,복사붙여넣기,자동차c++완성) (0) | 2010.05.07 |
5월 6일 C++(자동차) 윈도우즈API(틀) (0) | 2010.05.06 |