大四课程设计之基于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
總結
以上是生活随笔為你收集整理的大四课程设计之基于RFID技术的考勤管理系统(二)读取COM口数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 初一上册计算机教案,人教版七年级上册信息
- 下一篇: Java基础入门笔记-单根继承