Bonjour,
je débute en C
Je suis entrain de créer une fonction qui récupère n caratères, les transforme en float ,les formate puis retourne 2 caractères afin d'être envoyés sur le RS232 (LSB en tête). mais malheureusement j'ai l'impression que seul le premier caratère est retourné à main.

Il y a t-il un moyen pour avoir les 2 caractères du premier coup sans faire appel à la fonction 2 fois: une pour le LSB et l'autre pour le MSB.

j'espère avoir été clair dans mon explication.

Merci d'avance.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
 
char Gauge_Bank(char Data[])//  fonction traitement signal
{   
 
    float fVario = atof(Data);// Caratères signal en Float
 
	char Var[2];	//variable qui contiendra les 2 caratères LSB et MSB
	float fVarioSin;
/************************************************/
/**Formate les données-----> compatible PWM******/
/************************************************/
	fVarioSin = sin(fVario) + 1;
	fVario	= (2800 * (fVarioSin)) + 59400;
 
	if (fVario > 62800)
	{
		fVario = 62800;
	}
	else if (fVario < 61600)
	{
		fVario = 61600;
	}
/***************************************************/	
	int wVario = fVario;
	Var[0] = wVario % 256;               //LSB
	Var[1] = (wVario / 256) % 256;       //MSB
 
return *Var; //retourne normalement 2 caratères
}
int main(int argc, char *argv[])
{
    char data[20]="1.415585";
    char Bank[2];
    *Bank = Gauge_Bank(data); //--> Problème, Bank ne contient que le premier caractère
 
return 0;
}