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 ---
Idée, bugs, propositions .......
liaison serie (uart)-excel
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2888
Enregistré en : juillet 2016
Localisation : Terre

#11 Message par Temps-x » jeu. 22 févr. 2024 02:07

Bonjour

Télécharge ce programme ICI

Une fois téléchargé et décompressé, tu lances le programme Osc-Rs232.exe, tu sélectionnes le port que tu as ? com1, com2, com3 ....... et tu appuis sur le bouton OFF

Tu nous diras ce qui se passe une fois cette manipulation faite, avec une capture d'écran de préférence

==> A+
Modifié en dernier par Temps-x le jeu. 22 févr. 2024 18:33, modifié 1 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

liaison serie (uart)-excel
paulfjujo
Avatar de l’utilisateur
Maître
Maître
Messages : 3256
Âge : 75
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#12 Message par paulfjujo » jeu. 22 févr. 2024 09:47

bonjour,


J'ai refais un test ce matin avec EXCEL UART .. RScomm.dll
je suis sous WIN10 , et un vieux Excel 97 rs1

J'utilise VBray terminal avec ce script pour envoyer des datas via un
cordon prolific USB /TTL =COM12 liaison hardware TTL <-----> RX TX 0V ---cordon prolific TTL/USB =COM4
avec EXCEL en COM4 115200bds
en voi des datas en ascii sous la forme
Entete Header "#" data ... fin avec "&"

Excel recoit bien les datas ..voir grafique et feuille Datas

Code : Tout sélectionner

//******************************
// Terminal Script
// TEST EXCEL avec RSCOM.DLL
// Created: 22/02/2024 09:01:42
//******************************
program test_RSAPI;
// rev 22/02/2024
var datumstring;
var 
iinteger;
var 
jinteger;
var 
kinteger;
var 
strstring;
var 
checksum char ;

begin
ShowMessage
('Simule envoi valeur ascii depuis un PIC via COM12'
+chr(10)+chr(13)+ 'format UART 115200,N,8,1 ' +chr(10)+chr(13));
Delay(1500);
begin
j
:=0;
i:=0;
k:=0;
  while (
j<1000) do
   
begin  // boucle en environ 1 seconde   
   
   
if k>9 then k:=0;
    if 
i>9 then k:=k+1;
    if 
i>9 then i:=0;
    
str:= '#0' chr(k+48)+ chr(i+48)  +  '&' ;
    
i:= i+1;
    
j:=j+1;
writelnstr);
ComSendStr(str);//ComSendChr(13);ComSendChr(10);
  
Delay(2000);
  
end;
end;
end.
 


Test_EXCEL_UART_Rscom.dll_2024-02.jpg

Test_EXCEL_UART_VBRAY_Rscom.dll_2024-02.jpg


Excel_UART_2024.zip
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

liaison serie (uart)-excel
paulfjujo
Avatar de l’utilisateur
Maître
Maître
Messages : 3256
Âge : 75
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#13 Message par paulfjujo » jeu. 22 févr. 2024 10:02

Temps-x a écrit :
C'est quand même curieux ce que tu nous dit, car... il me semble que paulfjujo à essayé sous Windows 11, et sa fonctionne chez lui
...


Appli RapidQ EDFinfo developpée sous WIN10 mais utilisée avec WIN XP ...

