#include <stdio.h>
#include <Windows.h>
#pragma comment(lib, "Ws2_32.lib")
#define CRC_PRESET 0xFFFF
#define CRC_POLYNOM 0x8408
unsigned short RFID_CRC(void *, unsigned int);
int main() {
u_char caString[255] = { 0x0D, 0x00, 0x71, 0x00,
0x30, 0x00, 0x00, 0x00,
0x0A, 0x00, 0x00 };
DCB sPState;
DWORD dwCount;
HANDLE hComm
= CreateFile("COM4",
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
if (hComm == INVALID_HANDLE_VALUE) {
printf("Port Open Error\n");
return 0;
}
if (SetupComm(hComm, 4096, 4096) == 0) {
printf("Buffer Setting Error\n");
CloseHandle(hComm);
return 0;
}
if (PurgeComm(hComm, PURGE_TXABORT | PURGE_TXCLEAR) == 0) {
printf("Buffer Error");
CloseHandle(hComm);
return 0;
}
sPState.DCBlength = sizeof(sPState);
// sPState에 기존의 내용을 읽어온다.
if (GetCommState(hComm, &sPState) == 0) {
printf("Serial Read Error\n");
CloseHandle(hComm);
return 0;
}
// 필요한 부분만 수정
sPState.BaudRate = CBR_38400;
sPState.ByteSize = 8;
sPState.Parity = EVENPARITY;
sPState.StopBits = ONESTOPBIT;
// 필요한 부분을 수정하였으면 설정을 한다.
if (SetCommState(hComm, &sPState) == 0) {
printf("Serial State Setting Error\n");
CloseHandle(hComm);
return 0;
}
// 46 41을 넣는 방식
*((unsigned short *)(caString + caString[0] - 2)) = RFID_CRC(caString, caString[0] - 2);
WriteFile(hComm, caString, caString[0], &dwCount, 0);
// 세 번째 인자는 읽을 크기를 적는다.
ReadFile(hComm, caString, 1, &dwCount, 0);
ReadFile(hComm, caString + 1, caString[0] - 1, &dwCount, 0);
/*
if (WriteFile(hComm, caString, caString[0], &dwWritten, 0) == 0) {
printf("Write Error\n");
}
else {
printf("Write Success\n");
}
*/
CloseHandle(hComm);
return 0;
}
unsigned short RFID_CRC(void *vpData, unsigned int uiLen) {
int i, j;
unsigned char *DATA = vpData;
unsigned short CRC = CRC_PRESET;
for (i = 0; i < uiLen; i++) {
CRC ^= DATA[i];
for (j = 0; j < 8; j++) {
if (CRC & 0x0001)
CRC = (CRC >> 1) ^ CRC_POLYNOM;
else
CRC = (CRC >> 1);
}
}
return CRC;
}
'코스웨어 > 15년 스마트컨트롤러' 카테고리의 다른 글
20151209_박서연_일일업무보고서_RFID(2) (6) | 2015.12.10 |
---|---|
20151209 김태현 개인업무일지 RFID 도스 시리얼 (5) | 2015.12.10 |
2015.12.09_Dos Serial RFID_이량경 (5) | 2015.12.10 |
20151209 임현수 업무일지 RFID 도스 시리얼 (5) | 2015.12.10 |
20151209_[안향진]_RFID_2 (5) | 2015.12.09 |
20151209-김재홍-Serial_3일차-RFID_도스 (3) | 2015.12.09 |
20151209 업무일지 -여지윤- RFID(Dos) (3) | 2015.12.09 |
20151209 - 홍준모 3일차 오전 : 가상 리눅스 RFID 시리얼 통신(실패), 오후 : 도스 RFID 시리얼 통신(성공) (4) | 2015.12.09 |