大四课程设计之基于RFID技术的考勤管理系统(二)读取COM口数据

原创 2017年09月12日 22:27:12

----------------------------------------------------------------------------------------

源码下载地址:

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

大四课程设计之基于RFID技术的考勤管理系统(三)数据库设计

大四课程设计之基于RFID技术的考勤管理系统(三)数据库设计

大四课程设计之基于RFID技术的考勤管理系统(四)Qt界面设计

大四课程设计之基于RFID技术的考勤管理系统(四)Qt界面设计

数据结构课程设计-图书馆管理系统

这是我的数据结构课设,分为四个结构体,一个图书的结构体,一个读者的结构体,还有图书信息,读者信息结构体。 图书结构体可以储存借阅图书的读者信息,读者结构体可以储存借阅那些图书,同时,还有一个登陆密码验...

c语言版数据结构课程设计 学生成绩管理系统

此学生成绩管理系统完成15项功能,是我经过很多次的修改得到的。花费时间不短,功能齐全,主要完成了:输入,输出,插入,修改,删除,查询,读取文件,写入文件,复制文件,建立索引,显示各种情况下的信息,追加...

数据结构课程设计--“模拟图书管理系统的开发”

/*********************************************** *版权所有 (c++)2015 朱绍懿 *文件名:main.cpp *文件标识 :无 *内容摘要:该文...

数据结构课程设计之通讯录管理系统

数据结构的第二个课程设计,在c语言课程设计的基础上加以改进,(加强版),保存一下代码,对文件的处理,还是有一点一问题,还有待改进 #include #include #include #incl...

数据结构课程设计——学生成绩管理系统

/********************************************** *文件名称:学生成绩管理系统 *文件标识:无 *内容摘要:实现学成成绩的输入、插入、删除、修改、排...

数据结构课程设计(运动会成绩管理系统)

#include #include #includestruct d { int grade;//定义结构体方便对学院的项目排序 int name;}a[99];int N,M,W...

数据结构课程设计—学生信息管理系统

问题描述: /* * Copyright (c)2015,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称:aaaa.cbp * 作 ...

数据结构课程设计之学生信息管理系统

/*********************************************************** * 版权所有 (C)2016,jiangyankai * 文件名称...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:大四课程设计之基于RFID技术的考勤管理系统(二)读取COM口数据
举报原因:
原因补充:

(最多只允许输入30个字)