collapse

* Posts Recentes

Rede de comboios elétricos totalmente autónomos 10 ton em Rust em realtime. por blabla
[18 de Setembro de 2022, 18:44]


NiMH por 18650 por almamater
[18 de Setembro de 2022, 17:21]


How We Get Down to 0.2nm CPUs and GPUs - TechTechPotato por blabla
[18 de Setembro de 2022, 15:38]


Nova secção de Raspberry Pi Bare Metal em C e em Rust e Systems Programming por blabla
[04 de Setembro de 2022, 08:55]


The code for AGI will be simple - John Carmack and Lex Fridman por blabla
[29 de Agosto de 2022, 07:36]


Wavelets: a mathematical microscope por blabla
[28 de Agosto de 2022, 20:50]


Bom livro - Dive Into Systems por blabla
[28 de Agosto de 2022, 12:19]


graus negativos inclinação por josecarlos
[28 de Agosto de 2022, 11:31]


Super obsolescência super programada? por SerraCabo
[06 de Agosto de 2022, 11:36]


Motor de aspirador por dropes
[02 de Agosto de 2022, 22:18]

Autor Tópico: comparação string  (Lida 4294 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline dio123

  • Mini Robot
  • *
  • Mensagens: 1.028
comparação string
« em: 20 de Setembro de 2020, 17:45 »
Boa tarde,
Estou a refazer um projeto que tinha feito atmega328 e estou a fazer upgrade e mudar mircro para stm32f103.

Agora cheguei a um ponto que preciso de comprar 2 strings mas não percebo porque não esta a dar no stm32, ou seja rx_buffer tem \r\nOK\r\n zeros até ao fim.
strcmp diz que é diferente já exprimentei strncmp para os primeiro 6 mas diz que não é igual.


Código: [Seleccione]
uint8_t rx_buffer[120];//buffer uart1

if (strcmp(rx_buffer,"\r\nOK\r\n")== 0) {
  LCD_puts(&lcd, "hardware ok");
}

Offline KammutierSpule

  • Mini Robot
  • *
  • Mensagens: 1.463
Re: comparação string
« Responder #1 em: 20 de Setembro de 2020, 19:30 »
A rotina de escrita no LCD esta a funcionar ? :)


Compilei este codigo, funcionou:

Código: [Seleccione]
#include <iostream>
#include <cstring>

int main()
{
    char rx_buffer[120];

    strcat(rx_buffer, "\r\nOK\r\n");

    if(strcmp(rx_buffer,"\r\nOK\r\n") == 0) {
        std::cout << "hardware ok";
    }
}

faz debug / dump dos valores em byte de cada posicao na trama recebida

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.865
  • NERD!
Re: comparação string
« Responder #2 em: 21 de Setembro de 2020, 10:01 »
A dúvida que fiquei no código original é se tens mesmo os 0x00 após a string. Micros e compiladores  diferentes iniciam a memória de forma diferente, e assumir que um array está a zero só porque foi acabado de declarar é perigoso.
No caso do KammuitierSpule o 0x00 está mesmo lá porque usou o strcat e não deixa margem de erro.


Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.595
    • Tróniquices
Re: comparação string
« Responder #3 em: 22 de Setembro de 2020, 10:42 »
A dúvida que fiquei no código original é se tens mesmo os 0x00 após a string.

Bem observado. Se for uma variável estática sim, mas no snippet do dio não sabemos se é estática ou local...

Offline dio123

  • Mini Robot
  • *
  • Mensagens: 1.028
Re: comparação string
« Responder #4 em: 24 de Setembro de 2020, 22:20 »
Boa noite,
Já resolvi a questão de não estar a dar o resultado correcto.
Ontem estive de volta da coisa e o problema era apenas acrescentar char *
ficou assim:
Código: [Seleccione]
    if(strcmp((char *)rx_buffer,"\r\nO1K\r\n") == 0) {