.... tourne tres bien depuis 3 ans ... ..liaison BlueTooth RN41 avec
PIC relié au Linky ))) .... (((( et cle USB BlueTooth sur Portable EEPC
tourne sous win XP
Usage de BlueSoleil coté PC pour interface BlueTooth UART virtuel ... RsCom.dll
Aide toi, le ciel ou FantasPic t'aidera

liaison serie (uart)-excel
francknvs

#14 Message par francknvs » jeu. 22 févr. 2024 19:16

Bonsoir Paul,
Merci pour tes réponses et ton aide...
malheureusement pas mieux. :mur:
j'ai bien ma connection uart entre PIC & Terminal sur com 3: de ce coté pas de souci (j'ai donc bien mon port COM 3 qui communique)

au lancement du fichier "RS232_Test_2024.xls" et apres avoir instalé la dll "Rscom.dll" à l'emplacement indiqué, j'ai tjrs ce bug.
j'ajoute avoir bien enlevé la securité des macro..
enfin et pour faire une levée de doute, j'ai refait cette procedure sur un Pc qui tourne en WIN10 également...pas mieux
je joins mes copies d'ecran au cas où qqc m'echappe..
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

liaison serie (uart)-excel
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2888
Enregistré en : juillet 2016
Localisation : Terre

#15 Message par Temps-x » jeu. 22 févr. 2024 19:26

Bonsoir paulfjujo, francknvs, et tout le forum,

:sifflotte: As tu fais le test que je t'ai demandé en Post #11


==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

liaison serie (uart)-excel
francknvs

#16 Message par francknvs » jeu. 22 févr. 2024 20:47

Bonsoir Temps-X,
desolé...
oui j'ai essayé: rien ne transite, je suis sur le bon port,etc...
voici une capture d'ecran:
Capture d'écran 2024-02-22 204028.png

je vous fourni le code complet de mon projet mais je ne pense pas qu'il cloche:
j'aimerai récupérer les valeurs du convertisseur A/D de AN0 sur un tableau excel via le port com.

Code : Tout sélectionner



/*
 * File:   Ihm_Temp.c
 * Author: Acer_Franck
 *
 * Crée le 15 février 2021, 18:59
 */


#include <xc.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#include "config_intosc.h" //Inclusion du fichier d'en tete pour les Bits de Configuration du Pic

//Prototype des Fct ADC
void ADC_Init();
int ADC_Read(int);

//Prototype de Gestion du Temps
void MS_delay(unsigned int );

//Prototype des Fct USART
void USART_Init(long baud_rate);
void USART_TxChar(char);
void USART_SendString(const char *);


#define V_Ref 5.00               //Tension de Référence- 5Volts
#define F_CPU 8000000/64
#define Baud_value (((float)(F_CPU)/(float)baud_rate)-1)

void main() {
//--> Déclaration des variables
    int digital_Adc; //Variable de lecture directe 
    float voltage; //Variable de type Float pour la conversion  
    char data_Capt_An00[6];// Tableau de 06 Char
    char data_Capt_An01[6];// Tableau de 06 Char    
    char data_Capt_An02[6];// Tableau de 06 Char
    char data_Capt_An03[6];// Tableau de 06Char
    char data_Capt_An04[6];// Tableau de 06Char
    
//--> Initialisation des Options d'Oscillateur OSCCON
    OSCCON = 0x72; /*Oscillateur Interne sur 8 MHz*/

//--> Initialisation des Fct
    ADC_Init(); /*Initialisation du Convertisseur 10-bit ADC*/
    USART_Init(9600); /*Initialisation del'USART à 9600 baud rate*/

//------------------------------------------------------------------------------  
    // DEBUT DU PROGRAMME PRINCIPAL
    while (1) 
    
{
        
//--> 1ere Conversion A/D sur AN00
        digital_Adc = ADC_Read(0); // Appel de la Fct de Lecture du canal 0   
        voltage = digital_Adc * ((float) V_Ref / (float) 1023); //Calcul de la Conversion des valeurs Analogique en Numerique
        sprintf(data_Capt_An00, "%.2f", voltage); //Conversion de la valeur Entiere en Chaine ASCII
        USART_SendString(data_Capt_An00);// Appel de la Fct USART de Transmission de la chaine ASCII 
        USART_TxChar(0x0D); // Appel de la Fct USART de Transmission du Caractere (\r), de retour chariot comme separateur
        MS_delay(1000);
        
/*       
//--> 2me Conversion A/D sur AN01
        digital_Adc = ADC_Read(1); // Appel de la Fct de Lecture du canal 1         
        voltage = digital_Adc * ((float) V_Ref / (float) 1023); //Calcul de la Conversion des valeurs Analogique en Numerique
        sprintf(data_Capt_An01, "AN01%.2f", voltage); //Conversion de la valeur Entiere en Chaine ASCII
        USART_SendString(data_Capt_An01); // Appel de la Fct USART de Transmission de la chaine ASCII 
        USART_TxChar(0x0D); // Appel de la Fct USART de Transmission du Caractere (\r), de retour chariot comme separateur
        MS_delay(10);
//--> 3me Conversion A/D sur AN02
        digital_Adc = ADC_Read(2); // Appel de la Fct de Lecture du canal 0   
        voltage = digital_Adc * ((float) V_Ref / (float) 1023); //Calcul de la Conversion des valeurs Analogique en Numerique
        sprintf(data_Capt_An02, "AN02%.2f", voltage); //Conversion de la valeur Entiere en Chaine ASCII
        USART_SendString(data_Capt_An02);// Appel de la Fct USART de Transmission de la chaine ASCII 
        USART_TxChar(0x0D); // Appel de la Fct USART de Transmission du Caractere (\r), de retour chariot comme separateur
        MS_delay(10);
//--> 4me Conversion A/D sur AN03
        digital_Adc = ADC_Read(3); // Appel de la Fct de Lecture du canal 1         
        voltage = digital_Adc * ((float) V_Ref / (float) 1023); //Calcul de la Conversion des valeurs Analogique en Numerique
        sprintf(data_Capt_An03, "AN03%.2f", voltage); //Conversion de la valeur Entiere en Chaine ASCII
        USART_SendString(data_Capt_An03); // Appel de la Fct USART de Transmission de la chaine ASCII 
        USART_TxChar(0x0D); // Appel de la Fct USART de Transmission du Caractere (\r), de retour chariot comme separateur
        MS_delay(10);    
        
//--> 5me Conversion A/D sur AN04
        digital_Adc = ADC_Read(4); // Appel de la Fct de Lecture du canal 1         
        voltage = digital_Adc * ((float) V_Ref / (float) 1023); //Calcul de la Conversion des valeurs Analogique en Numerique
        sprintf(data_Capt_An04, "AN04%.2f", voltage); //Conversion de la valeur Entiere en Chaine ASCII
        USART_SendString(data_Capt_An04); // Appel de la Fct USART de Transmission de la chaine ASCII 
        USART_TxChar(0x0D); // Appel de la Fct USART de Transmission du Caractere (\r), de retour chariot comme separateur
        MS_delay(10);         
        
*/
         
        
    
}
    // FIN DU PROGRAMME PRINCIPAL
//------------------------------------------------------------------------------
}

/*****************************Initialisation du Convertisseur A/D***********************/
void ADC_Init() {
    TRISA = 0xff; /*PortA en Entrée*/
    ADCON1 = 0x0E; // La reference de Tension est VDD -  Configuration des Pin en Mode Analogique
    ADCON2 = 0x92; // Justification du resultat à Droite, 4Tad and Fosc/32.
    ADRESH = 0; //Effacer le registre d'Adresse de poids Fort de sortie de l'ADC
    ADRESL = 0;//Effacer le registre d'Adresse de poids Faible de sortie de l'ADC
}

/*****************************Lecture du Convertisseur A/D***********************/
int ADC_Read(int channel) 
{
    int digital_Adc;
    ADCON0 = (ADCON0 & 0b11000011) | ((channel << 2) & 0b00111100); //Inibition de la conversion ( ADON=0) et Canal 'int channel'selectionné ex:(CHS3CHS2CHS1CHS0=0000)                                                        
    ADCON0 |= ((<< ADON) | (<< GO)); //Validation de ADC et debut de conversion
    while (ADCON0bits.GO_nDONE == 1); // Delai d'attente de Fin de Conversion: Go/done=0 Conversion Terminée
    digital_Adc = ((ADRESH * 256) | ADRESL); //Combinaison des 8-bit de poids faibles et des 2-bit de poids forts
    return (digital_Adc);
}

/*****************************USART Initialisation*******************************/
void USART_Init(long baud_rate) 
{
    float temp;
    TRISC6 = 0; //Pin RC6 en Sortie Tx 
    TRISC7 = 1; //Pin RC7 en Entrée Rx
    temp = Baud_value;
    SPBRG = (int) temp; //Baud rate=9600, SPBRG = (F_CPU /(64*9600))-1
    TXSTA = 0x20; //Registre de 8 Bit pour la validation de l'Emission(TX) enable
    RCSTA = 0x80; //Registre de 8 Bit pour la validation de la Reception(RX) enable
}

/******************Fonction d'EMMISION d'un Caractere sur HYPERTERMINAL*****************************************/
void USART_TxChar(char out) 
{
    while (TXIF == 0); //attente du drapeau d'interruption de transmission
    TXREG = out; //attendre que le drapeau d'interruption de transmission soit activé,indiquant que TXREG est prêt pour une autre transmission
}

/******************Fonction d'EMMISION de la DATA sur HYPERTERMINAL*****************************************/
void USART_SendString(const char *out) 
{
    while (*out != '\0') 
    
{
        USART_TxChar(*out);
        out++;
    }
}

/******************Fonction de Gestion du Temps*****************************************/
void MS_delay(unsigned int val)
{
     unsigned int i,j;
        for(i=0;i<=val;i++)
            for(j=0;j<81;j++);//Ce compteur assigne 1 ms pour une freq de 8MHz 
}
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

liaison serie (uart)-excel
paulfjujo
Avatar de l’utilisateur
Maître
Maître
Messages : 3256
Âge : 75
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#17 Message par paulfjujo » jeu. 22 févr. 2024 21:13

bonsoir,


Nota : je suis en mode administrateur sur mon PC ....

sur la feuille excel, ne pas oublier de definir un Header ( ici #0) et un tail (ici &)
encadrant chaque mesure definies en en ascii.
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

liaison serie (uart)-excel
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2888
Enregistré en : juillet 2016
Localisation : Terre

#18 Message par Temps-x » ven. 23 févr. 2024 01:55

Bonsoir francknvs, paulfjujo, et tout le forum,

francknvs a écrit :Source du message oui j'ai essayé: rien ne transite, je suis sur le bon port,etc...


Pas de message d'erreur, donc Rscom.dll fonctionne..... dans le programme Osc-Rs232.exe il y a un test pour savoir si ton port(Com3) fonctionne

Rien ne peut transiter car c'est un programme qui demande un microcontroleur Pic, le bute de cette manoeuvre été de tester Rscom.dll

Rscom.dll se trouve maintenant sur ton disque dur, dans un dossier nomé Tmps ou tu as décompresser Osc-Rs232.zip

Il est inclu dans le programme, donc invisible tand que le programme n'est pas lancé, pas besoin de le mettre dans un dossier system de Windows, il faut juste lui indiqué le chemin

Exemple sur mon programme

Code : Tout sélectionner


 if fileexists
("Tmps\RSCOM.dll") > 0 then

   Declare Function OPENCOM Lib 
"Tmps\RSCOM.dll" alias "OPENCOM"(ByVal OpenString$) As Integer  'ouvre le port

   Declare Sub CLOSECOM Lib "Tmps\RSCOM.dll"alias "CLOSECOM" ()                     '
fermer le port com
   Declare Sub TXD Lib 
"Tmps\RSCOM.dll" alias "TXD" (ByVal b%)                      'broche 3 envoie, Emission de données
   Declare Sub DTR Lib "Tmps\RSCOM.dll" alias "DTR" (ByVal b%)                      '
broche 4 envoie, Terminal prêt.
   Declare Sub RTS Lib "Tmps\RSCOM.dll" alias "RTS" (ByVal b%)                      'broche 7 envoie, Demande d'emmission
   Declare Function DCD Lib 
"Tmps\RSCOM.dll" alias "DCD" As Integer                 'broche 1 lecture, Dectection de porteuse
   Declare Function DSR Lib "Tmps\RSCOM.dll" alias "DSR" As Integer                 '
broche 6 lecture, Emmission prête
   Declare Function CTS Lib 
"Tmps\RSCOM.dll" alias "CTS" As Integer                 'broche 8 lecture, Prêt à emettre
   Declare Function RI Lib "Tmps\RSCOM.dll"  alias "RI"  As Integer                 '
broche 9 lecture, Indicateur de sonnerie
   Declare Sub CLEARBUFFER Lib 
"Tmps\RSCOM.dll" alias "CLEARBUFFER"()               'nettoye le buffer en entrée
   Declare Function INBUFFER Lib "Tmps\RSCOM.dll" alias "INBUFFER" () As Integer    '
nombre de caractère dans le buffer d'entré
   Declare Function OUTBUFFER Lib "Tmps\RSCOM.dll" alias "OUTBUFFER" () As Integer  '
nombre de caractère dans le buffer de sortie
   Declare Sub BUFFERSIZE Lib 
"Tmps\RSCOM.dll" alias "BUFFERSIZE" (ByVal b%)        'taille du buffer pour stockage des données reçus
   Declare Sub DELAY Lib "Tmps\RSCOM.dll" alias "DELAY" (ByVal ms As Double)        '
delai en micro seconde // duree d'un bit
   Declare Function INPUTS Lib "Tmps\RSCOM.dll" alias "INPUTS" () As Integer        '?
   Declare Sub REALTIME Lib "Tmps\RSCOM.dll" alias "REALTIME" ()                    '
?
   Declare Function READSTRING Lib "Tmps\RSCOM.dll" alias "READSTRING" () As String 'lire une chaine
   Declare Function READBYTE Lib "Tmps\RSCOM.dll" alias "READBYTE" As Integer       '
lire un caratère
   Declare Sub NORMALTIME Lib 
"Tmps\RSCOM.dll" alias "NORMALTIME" ()
   Declare Sub SENDBYTE Lib "Tmps\RSCOM.dll" alias "SENDBYTE" (ByVal Dat%)          'envoyer un caratère
   Declare Sub SENDSTRING Lib "Tmps\RSCOM.dll" Alias "SENDSTRING" (ByVal Dat$)      '
envoyer une chaine
   Declare Sub TIMEINIT Lib 
"Tmps\RSCOM.dll" alias "TIMEINIT" ()                    'reinit le temps
   Declare Function TIMEREAD Lib "Tmps\RSCOM.dll" alias "TIMEREAD" () As Double     '
donne le temps d'ouverture du port ?
   Declare Sub TIMEOUTS Lib "Tmps\RSCOM.dll" alias "TIMEOUTS" (ByVal b%)            '
depassement du temps ?

 end if



Attention c'est déclaration son faite en RapidQ, il faut les refaire pour VB

Maintenant on peut essayer on envoyant des données sur le port Com3, je vois cela demain, si ça fonctionne tu as un problème avec excel

Mon programme est écrit en Basic(RapidQ) paulfjujo l'a déjà tester, et sa fonctionne sur son PC

Si les donées transite par la suite, tu pourras mettre Rscom.dll hors de cause

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

liaison serie (uart)-excel
francknvs

#19 Message par francknvs » ven. 23 févr. 2024 09:13

Bonjour à tous,

Temps-x:
je viens de faire ta procedure d extraction du ZIP.
J'ai bien un dossier nommé tmps dans lequel il y a les fichiers attendus.
je lance Osc-rs232.exe en mode admin: l'appli s'ouvre, je choisi mon port (com3), je clique sur "off" qui se met en bleu mais aucune données ne transite.
Aussi par rapport à ton poste, je ne vois pas où ni comment intergrer ces lignes de code :cry:
(j'utilise un pic 18f4550 avec une procedure UART sur com3 à 9600)

Code : Tout sélectionner


 if fileexists
("Tmps\RSCOM.dll") > 0 then

   Declare Function OPENCOM Lib 
"Tmps\RSCOM.dll" alias "OPENCOM"(ByVal OpenString$) As Integer  'ouvre le port

   Declare Sub CLOSECOM Lib "Tmps\RSCOM.dll"alias "CLOSECOM" ()                     '
fermer le port com
   Declare Sub TXD Lib 
"Tmps\RSCOM.dll" alias "TXD" (ByVal b%)                      'broche 3 envoie, Emission de données
   Declare Sub DTR Lib "Tmps\RSCOM.dll" alias "DTR" (ByVal b%)                      '
broche 4 envoie, Terminal prêt.
   Declare Sub RTS Lib "Tmps\RSCOM.dll" alias "RTS" (ByVal b%)                      'broche 7 envoie, Demande d'emmission
   Declare Function DCD Lib 
"Tmps\RSCOM.dll" alias "DCD" As Integer                 'broche 1 lecture, Dectection de porteuse
   Declare Function DSR Lib "Tmps\RSCOM.dll" alias "DSR" As Integer                 '
broche 6 lecture, Emmission prête
   Declare Function CTS Lib 
"Tmps\RSCOM.dll" alias "CTS" As Integer                 'broche 8 lecture, Prêt à emettre
   Declare Function RI Lib "Tmps\RSCOM.dll"  alias "RI"  As Integer                 '
broche 9 lecture, Indicateur de sonnerie
   Declare Sub CLEARBUFFER Lib 
"Tmps\RSCOM.dll" alias "CLEARBUFFER"()               'nettoye le buffer en entrée
   Declare Function INBUFFER Lib "Tmps\RSCOM.dll" alias "INBUFFER" () As Integer    '
nombre de caractère dans le buffer d'entré
   Declare Function OUTBUFFER Lib "Tmps\RSCOM.dll" alias "OUTBUFFER" () As Integer  '
nombre de caractère dans le buffer de sortie
   Declare Sub BUFFERSIZE Lib 
"Tmps\RSCOM.dll" alias "BUFFERSIZE" (ByVal b%)        'taille du buffer pour stockage des données reçus
   Declare Sub DELAY Lib "Tmps\RSCOM.dll" alias "DELAY" (ByVal ms As Double)        '
delai en micro seconde // duree d'un bit
   Declare Function INPUTS Lib "Tmps\RSCOM.dll" alias "INPUTS" () As Integer        '?
   Declare Sub REALTIME Lib "Tmps\RSCOM.dll" alias "REALTIME" ()                    '
?
   Declare Function READSTRING Lib "Tmps\RSCOM.dll" alias "READSTRING" () As String 'lire une chaine
   Declare Function READBYTE Lib "Tmps\RSCOM.dll" alias "READBYTE" As Integer       '
lire un caratère
   Declare Sub NORMALTIME Lib 
"Tmps\RSCOM.dll" alias "NORMALTIME" ()
   Declare Sub SENDBYTE Lib "Tmps\RSCOM.dll" alias "SENDBYTE" (ByVal Dat%)          'envoyer un caratère
   Declare Sub SENDSTRING Lib "Tmps\RSCOM.dll" Alias "SENDSTRING" (ByVal Dat$)      '
envoyer une chaine
   Declare Sub TIMEINIT Lib 
"Tmps\RSCOM.dll" alias "TIMEINIT" ()                    'reinit le temps
   Declare Function TIMEREAD Lib "Tmps\RSCOM.dll" alias "TIMEREAD" () As Double     '
donne le temps d'ouverture du port ?
   Declare Sub TIMEOUTS Lib "Tmps\RSCOM.dll" alias "TIMEOUTS" (ByVal b%)            '
depassement du temps ?

 end if

liaison serie (uart)-excel
francknvs

#20 Message par francknvs » ven. 23 févr. 2024 09:43

bonjour Paul,
merci pour ta réponse.
tu me dis d'inclure
sur la feuille excel, ne pas oublier de definir un Header ( ici #0) et un tail (ici &)
encadrant chaque mesure definies en en ascii.

je ne vois pas où l'inclure ni dans quelle sheet et ni dans quelle cellule.
je travaille avec un pic 18f4550 avec une procedure UART sur com3 pour envoyer les valeurs qui ont fait l'objet d'une conversion A/D au prealable.
voici ma routine qui converti et envoi sur UART vers un trminal:

Code : Tout sélectionner

   int digital_Adc; //Variable de lecture directe 
    float voltage; //Variable de type Float pour la conversion  
    char data_Capt_An00[6];// Tableau de 06 Char
    char data_Capt_An01[6];// Tableau de 06 Char    
    char data_Capt_An02[6];// Tableau de 06 Char
    char data_Capt_An03[6];// Tableau de 06Char
    char data_Capt_An04[6];// Tableau de 06Char
    
//--> Initialisation des Options d'Oscillateur OSCCON
    OSCCON = 0x72; /*Oscillateur Interne sur 8 MHz*/

//--> Initialisation des Fct
    ADC_Init(); /*Initialisation du Convertisseur 10-bit ADC*/
    USART_Init(9600); /*Initialisation del'USART à 9600 baud rate*/

//------------------------------------------------------------------------------  
    // DEBUT DU PROGRAMME PRINCIPAL
    while (1) 
    
{
        
//--> 1ere Conversion A/D sur AN00
        digital_Adc = ADC_Read(0); // Appel de la Fct de Lecture du canal 0   
        voltage = digital_Adc * ((float) V_Ref / (float) 1023); //Calcul de la Conversion des valeurs Analogique en Numerique
        sprintf(data_Capt_An00, "%.2f", voltage); //Conversion de la valeur Entiere en Chaine ASCII
        USART_SendString(data_Capt_An00);// Appel de la Fct USART de Transmission de la chaine ASCII 
        USART_TxChar(0x0D); // Appel de la Fct USART de Transmission du Caractere (\r), de retour chariot comme separateur
        MS_delay(1000);

        
      1- utilisant cette fonction A/D pour conversion de la valeur:

Code : Tout sélectionner


        voltage 
= digital_Adc * ((float) V_Ref / (float) 1023); //Calcul de la Conversion des valeurs Analogique en Numerique
        sprintf(data_Capt_An00, "%.2f", voltage); //Conversion de la valeur Entiere en Chaine ASCII


        2- Puis cette fonction pour envoyer la valeur converti vers Uart:

Code : Tout sélectionner


        
/******************Fonction d'EMMISION de la DATA sur HYPERTERMINAL*****************************************/
void USART_SendString(const char *out) 
{
    while (*out != '\0') 
    
{
        USART_TxChar(*out);
        out++;
    }
}
 

dans ce programme ,j'ai essayé de modifier ma routine d'appel USART_SendString comme suit:

Code : Tout sélectionner

USART_SendString('#0'+data_Capt_An00+'&');// Appel de la Fct USART de Transmission de la chaine ASCII  

pas mieux.. :mur:

je seche. sourire


Retourner vers « Le forum Fantas-PIC »

Qui est en ligne

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