日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

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

發布時間:2025/3/15 windows 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大四课程设计之基于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口数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。