Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Tout ce qui n'a pas de catégorie !
Bluetooth Electronics et envoi de texte
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1351
Âge : 61
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#1 Message par Gérard » sam. 2 mai 2020 15:43

Bonjour à tous,
Le petit soft pour allumer 4 LED fonctionne toujours, au lieu des LED, il affiche sur un LCD quel BP est actionné sur le téléphone.
Toujours avec Bluetooth Electronics. (je fais référence à cette discussion)
Ca fait une semaine que je me bats pour envoyer du texte et ça ne fonctionne pas.
Je suis sûr de la transmission du téléphone au PIC vu que pour le soft des BP fonctionne, ce n'est donc pas un souci matériel.
Déjà que l'aide MikroE n'est pas juste ...

Ci-dessous l'exemple de l'aide.

Code : Tout sélectionner

Read text until the sequence “OK” is received, and send back what’s been received:

UART1_Init(4800)                           ' initialize UART module
Delay_ms(100)

 while TRUE
   if (UART1_Data_Ready() = 1)             '
 if data is received   
     UART1_Read_Text
(output, 'OK', 10)  ' reads text until 'OK' is found
'
     UART1_Write_Text(output)              ' sends back text 
   end if
 wend.

J'ai changé 'OK' par "OK" pour que la compilation fonctionne. (j'ai trouvé tout seul :sifflotte: )
Je n'ai pas utilisé la ligne UART_Write_Text
J'ai déclaré une variable output de 255 string, une autre delimiter de 10 string et une autre encore attemps comme byte.
C'est ce que demande la procédure, voir ci-dessous
sub procedure UARTx_Read_Text(dim byref Output as string[255], dim byref Delimiter as string[10], dim Attempts as byte)

Ces 3 lignes de code n'affichent rien sur mon LCD.

J'écoute les Beatles, HELP... Merci ! d'avance pour votre aide.
Le 18 / 04 / 2019 je suis devenu papy de jumeaux, une fille et un garçon. Quel bonheur.

Bluetooth Electronics et envoi de texte
pspic
Passioné
Passioné
Messages : 308
Âge : 73
Enregistré en : septembre 2017
Localisation : 68

#2 Message par pspic » dim. 3 mai 2020 08:30

Bonjour Gérard,
Peux tu vérifier que TRISSC.6 = 0 et TRISC.7 = 1 ?
Quelle est la taille de la chaine à transmettre ?
Ou encore mieux, poste le code complet en MikroBasic.

Bluetooth Electronics et envoi de texte
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 1663
Âge : 69
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#3 Message par paulfjujo » dim. 3 mai 2020 13:34

bonjour Gerard , et à tous,

quelle appli android ?
Comment fais-tu pour envoyer ton texte ?
y a -t-il un terminateur comme CR ou CR LF en fin de string ..
texte : blalablaOK ou blalablaOK<CR><LF>
si le texte depasse 10 chars output devrait au moins contenir ces 10 chars.. à condition qu'ils soient bien emis coté appli Android

comment verifies-tu si tu enleves le UART1_Write_Text(ouput); ?

===============================

j'ai fait un test , avec un terminal YAT
proge est en C, mais le principe est le meme
la reponse à l'envoi de la commande peut différer beaucoup
si on envoie le string char par char ou d'une seule traite
le Nb de char 10 , inclus les 2 chars de "OK" !!!
des qu'on arrive au dessus de 10, c'est aleatoire ! on peut meme ne recuperer qu'un seul car ou rien
:!!: Buggé la lib ?

Perso je ne l'utilise pas, je prefere de loin , utiliser la gestion via buffer et interrupt sur RX
bien plus fiable ..

par contre ,il vaut Mieux mettre 255 pour recevoir la trame qui se finit par "OK"
"OK" devient la seule condition pour stopper la reception
(14:14:09.808)
(14:14:13.610) 123456789OK envoi
(14:14:13.699) 123456789 retour
(14:14:16.558) 123456789OK envoi
(14:14:16.639) 123456789 retour
(14:14:23.759) 1234567890123OK envoi
(14:14:23.783) 1234567890123 retour
(14:16:47.359) 1234567890123456789012345OK envoi
(14:16:47.394) 1234567890123456789012345 retour

