Ola a todos.
Mais uma vez, estou com uma pergunta que por mais que eu tente não consegui resolver, então tenho que pedir ajuda aos MAESTROS.
Estava com parte do meu código em BASIC pronto quando resolvi adapta-lo a linguagem C, ai sim começaram as dores de cabeça, não porque seja difícil tal adaptação, mais sim a falta de habito as funções dessa linguagem(C) , e pelo motivo de pensar em Basic fica tudo confuso.
Bom vamos ao problema, em Basic (MIKROBASIC) parte do meu código era assim e funciona:
if Usart_Data_Ready() = 1 then 'se recebido alguma coisa
Usart_Read_Text(Recibido , "" + Chr(13)) 'guarda na variavel Recibido
cmp = strcmp(Recibido, Chr(10)+ "RING") 'compara as variaveis para ver se esta correto
Vou explicar o código acima para quem não conhece o MK poder entender.
[ if Usart_Data_Ready() = 1 then ] essa linha equivale a [ if(kbhit()) ] no CCS até aqui sem problema.
[Usart_Read_Text(Recibido , "" + Chr(13)) ] essa linha equivale a [gets (Recibido); no CCS ]
[ cmp = strcmp(Recibido,Chr(10)+ "RING") ] essa linha equivale a [ (strcmp(Recibido,CHAMADA)) no CCS ]
O problema é que no MK podemos colocar o delimitador que quiser, no caso [ Chr(13)], no CCS isso é automático, já esta incluído na função (gets), porem quando uma chamada esta sendo recebida no pino TX do telefone chega a seguinte informação (0x0A-RING-0x0D), quando comparo as strings com a função (STRCMP) , no MK não preciso declarar uma veriavel para isso, é só colocar direto (Chr(10)+ "RING").
Já no CCS tenho que declarar uma variável,
ESSE É O PROBELMA, como ficaria esta variável. Faço assim [ char CHAMADA = “RING”] , quando gravo o pic e tento rodar esta parte do programa para atender uma chamada, o programa não roda, pelo que entendi é porque a informação que chega é (
0x0A-RING-0x0D), então como declarar a variável para que funcione como no MK (Chr(10)+ "RING").
Desde já agradeço.
Ivan Braga