Pages: [1]   Go Down
Author Topic: Serial.print() ASCII  (Read 1592 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 1
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Olá pessoa =D. É o seguinte, eu to fazendo um código de transmissão RF e quero, por enquanto, apenas transmitir textos. Porém no meu serial monitor recepitor, não está aparecendo o texto em si - ACSII(texto humano)- mas sim, em hexadecimal - veja a imagem. Queria saber se há alguma maneira de mostrar o texto que eu quero ao invés de códigos numéricos.

 
Logged

Brasil
Offline Offline
Sr. Member
****
Karma: 2
Posts: 315
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bota a parte do código, pois parece q vc ta mandando um serial.print([variavel],HEX);
Logged

4x Duemilanove (clone)
Uno torrado (clone)
Amiga 1200 40MB
Windows XP


Offline Offline
Newbie
*
Karma: 1
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

É isso mesmo, mas tentei com outras maneiras e também não consegui .-.

Mas, de qualquer formar, está postado o código do receptor.


Code:
#include <VirtualWire.h>

int LED = 13;
void setup()
{
  Serial.begin(9600);
  Serial.println("setup");
  vw_set_ptt_inverted(true);
  vw_setup(2000);
  vw_set_rx_pin(9);
  vw_rx_start();
    pinMode(LED, OUTPUT);  
}
void loop()
{
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;
    digitalWrite(13, LOW);
    if (vw_get_message(buf, &buflen))
    {
int i;

        digitalWrite(LED, HIGH);
Serial.print("Got: ");

for (i = 0; i < buflen; i++)
{
   Serial.print(buf[i], HEX);
   Serial.print(' ');
}
Serial.println();
        digitalWrite(LED, LOW);
    }
}


« Last Edit: February 23, 2013, 06:50:49 am by Pixes » Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3243
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
Serial.print((char)buf[i] );

e hello para ti também. smiley

Muda o tipo de variável de uint8_t para char na buf[]
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Jr. Member
**
Karma: 1
Posts: 75
3ª Idade ... in the house
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Boas,

Ora aqui esta uma boa duvida ... que já tenho a algum tempo ... nunca sei que tipo de variável usar

o tipo de variável char não é a mesma coisa que um signed int ? ou seja de -128 a + 127, e sendo uint8_t a mesma coisa que um BYTE (0-255)

e visto que a tabela ascii "normal" é de 0 a 127, não vejo que diferença era ter ... ou estou enganado ?

Cpts

Zé tretas
Logged

Arduino Mega 2560
Arduino Nano
Arduino UNO Rev3
Raspberry PI Model B
EasyPIC v4

Portugal
Offline Offline
Edison Member
*
Karma: 37
Posts: 1573
Pretending you know everything then you will learn nothing.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
o tipo de variável char não é a mesma coisa que um signed int ?
Nao.Um signed int armazena 16 bits que vai de -32766 a 32765 por ser signed. Se fosse unsigned ia de 0 a 65535 por omitir os valores negativos.
Já um uint8_t é um int unsigned mas de apenas 8 bits.
Na pratica o que o uint8_t  ocupa é o mesmo que o unsigned char.
Apesar de existir casos onde usar os dois é irrelevante quando se quer armazenar caracteres o ideal é usar variaveis do tipo char, pois se quiseres usar Strings basta colocar o caracter terminador no fim do vector de chars.
Se usasses variaveis do tipo byte depois se quiseres trata-lo como um char tens de lhe fazer um cast para ele te dar o codigo ascii correspondente ao valor hex que ele tem armazenado.
Se declares um char assim :
Code:
char a = 0;
Ela é signed por defeito ou seja inclui valores negativos
« Last Edit: February 24, 2013, 01:51:00 pm by HugoPT » Logged

Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B


'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3243
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

uint8_t, byte e unsigned char são a mesma coisa...

Eu uso esta regra para definir o tipo das minhas variáveis:

É texto? Sim: char, Não: Seguinte.
Pode ser negativo? Sim: signed, Não: unsigned.
Cabe de -127 a 127 ou 0 a 255? Sim: char, Não: Seguinte.
Cabe de -32000 a 32000 ou de 0 a 65000?: Sim: int, Não: Seguinte.
Cabe de ....

Apesar de perceber o motivo pelo qual se criam estas nomenclaturas de uint8_t ou byte ou ui8 e por aí adiante, mas como 99,9% do meu código não é para portar por ser normalmente específico da plataforma que estou a usar, normalmente uso os tipos base do C para o que quero. Confunde muito menos.
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 1
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Fala aí pessoal. Não pude testar o código no final de semana, pois o laboratório da minha escola estava fechado. Mas hoje, quando testei a dica do nosso amigo bubulindo. Funcionou =D, mas ficou com "sujeira" vindo junto na transmissão.
Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3243
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Define sujeira...
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Brasil
Offline Offline
Sr. Member
****
Karma: 2
Posts: 315
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Fala aí pessoal. Não pude testar o código no final de semana, pois o laboratório da minha escola estava fechado. Mas hoje, quando testei a dica do nosso amigo bubulindo. Funcionou =D, mas ficou com "sujeira" vindo junto na transmissão.
Acho que o que você define como "sujeira", deve ser alguns bytes, que não são apresentados como caracteres ALFA-NUMÉRICOS + PONTUAÇÃO, eu aconselho você a colocar
o código assim.
Code:
Serial.print((char)buf[i] );
Serial.print(" ");
Serial.print(buf[i] );

Você verá que esses bytes, não devem estar entre 20 e 7E que são os caracteres imprimíveis...
Logged

4x Duemilanove (clone)
Uno torrado (clone)
Amiga 1200 40MB
Windows XP


Pages: [1]   Go Up
Jump to: