Bonjour à tous,
J'aimerais me créer un petit driver pour piloter un écran et écrire du texte.
Pour le texte, j'utilise un logiciel qui me fait des fontes (dot factory). Il me sort deux tableaux par fonte.
Un premier tableau avec les données précises qui composent les caractères de la fonte, dont voici un morceau en guise d'exemple :
il me sort ensuite un second tableau avec toutes les infos nécessaires pour accéder à mes caractères. Voici un exemple :
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
43
44
45 //############################################################################################## // // Font data for Microsoft Sans Serif 10pt // // Character bitmaps for Microsoft Sans Serif 10pt const uint8_t microsoftSansSerif_10pt[] = { // @0 '!' (1 pixels wide) // // # // # // # // # // # // # // # // # // // # // // // 0xFE, 0x05, // @2 '"' (3 pixels wide) // // # # // # # // # # // # # // // // // // // // // // 0x1E, 0x00, 0x1E, 0x00, 0x00, 0x00, // @8 '#' (7 pixels wide)
Ces deux tableaux, je les place dans un fichier font.c et je les déclare dans un fichier font.h.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 // Character descriptors for Microsoft Sans Serif 10pt // { [Char width in bits], [Char height in bits], [Offset into microsoftSansSerif_10ptCharBitmaps in bytes] } const uint32_t INFO_microsoftSansSerif_10pt[96][3] = { {1, 14, 0}, // ! {3, 14, 2}, // " {7, 14, 8}, // # {5, 14, 22}, // $ {10, 14, 32}, // % {7, 14, 52}, // & {1, 14, 66}, // ' {3, 14, 68}, // ( {3, 14, 74}, // )
Ensuite j'ai un fichier driver.c pour créer mes fonctions afin d'aller lire ce tableau et d’afficher mes caractères. C'est là où les problèmes commencent. Mes notions avec les pointeurs ne sont pas très solides ! et j'ai besoin de compétences.
Dans ce fichier driver.c, j'aimerais réussir à créer une fonction qui s'adapte à toutes les fontes que je lui indique en argument.
Voici où j'en suis, mais ça ne fonctionne pas. Je pense que je m'y prend mal dans mes passage d'argument.
Cette fonction est censé recevoir les coordonnées à l'écran en x et y pas de souci de ce coté la.
Puis de recevoir le nom de la font
puis le nom du tableau d'info
Et ensuite j'ai un main.c qui vient appeler ces fonctions en leurs fournissant les arguments nécessaires.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 void st7567_Write_Text(uint8_t x, uint8_t y, char* str, char* Font, char* Info) { while ( *str ) // j'écris tant que le byte n'est pas null { Draw_text(x,y,*str++, Font); // jincrémente juste après avoir envoyé le str; x = Info[0][0]; x = x-33; x += Info[*str-33][0]+2; } }
J'aimerais créer une fonction de ce genre :
Je fournis la position en x et y .
Code : Sélectionner tout - Visualiser dans une fenêtre à part Write_Text(0, 24,"developpez.net",µsoftSansSerif_10pt, &INFO_microsoftSansSerif_10pt);
Puis le nom de la fonte et le nom du tableau des informations.
Je précise que la fonction Draw_text fonctionne bien ? J'arrive bien à afficher du texte mais en écrivant le nom de la fonte en dur. Moi, je voudrais la passer en argument pour pouvoir la modifier facilement.
Merci de m'avoir lu !
Partager