Code : Tout sélectionner


  
// ======== test Zone =====================
  
txt=&Texte[0];
  while (
1)
   {
   if (
UART1_Data_Ready() == 1)   // if data is received
    
{
     
UART1_Read_Text(txt"OK"255) ; // reads text until 'OK' is found
     
UART1_Write_Text(txt)   ;// sends back text
        
c1 RCREG;
    }
  }
 
Aides toi, le ciel ou Fantastpic t'aideras

Bluetooth Electronics et envoi de texte
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1351
Âge : 61
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#4 Message par Gérard » dim. 3 mai 2020 15:26

pspic a écrit :Bonjour Gérard,
Peux tu vérifier que TRISSC.6 = 0 et TRISC.7 = 1 ?
Quelle est la taille de la chaine à transmettre ?
Ou encore mieux, poste le code complet en MikroBasic.



Code : Tout sélectionner


  While True
      delay_ms
(500)

   if (UART1_Data_Ready() = 1)  then
     rec 
= UART1_Read() 'Char reçu du
     if rec = "A" then LCD_OUT( 2,2,"A") end if
     if rec = "G" then LCD_OUT( 2,2,"G          ") end if
     if rec = "D" then LCD_OUT( 2,2,"D          ") end if
     if rec = "R" then LCD_OUT( 2,2,"R          ") end if
     LCD_OUT (3, 1, "GG A ENCORE DU TAFF!")
   end if
  wend



Ce bout de code fonctionne avec BluetoothElectronics et avec Serial Bluetooth

TRISC.7 = 0 et ça fonctionne.
Le 18 / 04 / 2019 je suis devenu papy de jumeaux, une fille et un garçon. Quel bonheur.

Bluetooth Electronics et envoi de texte
pspic
Passioné
Passioné
Messages : 308
Âge : 73
Enregistré en : septembre 2017
Localisation : 68

#5 Message par pspic » dim. 3 mai 2020 15:34

Je n'ai pas bien compris, tu cherches à transmettre un char ou une chaine de caractère ?
Si c'est une chaine, quel est sa taille ?

Bluetooth Electronics et envoi de texte
venom
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 759
Âge : 34
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

#6 Message par venom » dim. 3 mai 2020 15:56

Bonjour,

D'après ce que je comprend, Gérard souhaite envoyer un caractère par bluetooth via bluetooth électronique
Ce code en C fait exactement ça (il récupère un caractère pour allumer une led)

Après il reste juste a l'afficher sur le LCD.

PS dans mon code je récupère le caractère en Hexa.







@++
Modifié en dernier par venom le dim. 3 mai 2020 16:00, modifié 1 fois.
En fait tout est une question de BIT ? :-D

Bluetooth Electronics et envoi de texte
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1351
Âge : 61
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#7 Message par Gérard » dim. 3 mai 2020 15:59

paulfjujo a écrit :bonjour Gerard , et à tous,

quelle appli android ?
Comment fais-tu pour envoyer ton texte ?
y a -t-il un terminateur comme CR ou CR LF en fin de string ..
texte : blalablaOK ou blalablaOK<CR><LF>
si le texte depasse 10 chars output devrait au moins contenir ces 10 chars.. à condition qu'ils soient bien emis coté appli Android

comment verifies-tu si tu enleves le UART1_Write_Text(ouput); ?


Pour le texte c'est Serial Bluetooth
Pas de CR ni LF
blabla"OK" comme texte
J'ai mis 255 pour la dernière valeur dans la procédure UART1_Read_Text(output, "OK", 255) et ça fonctionne mais pas vraiment. Sur le LCD je vois des caractères que je n'ai pas envoyé. J'ai aussi remis le renvoi du texte. Sur le téléphone je vois avant mon texte "^. D'où viennent ces caractères?


paulfjujo a écrit :===============================

j'ai fait un test , avec un terminal YAT
proge est en C, mais le principe est le meme
la reponse à l'envoi de la commande peut différer beaucoup
si on envoie le string char par char ou d'une seule traite
le Nb de char 10 , inclus les 2 chars de "OK" !!!
des qu'on arrive au dessus de 10, c'est aleatoire ! on peut meme ne recuperer qu'un seul car ou rien
:!!: Buggé la lib ?

