Selamlar,
Bu konuda bir sorunum var.
STM32F407 ve LCD ile uğraşırken Font dosyalarını bir struct ile tanımlandığını görmüştüm. P10 Panellerle uğraşırken aynı yapıyı CCS ye uydurmuştum. Şuanda yine PSOC Creator derleyicine aynı yapıyı uydurmaya çalışıyorum.
Font için kullanılan struct aşağıdaki gibi tanımlı
typedef struct _tFont
{
const uint8 *table;
uint8 Width;
uint8 Height;
} sFONT;
Font ile ilgili bütün datalar sFONT yapısı altında toplanıyor.
Font8x8.c, Font8x12.c gibi font dosyalarım var. İçerisinde const uint8 Font8_Table[] = {... } şeklinde dizi olarak font datalarını tutuyorum.
Font bilgilerinide sFONT şeklinde bir yapı tanımlayıp içerisine kaydediyorum. Tam olarak şu şekilde
sFONT Font8x8 = {
Font8_Table,
8 , /* Width */
8, /* Height */
};
Sorunum ise tam olarak şudur.
Bu font dosyalarına global olarak erişemiyorum. Yukarıda tanımlamış olduğum sFONT türündeki Font8x8 yapısını Font dosyaların dibine tanımlıyorum. Örnek olarak Font8x8.c dosyasını vereyim.
/**
******************************************************************************
* @file Font12.c
* @author Ferhat YOL
* @version V1.0.0
* @date 18-Haziran-2016
* @brief Font data for Courier New 8pt
******************************************************************************
* @attention
*/
#include <project.h>
#include <P10_Panel_Driver.h>
const uint8 Font8_Table[] =
{
// @0 ' ' (7 pixels wide)
0x00, //
0x00, //
0x00, //
0x00, //
0x00, //
0x00, //
0x00, //
0x00, //
// @12 '!' (7 pixels wide)
0x10, // #
0x10, // #
0x10, // #
0x10, // #
0x00, //
0x10, // #
0x00, //
0x00, //
// @24 '"' (7 pixels wide)
0x6C, // ## ##
0x48, // # #
0x48, // # #
0x00, //
0x00, //
0x00, //
0x00, //
0x00, //
// @36 '#' (7 pixels wide)
0x14, // # #
0x28, // # #
0x7C, // #####
0x28, // # #
0x7C, // #####
0x28, // # #
0x50, // # #
0x00, //
// @48 '$' (7 pixels wide)
0x10, // #
0x38, // ###
0x40, // #
0x38, // ###
0x48, // # #
0x70, // ###
0x10, // #
0x00, //
// @60 '%' (7 pixels wide)
0x20, // #
0x50, // # #
0x20, // #
0x0C, // ##
0x08, // #
0x14, // # #
0x08, // #
0x00, //
// @72 '&' (7 pixels wide)
0x18, // ##
0x20, // #
0x20, // #
0x54, // # # #
0x48, // # #
0x34, // ## #
0x00, //
0x00, //
// @84 ''' (7 pixels wide)
0x10, // #
0x10, // #
0x10, // #
0x10, // #
0x00, //
0x00, //
0x00, //
0x00, //
// @96 '(' (7 pixels wide)
0x08, // #
0x08, // #
0x10, // #
0x10, // #
0x10, // #
0x08, // #
0x08, // #
0x00, //
// @108 ')' (7 pixels wide)
0x20, // #
0x20, // #
0x10, // #
0x10, // #
0x10, // #
0x20, // #
0x20, // #
0x00, //
// @120 '*' (7 pixels wide)
0x00, //
0x10, // #
0x7C, // #####
0x10, // #
0x28, // # #
0x28, // # #
0x00, //
0x00, //
// @132 '+' (7 pixels wide)
0x00, //
0x10, // #
0x10, // #
0xFE, // #######
0x10, // #
0x10, // #
0x00, //
0x00, //
// @144 ',' (7 pixels wide)
0x00, //
0x00, //
0x18, // ##
0x10, // #
0x30, // ##
0x20, // #
0x00, //
0x00, //
// @156 '-' (7 pixels wide)
0x00, //
0x00, //
0x00, //
0x7C, // #####
0x00, //
0x00, //
0x00, //
0x00, //
// @168 '.' (7 pixels wide)
0x00, //
0x00, //
0x00, //
0x00, //
0x30, // ##
0x30, // ##
0x00, //
0x00, //
// @180 '/' (7 pixels wide)
0x04, // #
0x04, // #
0x08, // #
0x10, // #
0x20, // #
0x20, // #
0x40, // #
0x00, //
// @192 '0' (7 pixels wide)
0x38, // ###
0x44, // # #
0x44, // # #
0x44, // # #
0x44, // # #
0x44, // # #
0x38, // ###
0x00, //
// @204 '1' (7 pixels wide)
0x30, // ##
0x10, // #
0x10, // #
0x10, // #
0x10, // #
0x10, // #
0x7C, // #####
0x00, //
// @216 '2' (7 pixels wide)
0x38, // ###
0x44, // # #
0x04, // #
0x08, // #
0x20, // #
0x44, // # #
0x7C, // #####
0x00, //
// @228 '3' (7 pixels wide)
0x38, // ###
0x44, // # #
0x04, // #
0x18, // ##
0x04, // #
0x44, // # #
0x38, // ###
0x00, //
// @240 '4' (7 pixels wide)
0x0C, // ##
0x14, // # #
0x24, // # #
0x44, // # #
0x7E, // ######
0x04, // #
0x0E, // ###
0x00, //
// @252 '5' (7 pixels wide)
0x3C, // ####
0x20, // #
0x20, // #
0x38, // ###
0x04, // #
0x44, // # #
0x38, // ###
0x00, //
// @264 '6' (7 pixels wide)
0x1C, // ###
0x20, // #
0x40, // #
0x78, // ####
0x44, // # #
0x44, // # #
0x38, // ###
0x00, //
// @276 '7' (7 pixels wide)
0x7C, // #####
0x44, // # #
0x04, // #
0x08, // #
0x08, // #
0x10, // #
0x10, // #
0x00, //
// @288 '8' (7 pixels wide)
0x38, // ###
0x44, // # #
0x44, // # #
0x38, // ###
0x44, // # #
0x44, // # #
0x38, // ###
0x00, //
// @300 '9' (7 pixels wide)
0x38, // ###
0x44, // # #
0x44, // # #
0x3C, // ####
0x04, // #
0x08, // #
0x70, // ###
0x00, //
// @312 ':' (7 pixels wide)
0x00, //
0x30, // ##
0x30, // ##
0x00, //
0x00, //
0x30, // ##
0x30, // ##
0x00, //
// @324 ';' (7 pixels wide)
0x18, // ##
0x18, // ##
0x00, //
0x00, //
0x18, // ##
0x30, // ##
0x20, // #
0x00, //
// @336 '<' (7 pixels wide)
0x0C, // ##
0x10, // #
0x60, // ##
0x80, // #
0x60, // ##
0x10, // #
0x0C, // ##
0x00, //
// @348 '=' (7 pixels wide)
0x00, //
0x00, //
0x7C, // #####
0x00, //
0x7C, // #####
0x00, //
0x00, //
0x00, //
// @360 '>' (7 pixels wide)
0xC0, // ##
0x20, // #
0x18, // ##
0x04, // #
0x18, // ##
0x20, // #
0xC0, // ##
0x00, //
// @372 '?' (7 pixels wide)
0x18, // ##
0x24, // # #
0x04, // #
0x08, // #
0x10, // #
0x00, //
0x30, // ##
0x00, //
// @384 '@' (7 pixels wide)
0x38, // ###
0x44, // # #
0x4C, // # ##
0x4C, // # ##
0x40, // #
0x44, // # #
0x38, // ###
0x00, //
// @396 'A' (7 pixels wide)
0x30, // ##
0x10, // #
0x28, // # #
0x28, // # #
0x7C, // #####
0x44, // # #
0xEE, // ### ###
0x00, //
// @408 'B' (7 pixels wide)
0xF8, // #####
0x44, // # #
0x44, // # #
0x78, // ####
0x44, // # #
0x44, // # #
0xF8, // #####
0x00, //
// @420 'C' (7 pixels wide)
0x3C, // ####
0x44, // # #
0x40, // #
0x40, // #
0x40, // #
0x44, // # #
0x38, // ###
0x00, //
// @432 'D' (7 pixels wide)
0xF0, // ####
0x48, // # #
0x44, // # #
0x44, // # #
0x44, // # #
0x48, // # #
0xF0, // ####
0x00, //
// [member=401]444[/member] 'E' (7 pixels wide)
0xFC, // ######
0x44, // # #
0x50, // # #
0x70, // ###
0x50, // # #
0x44, // # #
0xFC, // ######
0x00, //
// @456 'F' (7 pixels wide)
0x7E, // ######
0x22, // # #
0x28, // # #
0x38, // ###
0x28, // # #
0x20, // #
0x70, // ###
0x00, //
// @468 'G' (7 pixels wide)
0x3C, // ####
0x44, // # #
0x40, // #
0x4E, // # ###
0x44, // # #
0x44, // # #
0x38, // ###
0x00, //
// @480 'H' (7 pixels wide)
0xEE, // ### ###
0x44, // # #
0x44, // # #
0x7C, // #####
0x44, // # #
0x44, // # #
0xEE, // ### ###
0x00, //
// @492 'I' (7 pixels wide)
0x7C, // #####
0x10, // #
0x10, // #
0x10, // #
0x10, // #
0x10, // #
0x7C, // #####
0x00, //
// @504 'J' (7 pixels wide)
0x3C, // ####
0x08, // #
0x08, // #
0x48, // # #
0x48, // # #
0x48, // # #
0x30, // ##
0x00, //
// @516 'K' (7 pixels wide)
0xEE, // ### ###
0x44, // # #
0x50, // # #
0x70, // ###
0x48, // # #
0x44, // # #
0xE6, // ### ##
0x00, //
// @528 'L' (7 pixels wide)
0x70, // ###
0x20, // #
0x20, // #
0x20, // #
0x24, // # #
0x24, // # #
0x7C, // #####
0x00, //
// @540 'M' (7 pixels wide)
0xEE, // ### ###
0x6C, // ## ##
0x6C, // ## ##
0x54, // # # #
0x54, // # # #
0x44, // # #
0xEE, // ### ###
0x00, //
// @552 'N' (7 pixels wide)
0xEE, // ### ###
0x64, // ## #
0x64, // ## #
0x54, // # # #
0x54, // # # #
0x4C, // # ##
0xEC, // ### ##
0x00, //
// @564 'O' (7 pixels wide)
0x38, // ###
0x44, // # #
0x44, // # #
0x44, // # #
0x44, // # #
0x44, // # #
0x38, // ###
0x00, //
// @576 'P' (7 pixels wide)
0x78, // ####
0x24, // # #
0x24, // # #
0x38, // ###
0x20, // #
0x20, // #
0x70, // ###
0x00, //
// @588 'Q' (7 pixels wide)
0x38, // ###
0x44, // # #
0x44, // # #
0x44, // # #
0x44, // # #
0x38, // ###
0x1C, // ###
0x00, //
// @600 'R' (7 pixels wide)
0xF8, // #####
0x44, // # #
0x44, // # #
0x78, // ####
0x48, // # #
0x44, // # #
0xE2, // ### #
0x00, //
// @612 'S' (7 pixels wide)
0x34, // ## #
0x4C, // # ##
0x40, // #
0x38, // ###
0x04, // #
0x64, // ## #
0x58, // # ##
0x00, //
// @624 'T' (7 pixels wide)
0xFE, // #######
0x92, // # # #
0x10, // #
0x10, // #
0x10, // #
0x10, // #
0x38, // ###
0x00, //
// @636 'U' (7 pixels wide)
0xEE, // ### ###
0x44, // # #
0x44, // # #
0x44, // # #
0x44, // # #
0x44, // # #
0x38, // ###
0x00, //
// @648 'V' (7 pixels wide)
0xEE, // ### ###
0x44, // # #
0x44, // # #
0x28, // # #
0x28, // # #
0x10, // #
0x10, // #
0x00, //
// @660 'W' (7 pixels wide)
0xEE, // ### ###
0x44, // # #
0x44, // # #
0x54, // # # #
0x54, // # # #
0x54, // # # #
0x28, // # #
0x00, //
// @672 'X' (7 pixels wide)
0xC6, // ## ##
0x44, // # #
0x28, // # #
0x10, // #
0x28, // # #
0x44, // # #
0xC6, // ## ##
0x00, //
// @684 'Y' (7 pixels wide)
0xEE, // ### ###
0x44, // # #
0x28, // # #
0x28, // # #
0x10, // #
0x10, // #
0x38, // ###
0x00, //
// @696 'Z' (7 pixels wide)
0x7C, // #####
0x44, // # #
0x08, // #
0x10, // #
0x20, // #
0x44, // # #
0x7C, // #####
0x00, //
// @708 '[' (7 pixels wide)
0x38, // ###
0x20, // #
0x20, // #
0x20, // #
0x20, // #
0x20, // #
0x38, // ###
0x00, //
// @720 '\' (7 pixels wide)
0x40, // #
0x20, // #
0x20, // #
0x20, // #
0x10, // #
0x08, // #
0x08, // #
0x00, //
// @732 ']' (7 pixels wide)
0x38, // ###
0x08, // #
0x08, // #
0x08, // #
0x08, // #
0x08, // #
0x38, // ###
0x00, //
// @744 '^' (7 pixels wide)
0x00, //
0x10, // #
0x10, // #
0x28, // # #
0x44, // # #
0x00, //
0x00, //
0x00, //
// @756 '_' (7 pixels wide)
0x00, //
0x00, //
0x00, //
0x00, //
0x00, //
0x00, //
0xFE, // #######
0x00, //
// @768 '`' (7 pixels wide)
0x00, //
0x10, // #
0x08, // #
0x00, //
0x00, //
0x00, //
0x00, //
0x00, //
// @780 'a' (7 pixels wide)
0x00, //
0x38, // ###
0x44, // # #
0x3C, // ####
0x44, // # #
0x44, // # #
0x3E, // #####
0x00, //
// @792 'b' (7 pixels wide)
0xC0, // ##
0x40, // #
0x58, // # ##
0x64, // ## #
0x44, // # #
0x44, // # #
0xF8, // #####
0x00, //
// @804 'c' (7 pixels wide)
0x00, //
0x3C, // ####
0x44, // # #
0x40, // #
0x40, // #
0x44, // # #
0x38, // ###
0x00, //
// @816 'd' (7 pixels wide)
0x0C, // ##
0x04, // #
0x34, // ## #
0x4C, // # ##
0x44, // # #
0x44, // # #
0x3E, // #####
0x00, //
// @828 'e' (7 pixels wide)
0x00, //
0x38, // ###
0x44, // # #
0x7C, // #####
0x40, // #
0x40, // #
0x3C, // ####
0x00, //
// @840 'f' (7 pixels wide)
0x1C, // ###
0x20, // #
0x7C, // #####
0x20, // #
0x20, // #
0x20, // #
0x7C, // #####
0x00, //
// @852 'g' (7 pixels wide)
0x36, // ## ##
0x4C, // # ##
0x44, // # #
0x44, // # #
0x3C, // ####
0x04, // #
0x38, // ###
0x00, //
// @864 'h' (7 pixels wide)
0xC0, // ##
0x40, // #
0x58, // # ##
0x64, // ## #
0x44, // # #
0x44, // # #
0xEE, // ### ###
0x00, //
// @876 'i' (7 pixels wide)
0x10, // #
0x00, //
0x70, // ###
0x10, // #
0x10, // #
0x10, // #
0x7C, // #####
0x00, //
// @888 'j' (7 pixels wide)
0x10, // #
0x00, //
0x78, // ####
0x08, // #
0x08, // #
0x08, // #
0x70, // ###
0x00, //
// @900 'k' (7 pixels wide)
0xC0, // ##
0x40, // #
0x5C, // # ###
0x48, // # #
0x70, // ###
0x48, // # #
0xDC, // ## ###
0x00, //
// @912 'l' (7 pixels wide)
0x30, // ##
0x10, // #
0x10, // #
0x10, // #
0x10, // #
0x10, // #
0x7C, // #####
0x00, //
// @924 'm' (7 pixels wide)
0x00, //
0xE8, // ### #
0x54, // # # #
0x54, // # # #
0x54, // # # #
0x54, // # # #
0xFE, // #######
0x00, //
// @936 'n' (7 pixels wide)
0x00, //
0xD8, // ## ##
0x64, // ## #
0x44, // # #
0x44, // # #
0x44, // # #
0xEE, // ### ###
0x00, //
// @948 'o' (7 pixels wide)
0x00, //
0x38, // ###
0x44, // # #
0x44, // # #
0x44, // # #
0x44, // # #
0x38, // ###
0x00, //
// @960 'p' (7 pixels wide)
0x00, //
0xD8, // ## ##
0x64, // ## #
0x44, // # #
0x78, // ####
0x40, // #
0xE0, // ###
0x00, //
// @972 'q' (7 pixels wide)
0x00, //
0x36, // ## ##
0x4C, // # ##
0x44, // # #
0x3C, // ####
0x04, // #
0x0E, // ###
0x00, //
// @984 'r' (7 pixels wide)
0x00, //
0x6C, // ## ##
0x30, // ##
0x20, // #
0x20, // #
0x20, // #
0x7C, // #####
0x00, //
// @996 's' (7 pixels wide)
0x00, //
0x3C, // ####
0x44, // # #
0x38, // ###
0x04, // #
0x44, // # #
0x78, // ####
0x00, //
// @1008 't' (7 pixels wide)
0x00, //
0x20, // #
0x7C, // #####
0x20, // #
0x20, // #
0x22, // # #
0x1C, // ###
0x00, //
// @1020 'u' (7 pixels wide)
0x00, //
0xCC, // ## ##
0x44, // # #
0x44, // # #
0x44, // # #
0x4C, // # ##
0x36, // ## ##
0x00, //
// @1032 'v' (7 pixels wide)
0x00, //
0xEE, // ### ###
0x44, // # #
0x44, // # #
0x28, // # #
0x28, // # #
0x10, // #
0x00, //
// @1044 'w' (7 pixels wide)
0x00, //
0xEE, // ### ###
0x44, // # #
0x54, // # # #
0x54, // # # #
0x54, // # # #
0x28, // # #
0x00, //
// @1056 'x' (7 pixels wide)
0x00, //
0xCC, // ## ##
0x48, // # #
0x30, // ##
0x30, // ##
0x48, // # #
0xCC, // ## ##
0x00, //
// @1068 'y' (7 pixels wide)
0x00, //
0xEE, // ### ###
0x44, // # #
0x28, // # #
0x18, // ##
0x10, // #
0x78, // ####
0x00, //
// @1080 'z' (7 pixels wide)
0x00, //
0x7C, // #####
0x48, // # #
0x10, // #
0x20, // #
0x44, // # #
0x7C, // #####
0x00, //
// @1092 '{' (7 pixels wide)
0x08, // #
0x10, // #
0x10, // #
0x20, // #
0x10, // #
0x10, // #
0x08, // #
0x00, //
// @1104 '|' (7 pixels wide)
0x10, // #
0x10, // #
0x10, // #
0x10, // #
0x10, // #
0x10, // #
0x10, // #
0x00, //
// @1116 '}' (7 pixels wide)
0x20, // #
0x10, // #
0x10, // #
0x08, // #
0x10, // #
0x10, // #
0x20, // #
0x00, //
// @1128 '~' (7 pixels wide)
0x00, //
0x00, //
0x00, //
0x24, // # #
0x58, // # ##
0x00, //
0x00, //
0x00, //
};
sFONT Font8x8 = {
Font8_Table,
8 , /* Width */
8, /* Height */
};
/******************************END OF FILE*************************************/
Main.c dosyasında aşağıdaki gibi sFONT türünde bir değişken tanımlıyorum.
sFONT P10_Currentfonts;
Main.c içerisinde P10_Currentfonts=Font8x8 dediğim zaman Font8x8 için tanımladığım değerlerin P10_Currentfonts içerisine kopyalanması gerekiyor. Bunu nasıl yaparım? PSoC derleyici ile çalışıyorum. Proje ağacım tam olarak aşağıdaki gibi.
(https://s21.postimg.cc/evyj89brr/Ekran_Al_nt_s.jpg)
Sorun ne olabilir sizce? Yapamadım bir türlü bu işlemi.
Eğer yaparsam Font Seçme işim son derece sade olacak.
benim anlamadigim birsey var, butun array niye kopyalaniyor?
sadece pointer'i kopyalasaniz yeterli, zaten array demek pointer demek.
Pointer'i tanimladiginiz struct ile dereference edersiniz olur biter.
Mufit abi yapmam gerekeni anlayamadım.
Burada benim yanlış bir telafuzum oldu sanırım. Aslında array kopyalanmıyor. Sadece arrayın başlangıç adresini struct içerisindeki pointer'a yüklüyor olmam gerekir. Sizin dediginiz ile aynı.
Bunlara main icerisinden neden ulaşamıyorum. Bugün okula gitmeden önce son 3 saat buna uğraştım.
resim çözünürlüğü düşük olduğu için Main.c kodlarını göremiyorum.
P10_Currentfonts=Font8x8 şeklinde aktarma yapamazsınız. aktarma operatörünü sadece basit veri tiplerinde kullanabilirsiniz. ( C++ operatör overload yapmıyorsanız).
Şöyle yapabilirsiniz.
sFONT *P10_CurrentFonts = (sFONT *) Font8x8;
Sizin Yapınız extern tanımlımı?Gördüğüm kadarı ile değil.
Struct'ı Header dosyası içinde tanımlayın.
Bu Hedaer içinde olsun..
typedef struct _tFont {
const uint8 *table;
uint8 Width;
uint8 Height;
} sFONT;
extern sFONT Font; diğer dosyalarda da bilinir.
Headerin c dosyasında ilk değer atamalarını yapın.
Bu C dosyası olsun..
sFONT Font = {Font_table , 5, 10}; Font Türündeki değişkenin 1.İndisine dizi Adresi kopyalandı. 1 ve 2. İndisine sabit Char değerleri verildi.
Bu Main olsun...
#include "Header.h"
void main (void) {
sFONT P10 = Font; //Font, sFONT Türünden yani aynı türden P10 değişkenine kopyalandı.
}
Bir deneyin.
@JOKERAS Sana ve diğer mesaj yazan hocalarıma teşekkür ederim. Sorunu sayende çözdüm. Hatam sFONT türünde tanımlanan değişkenlerin (sFONT Font8x8 = {Font8_Table,8, 8};) Global tanımlamamakmış. Header Dosyasında Tekrardan Extern olarak bu değişkenleri tanıtınca düzeldi.
Artık hata vermeyip derleniyor. Fakat main.c dosyası açık iken Code Explorer penceremde Bu değişkenleri global değişken olarak göstermiyor derleyici. Main açık iken sadece main dosyasında tanımlanan global değişkenleri gösteriyor.
(https://s14.postimg.cc/tg4jbzpfl/Ekran_Al_nt_s.jpg)
Rica ederiz.
Siz ilgili yapı üzerinde bir işlem yaptınızmı?
İşlem yapmadıysanız derleyici onu sadece derleme aşamasında kullanır initialize etmez.
Bildirim ve tanımlama sadece derleme aşaması için gerekli.
Bağlayıcı,bildirim ve tanımlamalar ile compiler'ı bilgi sahibi yapar,değerleri initialize etmez.
Bence bir işlem yapıp kontrol edin derim.
Evet kütüphane içerisinde kullanıyorum. Şuan sıkıntı yok gibi İstediğim değerleri P10_CurrentFonts içerisinde görebiliyorum.
Tekrardan teşekkür ederim