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; }
Partager