SPRINTF & KEIL

Software e Hardware para linha ARM

Moderadores: 51, guest2003, Renie, gpenga

Mensagempor styg » 30 Nov 2010 20:56

fabim escreveu:é, intão faz favor. Abre a string no wath ali embaixo, e deixa eu ver se a formatação ficou certa... ou se ele fez a formatação


mas a string ja ta aberta no watch, é soh consultar uma tabela ascii e ver que ta certo..
Lucas
Avatar do usuário
styg
Word
 
Mensagens: 799
Registrado em: 16 Out 2006 08:24
Localização: Floripa abaixo de zero.

Mensagempor fabim » 01 Dez 2010 06:25

hehe, meu monitor tava escondendo o watch, hehehe.
Cara muito estranho, muito mesmo.
Aqui não works nem a purretada.
Nem com o pirex, nem com varios que eu conheço.
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor tcpipchip » 01 Dez 2010 06:35

fabim escreveu: Nem com o pirex, nem com varios que eu conheço.


Será que estes vários que você conhece não pegaram a cópia do Keil do mesmo Baú ?
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor fabim » 01 Dez 2010 06:38

site da keil...
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor proex » 01 Dez 2010 07:29

Me expliquem isso:

Suponham que a variavel display seja mesmo um display.

int x;
x=123456

sprintf (display, "%2d", x);

Pergunta: O que deveria aparecer no display?

.
proex
Dword
 
Mensagens: 2101
Registrado em: 11 Out 2006 14:05
Localização: São Paulo

Mensagempor fabim » 01 Dez 2010 07:41

como sabemos, você falou que quer apenas dois digitos. Sempre serão os mais significantes.
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor fabim » 01 Dez 2010 07:42

mas não é isto que acontece, ele coloca todos os digitos.
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor styg » 01 Dez 2010 09:23

proex, nesse caso, pelo que eu sei le vai escrever o numero todo mesmo.

"(number) Minimum number of characters to be printed. If the value to be printed is shorter than this number, the result is padded with blank spaces. The value is not truncated even if the result is larger."
tirado daqui, vale a pena consultar: http://www.cplusplus.com/reference/clib ... o/sprintf/

pq esse negocio de botar um numero antes do especificador do tipo, serve pra vc reservar espaço para tantos numeros, por ex:

eu escrevo no lcd:

"TEMP= °C"

e depois só vou atualizando o display como valor da variavel no buffer

sprintf(text,"%2.1f",temp);

acontece que se minha variavel passar dos 99.9 o numero passa a ocupar 5 caracteres (e eu tinha formatado com 4 (2 int, o ponto, 1 frac)), entao quando voce atualizar o lcd (como voce sempre posiciona no mesmo ponto pra escrever) ele vai ocupar um caractere a mais e nesse caso "comeria" o simbolo de grau.

dai o que vc faz?

usa sprintf(text,"%3.1f",temp); (considerando que o maximo valor sera de 3 casas)

ai o resultado fica justificado a direita quando tiver menos casas do que o formatado, e quando aumentar o numero de casa esse numero aparece a esquerda, assim (da pra notar que o numero de espaços (0x20) entre o temp e o numero diminui uma casa):

"TEMP= 20.1°C"
"TEMP= 120.1°C"
Lucas
Avatar do usuário
styg
Word
 
Mensagens: 799
Registrado em: 16 Out 2006 08:24
Localização: Floripa abaixo de zero.

Mensagempor proex » 01 Dez 2010 11:16

Styg, ele deveria escrever apenas os dois ultimos digitos.

Em versoes antigas do keil é assim que funcionava
proex
Dword
 
Mensagens: 2101
Registrado em: 11 Out 2006 14:05
Localização: São Paulo

Mensagempor styg » 01 Dez 2010 12:32

tu viu o link que eu postei? ele não é truncado, nao faz sentido, truncando ele estaria imprimindo um numero errado
Lucas
Avatar do usuário
styg
Word
 
Mensagens: 799
Registrado em: 16 Out 2006 08:24
Localização: Floripa abaixo de zero.

Mensagempor fabim » 01 Dez 2010 12:57

styg escreveu:tu viu o link que eu postei? ele não é truncado, nao faz sentido, truncando ele estaria imprimindo um numero errado


Eu te odeio !!!!
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor Nightcrawler » 01 Dez 2010 20:44

proex escreveu:Styg, ele deveria escrever apenas os dois ultimos digitos.

Em versoes antigas do keil é assim que funcionava


Então, eu também pensava da mesma forma. Mas pelo jeito não é.
Como fazer então, para imprimir somente x casas, mesmo quando o numero de casas é maior que x?
Diego
Avatar do usuário
Nightcrawler
Byte
 
Mensagens: 450
Registrado em: 11 Out 2006 14:20
Localização: Santa Maria - RS

Mensagempor styg » 01 Dez 2010 23:01

fabim escreveu:
styg escreveu:tu viu o link que eu postei? ele não é truncado, nao faz sentido, truncando ele estaria imprimindo um numero errado


Eu te odeio !!!!


heuahuahea, q isso?

night, mas que utilidade teria isso? tipo o numero é 169 mas só mostro 69. bom, independente do uso, eu acho que daí vai ter que tratar o numero antes de imprimir na tela.
Lucas
Avatar do usuário
styg
Word
 
Mensagens: 799
Registrado em: 16 Out 2006 08:24
Localização: Floripa abaixo de zero.

Mensagempor proex » 02 Dez 2010 07:37

Styg, tempos atras eu fiz um projeto de um nobreak com o 2368 e internamente eu tratava as leituras de tensao com 2 casas depois da virgula, pra obter o True RMS...essas coisas.

Mas na hora de mostrar o valor da rede no display, só precisava mostrar o valor inteiro. Então eu usei sprintf(display,"%3d", TensaoRede) e pronto.

Os nobreaks estão rodando por ai até hoje assim.

Mas depois da versao 3.50 do keil, nunca mais consegui fazer isso.
proex
Dword
 
Mensagens: 2101
Registrado em: 11 Out 2006 14:05
Localização: São Paulo

Mensagempor tcpipchip » 02 Dez 2010 08:44

Proex, e como voce está contornando o problema ?
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

AnteriorPróximo

Voltar para ARM

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x