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

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

基于大数据分析的安全管理平台技术研究及应用

【引言】这篇文章原载于内刊,现发布于此。内容有所删减。 基于大数据分析的安全管理平台技术研究及应用 Research and Application of Big Data Analysis Base...
  • ShiZhixin
  • ShiZhixin
  • 2015年07月14日 17:24
  • 5009

作为计算机专业学生,最应该学习的课程前五位是什么?【知乎】

http://www.zhihu.com/question/19628851#answer-100293 对于目前排在首位的兵哥哥的答案,不敢苟同。 本人软件工程专业。 ...
  • maboqun
  • maboqun
  • 2015年05月06日 23:02
  • 21522

基于微信公众平台的二维码签到系统-------(1)系统功能描述

系统总体设计 需求分析    本文研究基于微信公众平台的签到系统的开发,需要对扫码学生个人信息和微信信息进行组合成一个整体,从而实现学生签到状态的实现。同时为了便于教师个人配置,系统会增加系统...
  • two_be_continued
  • two_be_continued
  • 2017年07月06日 11:03
  • 1976

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

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

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

/*********************************************************** * 版权所有 (C)2016,ChenDi * * 文件名称...
  • chendi19
  • chendi19
  • 2016年12月29日 16:44
  • 943

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

这是我的数据结构课设,分为四个结构体,一个图书的结构体,一个读者的结构体,还有图书信息,读者信息结构体。 图书结构体可以储存借阅图书的读者信息,读者结构体可以储存借阅那些图书,同时,还有一个登陆密码验...
  • deramer1
  • deramer1
  • 2017年04月06日 22:43
  • 1981

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

问题及代码: /***********************************************************   * 版权所有 (C)2017, 徐潇雨   *   * 文件...
  • xxuxiaoyu123
  • xxuxiaoyu123
  • 2017年12月22日 11:08
  • 110

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

学生成绩管理系统 1.头文件 //第一门成绩即为语文成绩 //第二门成绩即为数学成绩 //第三门成绩即为英语成绩 #include #include #include #include #inc...
  • GL906376500
  • GL906376500
  • 2015年12月25日 08:51
  • 1253

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

/*********************************************** *版权所有 (c++)2015 朱绍懿 *文件名:main.cpp *文件标识 :无 *内容摘要:该文...
  • Freak_Tree
  • Freak_Tree
  • 2015年12月25日 17:43
  • 1022

数据结构课程设计《火车售票管理系统》

题目:火车售票管理系统 需求分析:要求能够实现售票、退票、余票查询等功能 方法设计:可以用结构体和栈模拟买票退票的过程。 车票打印效果如下: +------------------------...
  • NYIST_TC_LYQ
  • NYIST_TC_LYQ
  • 2016年12月27日 17:34
  • 1748
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:大四课程设计之基于RFID技术的考勤管理系统(二)读取COM口数据
举报原因:
原因补充:

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