大四课程设计之基于RFID技术的考勤管理系统(二)读取COM口数据
大四课程设计之基于RFID技术的考勤管理系统(一)读取COM口数据
·
----------------------------------------------------------------------------------------
源码下载地址:
http://download.csdn.net/download/qq78442761/9971770
----------------------------------------------------------------------------------------
一开始写了一个控制台的,如下图所示:
核心代码如下:
#ifdef _msc_ver
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"maincrtstartup\"" )
#endif
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <windows.h>
#include "Serial.h"
char dataRecv[512] = { '\0' };
AfSerial com3;
char IDChar[128] = { '/0' };
char DataChar[128] = { '/0' };
void SaveData() //保存文件
{
FILE *fp = fopen("RFID_R", "w");
for (int i = 0; i < strlen(IDChar); i++)
{
fprintf(fp, "%c", IDChar[i]);
}
fprintf(fp, "\n");
for (int i = 0; i < strlen(DataChar); i++)
{
fprintf(fp, "%c", DataChar[i]);
}
fclose(fp);
}
void SaveData2() //保存文件
{
//FILE *fp = fopen("./Data/RFID_R", "w");
//for (int i = 0; i < strlen(IDChar); i++)
//{
// fprintf(fp, "%c", IDChar[i]);
//}
//fclose(fp);
char temp4[5];
int j = 0;
for (int i = strlen(IDChar)-1; j<4; i--,j++)
{
temp4[3-j] = IDChar[i]; //最后一位和最后一位对应
}
temp4[4] = '\0';
printf_s("\n%s", temp4);
FILE *fp = fopen("./Data/RFID_R", "w");
for (int i = 0; i < strlen(temp4); i++)
{
fprintf(fp, "%c", temp4[i]);
}
fclose(fp);
}
void GetData()//得到数据
{
int k = 0; //冒号数量
int j = 0;
for (int i = 120; i <= strlen(dataRecv); i++)
{
if (dataRecv[i] == ':')
k++;
if (k == 2)
{
DataChar[j] = dataRecv[i];
printf_s("%c", dataRecv[i]);
j++;
}
}
}
void GetID()//得到ID
{
int k = 0;
//得到第一个冒号后的数字:
for (int i = 0; i <= strlen(dataRecv); i++)
{
if (dataRecv[i] == ':')
{
for (int j = i; j < strlen(dataRecv) && j < 120; j++) //提取ID
{
if (dataRecv[j] >= 48 && dataRecv[j] <= 57)
{
IDChar[k] = dataRecv[j];
printf_s("%c", dataRecv[j]);
k++;
}
}
}
}
}
int main()
{
com3.Open("COM3", 9600, 'N', 8, 1);
while (1)
{
if (com3.Recv(dataRecv, 512) != -1)
{
printf_s("%s\n", dataRecv);
GetID();
GetData();
printf_s("\n%s", IDChar);
//printf_s("\n%s", DataChar);
//SaveData();
system("pause");
SaveData2();
return 0;
}
}
return 0;
}
随和做成了一个WIn32项目,就一个消息框,流程图如下所示:
如下所示:
注意:这里只有关键代码,本程序源码在文章开头有提供下载:
#define _CRT_SECURE_NO_WARNINGS
#include <Windows.h>
#include <stdio.h>
#include <windows.h>
#include "Serial.h"
char dataRecv[4096] = { '/0' };
AfSerial com3;
char IDChar[128] = { '/0' };
char DataChar[128] = { '/0' };
void SaveData() //保存文件
{
FILE *fp = fopen("RFID_R", "w");
for (int i = 0; i < strlen(IDChar); i++)
{
fprintf(fp, "%c", IDChar[i]);
}
fprintf(fp, "\n");
for (int i = 0; i < strlen(DataChar); i++)
{
fprintf(fp, "%c", DataChar[i]);
}
fclose(fp);
}
void SaveData2() //保存文件
{
//FILE *fp = fopen("./Data/RFID_R", "w");
//for (int i = 0; i < strlen(IDChar); i++)
//{
// fprintf(fp, "%c", IDChar[i]);
//}
//fclose(fp);
char temp4[5];
int j = 0;
for (int i = strlen(IDChar) - 1; j < 4; i--, j++)
{
temp4[3 - j] = IDChar[i]; //最后一位和最后一位对应
}
temp4[4] = '\0';
printf_s("\n%s", temp4);
FILE *fp = fopen("./Data/RFID_R", "w");
for (int i = 0; i < strlen(temp4); i++)
{
fprintf(fp, "%c", temp4[i]);
}
fclose(fp);
}
void GetData()//得到数据
{
int k = 0; //冒号数量
int j = 0;
for (int i = 120; i <= strlen(dataRecv); i++)
{
if (dataRecv[i] == ':')
k++;
if (k == 2)
{
DataChar[j] = dataRecv[i];
printf_s("%c", dataRecv[i]);
j++;
}
}
}
void GetID()//得到ID
{
int k = 0;
//得到第一个冒号后的数字:
for (int i = 0; i <= strlen(dataRecv); i++)
{
if (dataRecv[i] == ':')
{
for (int j = i; j < strlen(dataRecv) && j < 120; j++) //提取ID
{
if (dataRecv[j] >= 48 && dataRecv[j] <= 57)
{
IDChar[k] = dataRecv[j];
printf_s("%c", dataRecv[j]);
k++;
}
}
}
}
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
if (com3.Open("COM4", 9600, 'N', 8, 1) == 0)
{
while (1)
{
if (com3.Recv(dataRecv, 4096) != -1)
{
printf_s("%s\n", dataRecv);
GetID();
GetData();
printf_s("\n%s", IDChar);
//printf_s("\n%s", DataChar);
//SaveData();
SaveData2();
com3.Close();
MessageBox(NULL, TEXT("卡读取中"), TEXT("com4"), MB_OK);
break;
}
}
}
return 0;
}
他会把读取到的数据存储在Data文件夹里面,如下图所示:
这里,只把卡号的后六位提取了出来,并没有对卡数据进行写入!
上一篇博文:
大四课程设计之基于RFID技术的考勤管理系统(一)项目介绍
http://blog.csdn.net/qq78442761/article/details/77916313
下一篇博文:
大四课程设计之基于RFID技术的考勤管理系统(三)数据库设计
http://blog.csdn.net/qq78442761/article/details/77951377
更多推荐
已为社区贡献3条内容
所有评论(0)