首页 > 解决方案 > C++将特定数据模式从RFID阅读器写入文本文件

问题描述

我成功地从阅读器获取数据并将其写入文本文件。

检测到的标签示例:4330-3031-3138-3031-2D32-2D31

但是,将标签数据写入文本文件是这样的:

43

4330

4330-30

4330-3031

4330-3031-31

4330-3031-3138

4330-3031-3138-30

4330-3031-3138-3031

4330-3031-3138-3031-2D

4330-3031-3138-3031-2D32

4330-3031-3138-3031-2D32-2D

4330-3031-3138-3031-2D32-2D31

我尝试使用 if 语句(count++)将上面最长的最后一个值写入文本文件,但不知何故,即使变量保持其值,数据也不会写入文本文件。

Below are my codes:
{
// Format Tag and print on screen

void printTagData(TAG_DATA *pTagData)

{

    fstream myTextFile,myTextFile2, myTextFile3;

    string fileText,fileText2; 

    char  tagBuffer[1024] = {0,};

    char* pTagReportData = tagBuffer;

    int   index = 0;

     int count = 0;

    TCHAR   resultBuffer[MAX_PATH]; 

    for(index = 0; index < pTagData->tagIDLength; index++)

    {
         myTextFile.open("text1.txt",ios::app);

             if (0 < index && index % 2 == 0)

             {

                 *pTagReportData++ = '-';

             }

             sprintf(pTagReportData, "%02X", pTagData->pTagID[index]);

             while (*pTagReportData) pTagReportData++;

        stringstream ss;

        ss << tagBuffer;

        ss >> fileText;

        myTextFile << fileText << endl;

        myTextFile.close(); 

    }

    _stprintf(resultBuffer, TEXT("%S"), tagBuffer);


    SendDlgItemMessage(g_hDlg, IDC_INVENTORY_LIST, LB_ADDSTRING, 0, (LPARAM)resultBuffer);

    SendDlgItemMessage(g_hDlg, IDC_INVENTORY_LIST, WM_VSCROLL, (WPARAM)SB_BOTTOM, 0);

}

请随时给我任何提示/指导。我是否应该编写另一个代码来提取与“4330-3031-3138-3031-2D32-2D31”匹配的模式并写入一个新的文本文件?

标签: c++rfid

解决方案


这段代码非常复杂。我会做这样的事情(为了清楚起见,代码未经测试和错误处理省略):

#include <stdio.h>

void printTagData (TAG_DATA *pTagData)
{
    FILE *f = fopen ("text1.txt", "wt");
    for (int i = 0; i < pTagData->tagIDLength; i++)
    {
         if (i > 0 && i % 2 == 0)
             fprintf (f, "-");
         fprintf (f, "%02X", pTagData->pTagID [i]);
    }

    fclose (f);
}

就这样。


推荐阅读