Perso je ne l'utilise pas, je prefere de loin , utiliser la gestion via buffer et interrupt sur RX
bien plus fiable ..

par contre ,il vaut Mieux mettre 255 pour recevoir la trame qui se finit par "OK"
"OK" devient la seule condition pour stopper la reception
(14:14:09.808)
(14:14:13.610) 123456789OK envoi
(14:14:13.699) 123456789 retour
(14:14:16.558) 123456789OK envoi
(14:14:16.639) 123456789 retour
(14:14:23.759) 1234567890123OK envoi
(14:14:23.783) 1234567890123 retour
(14:16:47.359) 1234567890123456789012345OK envoi
(14:16:47.394) 1234567890123456789012345 retour

Code : Tout sélectionner


  
// ======== test Zone =====================
  txt=&Texte[0];
  while (1)
   {
   if (UART1_Data_Ready() == 1)   // if data is received
    {
     UART1_Read_Text(txt, "OK", 255) ; // reads text until 'OK' is found
     UART1_Write_Text(txt)   ;// sends back text
        c1 = RCREG;
    }
  }


Je ne comprends pas les lignes

Code : Tout sélectionner


 txt
=&Texte[0];
c1 = RCREG;


Mon code :

Code : Tout sélectionner


DEBUT
:

   portc.3 = 0                              'rouge

   for i = 0 to 255
      output [i] = 0
   next i
   
    if (UART1_Data_Ready() = 1) then        '
 if data is received
      UART1_Read_Text
(output, "OK", 255)    'reads text until 'OK' is found
      UART1_Write_Text(output)              '
 sends back text
      portc.3 
= 1                           'rouge
    end if
    delay_ms (500)
    LCD_OUT (1, 1, output)
    delay_ms (1500)
    
    GOTO DEBUT


C'est ce code qui me donne les caractères indésirables et sur le LCD et au retour sur le téléphone.
Le 18 / 04 / 2019 je suis devenu papy de jumeaux, une fille et un garçon. Quel bonheur.

Bluetooth Electronics et envoi de texte
pspic
Passioné
Passioné
Messages : 308
Âge : 73
Enregistré en : septembre 2017
Localisation : 68

#8 Message par pspic » dim. 3 mai 2020 16:30

Crée la Sub procedure interrupt suivante :

Code : Tout sélectionner

'_______________________________________________________________________________
Sub procedure interrupt  'Interruption RCIF
 if PIR1.RCIF = 1 then
   if (UART1_Data_Ready() <> 0) then
     UART1_READ_TEXT(Rec , "OK", 255)
    end if
   PIR1.RCIF = 0
 end if
end sub

La variable Rec récupère la chaine reçue à condition qu'elle soit inférieure à 254 caractères.

Bluetooth Electronics et envoi de texte
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1351
Âge : 61
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#9 Message par Gérard » dim. 3 mai 2020 18:24

pspic a écrit :Je n'ai pas bien compris, tu cherches à transmettre un char ou une chaine de caractère ?
Si c'est une chaine, quel est sa taille ?


Je cherche à transmettre une chaîne de caractères.
Le code en #4 était pour montrer ce qui fonctionne.
Le 18 / 04 / 2019 je suis devenu papy de jumeaux, une fille et un garçon. Quel bonheur.

Bluetooth Electronics et envoi de texte
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1351
Âge : 61
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#10 Message par Gérard » dim. 3 mai 2020 18:29

venom a écrit :Bonjour,

D'après ce que je comprend, Gérard souhaite envoyer un caractère par bluetooth via bluetooth électronique
Ce code en C fait exactement ça (il récupère un caractère pour allumer une led)

Après il reste juste a l'afficher sur le LCD.

PS dans mon code je récupère le caractère en Hexa.







@++


Oui Venom, j'ai suivi ton exemple et pour allumer une LED ou afficher un caractère ça marche.
Pour un texte (chaîne de caractères), je ne sais pas faire avec Bluetooth electronics. Avec Serial Bluetooth, ça avance.
Le 18 / 04 / 2019 je suis devenu papy de jumeaux, une fille et un garçon. Quel bonheur.


Retourner vers « Coin Fourre-tout »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités