C ++에서 두 개의 문자 배열을 비교하는 방법은 무엇입니까?

bzc0fq

저는 두 값을 비교하고 싶습니다 z1(CRC가의 연결된 마지막 두에서 건축 outWord[10]outWord[11]), 그리고 z2그 또한 CRC하지만 패킷 수에 따라 계산.
z1e568이어야 z2하지만 두 값을 비교할 때 차이가 있습니다.

문제가 어디에 있는지 알려주시겠습니까?

#include "Arduino.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

int inWord = 0;
int outWord[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
int index = 0;
unsigned char Data2Calc[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
unsigned short CRC2Calc = 0;
unsigned char Bytes2Calc = 9;

void setup()
{
    pinMode(13, OUTPUT);
    lcd.begin(16,2);    
    lcd.backlight();    
    lcd.setCursor(0,0); 
    lcd.print("Test RFID");
    lcd.setCursor(0,1); 
    lcd.print("Zeskanuj TAG");
    Serial.begin(9600);
    Serial1.begin(9600);
    lcd.setCursor(0,0);
}

void loop()
{
    if (Serial1.available())
    {

        RFID();

    }
    else
    {
        if (index==11)
        {
            index=0;
        }
    }
}



unsigned char RFID(void)
{
    char z1 [10] = { "" };
    char z2 [10] = { "" };
    unsigned short crc1 [] =  { 0 };
    unsigned short crc2[]  = { 0 };

    //-----
    inWord = Serial1.read();
    index++;

    if (index == 1)
    {
        if (inWord == 1)
        {
            outWord[index] = inWord;
        }
        else
        {
            index=index-1;
        }

    }
    else if (index > 1)
    {
        if (index == 11)
        {
            outWord[index] = inWord;

            for (int i = 1; i <12; i++)
            {
            Serial.print(outWord[i],HEX);   // --> 1B31687DBC7FFE568
            Data2Calc[i-1] = outWord[i];
            }
            Serial.println();

            CRC16(Data2Calc, &CRC2Calc, Bytes2Calc);

            itoa(outWord[10],z1,16);
            itoa(outWord[11],z2,16);
            strcat(z1, z2);
            *crc2 = CRC2Calc;

            Serial.print("crc1=");      //
            Serial.print(z1);       // --> e568 
            Serial.println("");     //
            Serial.print("crc2=");      //
            sprintf(z2, "%x", *crc2);   // 
            Serial.print(z2);       // --> e568
            Serial.println("");     //
            Serial.print("CRC2Calc=");  //
            Serial.print(CRC2Calc,HEX); // --> E568
            Serial.println("");     //

            if (z1 == z2)
            {
                Serial.print("OK");
            }
            else
            {
                Serial.print("FAILED");
            }

            Serial.println("");

        }
        else
        {
        outWord[index] = inWord;
        }
    }




    return *z1;
}



void CRC16(unsigned char * Data, unsigned short * CRC, unsigned char Bytes)
{
    int i, byte;
    unsigned short C;

    *CRC = 0;
    for (byte = 1; byte <= Bytes; byte++, Data++)
    {
        C = ((*CRC >> 8) ^ *Data) << 8;
        for (i = 0; i < 8; i++)
        {
            if (C & 0x8000)
                C = (C << 1) ^ 0x1021;
            else
                C = C << 1;
        }
        *CRC = C ^ (*CRC << 8);
    }
}

프로그램의 전체 출력은 다음과 같습니다.

    Currently there are no serial ports registered - please use the + button to add a port to the monitor.
    Connect to serial port COM4 at 9600
    1B31687DBC7FFE568 
    crc1=e568 
    crc2=e568
    CRC2Calc=E568
    FAILED
Adrian Mole

에서와 같이 포인터를 비교하여 문자열 내용비교할 수 없습니다 . 문자열이 두 개의 다른 메모리 위치에 있으므로 주소가 다르기 때문에 (거의) 항상 거짓입니다.char*if (z1 == z2)

문자열이 같으면 0strcmp() 을 반환 하는 함수를 사용해야합니다 . 그래서:

    if (strcmp(z1,z2) == 0)
    {
        Serial.print("OK");
    }
    else
    {
        Serial.print("FAILED");
    }

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

사전 p에 저장된 두 개의 하위 문자열을 비교하는 방법은 무엇입니까?

분류에서Dev

C ++에서 두 개의 문자열 벡터로 문자열을 만드는 방법은 무엇입니까?

분류에서Dev

C에서 2 개 이상의 문자열을 비교하는 방법은 무엇입니까?

분류에서Dev

C ++의 배열에서 ASCII가 아닌 문자를 비교 / 교체하는 방법은 무엇입니까?

분류에서Dev

JavaScript에서 두 배열을 비교하는 방법은 무엇입니까? 하지만 열쇠는 문자열

분류에서Dev

PHP에서 두 문자열의 동등성을 비교하는 방법은 무엇입니까?

분류에서Dev

PHP에서 두 문자열의 동등성을 비교하는 방법은 무엇입니까?

분류에서Dev

jsp / jstl의 foreach 루프에서 두 문자열을 비교하는 방법은 무엇입니까?

분류에서Dev

Sass에서 if 문에서 두 개 이상의 값을 비교하는 방법은 무엇입니까?

분류에서Dev

C #에서 두 DataSet 열 값을 비교하는 방법은 무엇입니까?

분류에서Dev

Numpy에서 배열의 두 배열을 'array-elementwise'비교하는 방법은 무엇입니까?

분류에서Dev

C에서 문자열을 조작하는 두 가지 방법의 차이점은 무엇입니까?

분류에서Dev

자바 : 중복되지 않는 요소에 대해 두 개의 int [] 배열을 비교하는 방법은 무엇입니까?

분류에서Dev

두 개의 다른 파일에서 두 열을 비교하는 방법은 무엇입니까?

분류에서Dev

두 개의 다른 크기 배열을 비교하고 비교에 따라 UICollectionviewcell에서 색상을 지정하는 방법은 무엇입니까?

분류에서Dev

jexl에서 두 개의 숫자 문자열을 연결하는 방법은 무엇입니까?

분류에서Dev

두 개의 문자열 배열을 가져 와서 모두 결합하는 배열을 만드는 방법은 무엇입니까?

분류에서Dev

MongoDB에서 배열 요소의 시작과 끝에서 필드에서 두 개의 하위 문자열을 찾는 방법은 무엇입니까?

분류에서Dev

두 개의 다른 열 사이에서 팬더의 값을 비교하는 방법은 무엇입니까?

분류에서Dev

C #에서 두 목록을 비교하는 방법은 무엇입니까?

분류에서Dev

QRegularExpression-두 개의 <ca> 태그 사이에서 문자열을 추출하는 방법은 무엇입니까?

분류에서Dev

C #에서 2 개의 문자로 문자열을 분할하는 방법은 무엇입니까?

분류에서Dev

C에서 알 수없는 크기의 문자열 배열을 인쇄하는 방법은 무엇입니까?

분류에서Dev

pyspark 데이터 프레임에서 두 개의 문자열 열을 빼는 방법은 무엇입니까?

분류에서Dev

Objective-C의 문자열 배열에서 가장 큰 숫자 값을 찾는 방법은 무엇입니까?

분류에서Dev

Java에서 두 개의 비 원시 Long을 비교하는 방법은 무엇입니까?

분류에서Dev

MySQL에서 두 숫자를 문자열로 비교하는 방법은 무엇입니까?

분류에서Dev

C #에서 두 개의 문자열 열을 비교하는 가장 빠른 방법

분류에서Dev

Django에서 하루에 두 개의 datetime을 비교하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    사전 p에 저장된 두 개의 하위 문자열을 비교하는 방법은 무엇입니까?

  2. 2

    C ++에서 두 개의 문자열 벡터로 문자열을 만드는 방법은 무엇입니까?

  3. 3

    C에서 2 개 이상의 문자열을 비교하는 방법은 무엇입니까?

  4. 4

    C ++의 배열에서 ASCII가 아닌 문자를 비교 / 교체하는 방법은 무엇입니까?

  5. 5

    JavaScript에서 두 배열을 비교하는 방법은 무엇입니까? 하지만 열쇠는 문자열

  6. 6

    PHP에서 두 문자열의 동등성을 비교하는 방법은 무엇입니까?

  7. 7

    PHP에서 두 문자열의 동등성을 비교하는 방법은 무엇입니까?

  8. 8

    jsp / jstl의 foreach 루프에서 두 문자열을 비교하는 방법은 무엇입니까?

  9. 9

    Sass에서 if 문에서 두 개 이상의 값을 비교하는 방법은 무엇입니까?

  10. 10

    C #에서 두 DataSet 열 값을 비교하는 방법은 무엇입니까?

  11. 11

    Numpy에서 배열의 두 배열을 'array-elementwise'비교하는 방법은 무엇입니까?

  12. 12

    C에서 문자열을 조작하는 두 가지 방법의 차이점은 무엇입니까?

  13. 13

    자바 : 중복되지 않는 요소에 대해 두 개의 int [] 배열을 비교하는 방법은 무엇입니까?

  14. 14

    두 개의 다른 파일에서 두 열을 비교하는 방법은 무엇입니까?

  15. 15

    두 개의 다른 크기 배열을 비교하고 비교에 따라 UICollectionviewcell에서 색상을 지정하는 방법은 무엇입니까?

  16. 16

    jexl에서 두 개의 숫자 문자열을 연결하는 방법은 무엇입니까?

  17. 17

    두 개의 문자열 배열을 가져 와서 모두 결합하는 배열을 만드는 방법은 무엇입니까?

  18. 18

    MongoDB에서 배열 요소의 시작과 끝에서 필드에서 두 개의 하위 문자열을 찾는 방법은 무엇입니까?

  19. 19

    두 개의 다른 열 사이에서 팬더의 값을 비교하는 방법은 무엇입니까?

  20. 20

    C #에서 두 목록을 비교하는 방법은 무엇입니까?

  21. 21

    QRegularExpression-두 개의 <ca> 태그 사이에서 문자열을 추출하는 방법은 무엇입니까?

  22. 22

    C #에서 2 개의 문자로 문자열을 분할하는 방법은 무엇입니까?

  23. 23

    C에서 알 수없는 크기의 문자열 배열을 인쇄하는 방법은 무엇입니까?

  24. 24

    pyspark 데이터 프레임에서 두 개의 문자열 열을 빼는 방법은 무엇입니까?

  25. 25

    Objective-C의 문자열 배열에서 가장 큰 숫자 값을 찾는 방법은 무엇입니까?

  26. 26

    Java에서 두 개의 비 원시 Long을 비교하는 방법은 무엇입니까?

  27. 27

    MySQL에서 두 숫자를 문자열로 비교하는 방법은 무엇입니까?

  28. 28

    C #에서 두 개의 문자열 열을 비교하는 가장 빠른 방법

  29. 29

    Django에서 하루에 두 개의 datetime을 비교하는 방법은 무엇입니까?

뜨겁다태그

보관