大四课程设计之基于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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq78442761/article/details/77950585

树莓派使用RFID-RC522A读卡器对IC卡进行读写(通过 python)

1. 配置树莓派首先需要运行raspi-config,开启树莓派的spi接口,因为RFID-RC522A读卡器与树莓派之间是通过spi协议进行通信的 https://www.raspberrypi.o...
  • iyjr38
  • iyjr38
  • 2017-03-02 12:02:44
  • 5590

RFID读写C#源码

  • 2008年12月10日 12:35
  • 155KB
  • 下载

C#用Activex实现Web客户端读取RFID功能的代码

由于要在Web项目中采用RFID读取功能,所以有必要开发Activex,一般情况下开发Activex都采用VC,VB等,但对这两块不是很熟悉,所以采用C#编写Activex的方式实现...
  • haoxingfeng
  • haoxingfeng
  • 2014-04-28 22:16:53
  • 4043

RFID课程设计

  • 2015年06月29日 22:08
  • 48KB
  • 下载

python通过pyserial读写串口--2013-06-02

转自  :http://my.oschina.net/quanpower/blog/136763 目录[-] Overview Features Requireme...
  • xiaoxianerqq
  • xiaoxianerqq
  • 2015-12-18 14:38:49
  • 7508

c++课程设计之考勤统计

c++结课后,课程设计又随之而来。在经过了查资料等反复修改后,我写出了下面的最终程序。除了一些小bug为修复外,基本功能算是解决了。下面就是课程设计的要求: 二、 课程设计的主要内容 功能描述:...
  • logo0819
  • logo0819
  • 2015-05-29 18:51:22
  • 1125

python从文件读数据

最近在做一个课题,需要将拿到的数据先存入数据库,刚好自己在学习python,就想拿python解决这个问题。拿到数据解压后发现是一个近6G的txt文件,文件太大,无法打开,尝试用python读取几行数...
  • u010946448
  • u010946448
  • 2016-04-14 16:07:09
  • 667

读卡器的状态机, python实现

状态机是个著名的数学模型,在数字电路、编译原理、面向对象系统分析与设计、形式语言与状态机中都有提及。正确的思考方法是有效的工具,在解决问题中非常重要。人类通常不懈于在猛兽面前炫耀速度和力量,而是使用弩...
  • younggift
  • younggift
  • 2014-06-29 19:18:16
  • 2419

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

大四课程设计之基于RFID技术的考勤管理系统(三)数据库设计
  • qq78442761
  • qq78442761
  • 2017-09-12 22:39:45
  • 1049

基于RFID的员工考勤应用系统

  • 2012年12月04日 17:35
  • 835KB
  • 下载
收藏助手
不良信息举报
您举报文章:大四课程设计之基于RFID技术的考勤管理系统(二)读取COM口数据
举报原因:
原因补充:

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