Moderadores: andre_luis, 51, guest2003, Renie
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
const char *p1 = "A180";
const char *p2 = "A120";
const char *p3 = "A110";
const int ip1 = (int)(p1[0] + p1[1] + p1[2] + p1[3] ),
ip2 = (int)(p2[0]+p2[1]+p2[2]+p2[3]),
ip3 = (int)(p3[0]+p3[1]+p3[2]+p3[3]);
int ptr = 0, i;
for(i=0;i<4;i++) {
ptr += *(p2+i);
}
printf("ptr=%d\n", ptr);
printf("ip1=%d\n", ip1);
switch(ptr) {
case 218: {
printf("p1=ptr=%s\n", p1);
break;
}
case 212: {
printf("p2=ptr=%s\n", p2);
break;
}
case 211:
printf("p3=ptr=%s\n", p3);
}
system("PAUSE");
return 0;
}
roquetti escreveu:como consigo fazer este if?
if (Uart1_Data_Ready()) { //verifica se algum byte chegou no buffer serial
dt[0] = Uart1_Read(); //lê o byte do buffer e salva na variável dt
dt[1] = Uart1_Read(); //lê o byte do buffer e salva na variável dt
dt[2] = Uart1_Read(); //lê o byte do buffer e salva na variável dt
dt[3] = Uart1_Read(); //lê o byte do buffer e salva na variável dt
}
if (&dt[0]==A && &dt[1]==1 && &dt[2]==8 && &dt[3]==0 ){
( este daqui!!)
estou tentando saber o que tem dentro de cada dt[] para saber se está vindo certo pela serial.
char getchar()
{
while(!Uart1_Ready())
{
return Uart1_Read();
}
}
int gets(char *string)
{
int i,j;
while(1) {
j = getchar();
if(j=='\n') break;
string[i++] = j;
}
string[i] = 0;
return i;
}
int main() {
char buffer[40];
while(gets(buffer))
{
if(!strcmp(buffer,"comando1"))
{
}
else
if(!strcmp(buffer, "comando2"))
{
}
...
}
}
andre_teprom escreveu:Não ficou claro o teor do problema.
O que voce fez não funciona ?
O que ocorre ou deveria ocorrer exatamente ?
+++
roquetti escreveu:Refiz o código, consigo enviar um carcter pelo PC via serial RS232 para a placa com o PIC16F628A, mas uma palavra assim: A180 não sei se estou recebendo corretamente
int a;
unsigned char i;
void main () {
unsigned char dt[4+1];
dt[4] = '\0';
TRISA = 0; //define porta como saida
PORTA = 0; //resseta todos os pinos do port
TRISB = 0; //define porta como saida
TRISB.RB1=1;
TRISB.RB2=1;
PORTB = 0; //resseta todos os pinos do port
Uart1_Init(9600);
do {
if (Uart1_Data_Ready()) { //verifica se algum byte chegou no buffer serial
dt[0] = Uart1_Read(); //lê o byte do buffer e salva na variável dt
dt[1] = Uart1_Read(); //lê o byte do buffer e salva na variável dt
dt[2] = Uart1_Read(); //lê o byte do buffer e salva na variável dt
dt[3] = Uart1_Read(); //lê o byte do buffer e salva na variável dt
}
if (dt[0]=='A' && dt[1]==1 && dt[2]==8 && dt[3]==0 ){
for( a=0; a<15;a++){
PORTA.RA0 = 1; //extrema esquerda
delay_ms(2);
PORTA.RA0 = 0;
delay_ms(18); }}
//break; //finaliza a condição case
if (dt[0]=='A' && dt[1]==0 && dt[2]==0 && dt[3]==1 ){
for( a=0; a<15;a++){
PORTA.RA0 = 1; //extrema direita
delay_ms(1);
PORTA.RA0 = 0;
delay_ms(19); }
}
else {
for( a=0; a<15;a++){
PORTA.RA0 = 1; //acende o led
delay_ms(1);
delay_us(200);
PORTA.RA0 = 0;
delay_ms(18);
delay_us(800);}
}
} while(1);
}
roquetti escreveu:...não sei se estou recebendo corretamente...
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante