./../
  I D :    ¾ÏÈ£ :    IDÀúÀå      ȸ¿ø°¡ÀÔ    ³×°Ô(ÁåÀå) ÂÊÁöº¸³»±â    ¸Þ¸ðÀå    °¢Á¾°è»ê±â    Ä÷¯ºü·¿    À̸ðƼÄÜ(ÇÁ·¹ÀÓ, »õâ)    º¸À¯Àåºñ
¸ñ·ÏÀ¸·Î °¡±â..
STM TouchGFX¼³°èÇÒ¶§ main¿¡¼­ View¿¡ Á¢±ÙÇÏ´Â ¼ø¼­ ±èÁ¾È£ | »èÁ¦Çϱâ

'TouchGFX´Â ÀÌ ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ Model::tick()À̶ó´Â ÇÔ¼ö¸¦ Á¦°øÇÕ´Ï´Ù. ÀÌ ÇÔ¼ö´Â È­¸é ÁÖ»çÀ²¿¡ ¸ÂÃç 1ÃÊ¿¡ ¾à 60¹ø¾¿ UI ½º·¹µå ³»ºÎ¿¡¼­ ÀÚµ¿À¸·Î ½ÇÇàµË´Ï´Ù. µû¶ó¼­ main.c¿¡¼­´Â º¯¼ö°ª¸¸ ¹Ù²ãµÎ°í, Model::tick()ÀÌ ±× º¯¼ö¸¦ °¨½Ã(Polling)ÇÏ´Ù°¡ °ªÀÌ º¯Çϸé Presenter¸¦ ÅëÇØ View(È­¸é)·Î Àü´ÞÇÏ´Â ¹æ½ÄÀ» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. À̹ø¿¡µµ ÇÑ ¹ø¿¡ º¹»çÇÏ½Ç ¼ö ÀÖµµ·Ï Àüü ±¸Çö Äڵ带 ¸¶Å©´Ù¿î ºí·ÏÀ¸·Î Á¤¸®ÇØ µå¸³´Ï´Ù. (¿¹: ¼¾¼­ °ªÀ» Àоî¿Í¼­ È­¸éÀÇ ÅØ½ºÆ®¸¦ ¾÷µ¥ÀÌÆ®ÇÏ´Â »óȲ)' ### 1. C ¾ð¾î ¿µ¿ª: µ¥ÀÌÅÍ Á¦°ø (`main.c`) Çϵå¿þ¾î °ªÀ» ´ãÀ» º¯¼ö¿Í, ±× °ªÀ» ¹ÝÈ¯ÇØÁÙ Getter ÇÔ¼ö¸¦ ¸¸µì´Ï´Ù. **`Core/Src/main.c`** ```c /* USER CODE BEGIN 0 */ int hw_sensor_value = 0; // Çϵå¿þ¾î¿¡¼­ ¾÷µ¥ÀÌÆ®ÇÒ º¯¼ö // C++ ¿µ¿ª(Model)¿¡¼­ °ªÀ» Àо ¼ö ÀÖµµ·Ï Á¦°øÇÏ´Â ÇÔ¼ö int get_sensor_value(void) { return hw_sensor_value; } /* USER CODE END 0 */ ``` --- ### 2. Model ¿µ¿ª: µ¥ÀÌÅÍ °¨½Ã ¹× Àü´Þ (`Model.hpp` / `Model.cpp`) `Model::tick()`¿¡¼­ 1ÃÊ¿¡ 60¹ø¾¿ `get_sensor_value()`¸¦ È®ÀÎÇÕ´Ï´Ù. **`gui/include/gui/model/Model.hpp`** ```cpp #ifndef MODEL_HPP #define MODEL_HPP // 1. main.c¿¡ ÀÖ´Â C ÇÔ¼ö ¼±¾ð extern "C" { int get_sensor_value(void); } class ModelListener; class Model { public: Model(); void bind(ModelListener* listener) { modelListener = listener; } // 1ÃÊ¿¡ 60¹ø¾¿ ÀÚµ¿ ½ÇÇàµÇ´Â ÇÔ¼ö void tick(); protected: ModelListener* modelListener; // ÀÌÀü °ªÀ» ±â¾ïÇØµÑ º¯¼ö (°ªÀÌ º¯ÇßÀ» ¶§¸¸ ¾÷µ¥ÀÌÆ®Çϱâ À§ÇÔ) int last_sensor_value; }; #endif // MODEL_HPP ``` **`gui/src/model/Model.cpp`** ```cpp #include #include Model::Model() : modelListener(0), last_sensor_value(0) { } void Model::tick() { // ¸Å ÇÁ·¹ÀÓ¸¶´Ù Çϵå¿þ¾î °ªÀ» Àоî¿È int current_value = get_sensor_value(); // °ªÀÌ ÀÌÀü°ú ´Þ¶óÁ³À» ¶§¸¸ UI ¾÷µ¥ÀÌÆ® ¿äû if (current_value != last_sensor_value) { last_sensor_value = current_value; // Listener(Presenter)°¡ ¿¬°áµÇ¾î ÀÖ´Ù¸é µ¥ÀÌÅÍ Àü´Þ if (modelListener != 0) { modelListener->sensorValueChanged(current_value); } } } ``` --- ### 3. ModelListener ¿µ¿ª: ÀÎÅÍÆäÀ̽º Á¤ÀÇ (`ModelListener.hpp`) ModelÀÌ Presenter¸¦ È£ÃâÇÒ ¼ö ÀÖµµ·Ï ¾à¼Ó(°¡»ó ÇÔ¼ö)À» Á¤ÀÇÇÕ´Ï´Ù. **(ÀÌ ºÎºÐÀ» ³õÄ¡´Â °æ¿ì°¡ ¸¹À¸´Ï ÁÖÀÇÇϼ¼¿ä!)** **`gui/include/gui/model/ModelListener.hpp`** ```cpp #ifndef MODELLISTENER_HPP #define MODELLISTENER_HPP #include class ModelListener { public: ModelListener() : model(0) {} virtual ~ModelListener() {} void bind(Model* m) { model = m; } // Model¿¡¼­ È£ÃâÇÒ °¡»ó ÇÔ¼ö Ãß°¡ (ºó °ýÈ£ {} ·Î ±âº» ±¸Çö Çʼö) virtual void sensorValueChanged(int newValue) {} protected: Model* model; }; #endif // MODELLISTENER_HPP ``` --- ### 4. Presenter ¿µ¿ª: View·Î Áß°è (`Presenter.hpp` / `Presenter.cpp`) Model¿¡¼­ ¿Ã¶ó¿Â µ¥ÀÌÅ͸¦ È­¸é(View)À¸·Î ³Ñ°ÜÁÝ´Ï´Ù. **`gui/include/gui/screen1_screen/Screen1Presenter.hpp`** ```cpp // ... ±âÁ¸ ÄÚµå »ý·« ... class Screen1Presenter : public touchgfx::Presenter, public ModelListener { public: // ... ±âÁ¸ ÄÚµå ... // ModelListener¿¡ ¼±¾ðÇÑ ÇÔ¼ö ¿À¹ö¶óÀ̵ù virtual void sensorValueChanged(int newValue); }; ``` **`gui/src/screen1_screen/Screen1Presenter.cpp`** ```cpp // ... ±âÁ¸ ÄÚµå »ý·« ... // Model¿¡¼­ °ªÀÌ ¹Ù²î¸é ÀÌ ÇÔ¼ö°¡ È£ÃâµÊ void Screen1Presenter::sensorValueChanged(int newValue) { // ViewÀÇ UI °»½Å ÇÔ¼ö È£Ãâ view.updateSensorText(newValue); } ``` --- ### 5. View ¿µ¿ª: ÃÖÁ¾ È­¸é °»½Å (`View.hpp` / `View.cpp`) È­¸é¿¡ ÀÖ´Â ÅØ½ºÆ® À§Á¬(¿¹: `textArea1`)ÀÇ ¼ýÀÚ¸¦ ¹Ù²ß´Ï´Ù. **`gui/include/gui/screen1_screen/Screen1View.hpp`** ```cpp // ... ±âÁ¸ ÄÚµå »ý·« ... class Screen1View : public Screen1ViewBase { public: // ... ±âÁ¸ ÄÚµå ... // Presenter°¡ È£ÃâÇÒ UI ¾÷µ¥ÀÌÆ® ÇÔ¼ö void updateSensorText(int newValue); }; ``` **`gui/src/screen1_screen/Screen1View.cpp`** ```cpp // ... ±âÁ¸ ÄÚµå »ý·« ... // Designer¿¡¼­ ¼³Á¤ÇÑ Wildcard Buffer°¡ ÄÑÁ® ÀÖ¾î¾ß ÇÕ´Ï´Ù. void Screen1View::updateSensorText(int newValue) { // Á¤¼ö¸¦ ÅØ½ºÆ® ¹öÆÛ¿¡ Æ÷¸ËÆÃ (Designer¿¡¼­ Wildcard ¼³Á¤ Çʼö) Unicode::snprintf(textArea1Buffer, TEXTAREA1_SIZE, "%d", newValue); // ÇØ´ç ÅØ½ºÆ® À§Á¬À» ´Ù½Ã ±×¸®µµ·Ï(Redraw) ¿äû textArea1.invalidate(); } ```

÷¾ð ´Þ±â
À̸§ : ¾ÏÈ£ :
¹øÈ£    Á¦¸ñ...(÷¾ð) ÀÛ¼ºÀÏ Á¢¼Ó
xxx [°øÁö]ÀÚÀ¯°Ö·¯¸® µî·Ï ¿À·ù ¼öÁ¤ ¿Ï·á 2017-12-22 29413
xxx [°øÁö]ÀÚ·á½Ç ´Ù¿î·Îµå ¿À·ù ó¸® 2017-12-01 30048
xxx [°øÁö]ºñ³­, ±¤°í °Ô½Ã¹°À» ½Å°í, Â÷´Ü, »èÁ¦µË´Ï´Ù. 2005-06-26 26095
248 [M D] > STM TouchGFX¼³°èÇÒ¶§ main¿¡¼­ View¿¡ Á¢±ÙÇÏ´Â ¼ø¼­ < 2026-08-16(ÀÏ) 8
247 [M D]  STM TouchGFX¼³°èÇÒ¶§ View°¡ main¿¡ Á¢±ÙÇÏ´Â ¼ø¼­ 2026-08-16(ÀÏ) 12
246 [M D]  MCU Task°ü¸®ÇÒ¶§ ÇÊ¿äÇÑ ¼¼¸¶Æ÷¾î(Semaphore)¿Í ¹ÂÅØ½º(Mutex) 2026-08-09(ÀÏ) 42
245 [M D]  STM32F ¸¶ÀÌÄÄ °øºÎÇÒ¶§ RAM¿¡ ¿Ã·Á¼­ ½ÃÇèÇϱâ.(¼Óµµ ºü¸§) 2026-08-08(Åä) 34
244 [ÀϹÝ]  STM32F767°ú FreeRTOS¸¦ ÀÌ¿ëÇØ ¼³°èÇÒ¶§ Time base Source´Â? 2026-08-08(Åä) 28
243 [ÀϹÝ]  VSCode·Î STM32 °³¹ßÇÒ¶§ printf¿¡¼­ ½Ç¼ö Ãâ·Â ¾ÈµÇ¸é 2026-07-16(¸ñ) 931
242 [ÀϹÝ]  VisualStudioÀ¸·Î ¸¸µç ÇÁ·Î±×·¥ .net ¹öÀü ¿Ã¸®±â À§ÇØ 2026-07-02(¸ñ) 1140
241 [C#]  c# winform¿¡¼­ URL QR»ý¼º 2026-06-30(È­) 986
240 [ÀϹÝ]  VC ÄÄÆÄÀÏÇÒ¶§ ¼Ö·ù¼Ç Æú´õ¿¡ ÄÄÆÄÀÏµÈ ÆÄÀÏÀÌ »ý¼ºµÉ¶§ 2026-06-29(¿ù) 365
239 [XML]  IIS 8.0 ÀÌ»ó IP Â÷´Ü web.config ¼³Á¤ 2026-06-13(Åä) 93
238 [ÀϹÝ]  C#.net 6ÀÌ»ó ºôÆ®ÇÒ¶§ TargetFramework Æú´õ »ý±â´Â°Å ¾ø¾Ö±â 2026-04-16(¸ñ) 407
237 [ÀϹÝ]  windowsÀÇ °¢Á¾ ¿¡µðÅÍ¿¡¼­ ÇÑ±Û ÀԷ½ÿ¡ ¿Ï¼ºµÇ¾ß Ç¥±âµÇ´Â ¹®Á¦ 2026-04-10(±Ý) 395
236 [ÀϹÝ]  MPLab X 6.2¿¡¼­ ICD3 ¿¬°á ½ÇÆÐ°¡ ³ª¿Ã¶§ 2026-04-07(È­) 402
235 [ÀϹÝ]  Verolog HDL Operation (¿¬»êÀÚ) 2026-03-27(±Ý) 362
234 [ÀϹÝ]  Mac OS Sequoia¸¦ OCLP·Î ¼³Ä¡ÇßÀ»¶§ Chrome ¿À·ù ÇØ°á¹æ¹ý 2026-03-21(Åä) 627
233 [ÀϹÝ]  Mac OS Monterey ¹®Á¦°¡ ¹ß»ýÇ߱⠶§¹®¿¡ ÄÄÇ»Å͸¦ Á¾·áÇß½À´Ï´Ù ¸Þ¼¼Áö 2026-03-08(ÀÏ) 7600
232 [ÀϹÝ]  Windows 10,11 ³»Àå ÇÁ·Î±×·¥À¸·Î ·Î¿ì·¹¹ë Æ÷¸äÇϱâ 2026-02-10(È­) 1101
231 [ÀϹÝ]  XBOX ÄÁÆ®·Ñ·¯ Ȩ¹öư ´­·¶´õ´Ï ½ºÆÀÀÌ Àüüȭ¸éÀ¸·Î ¿­¸±¶§ ¸·±â 2026-02-07(Åä) 1226
230 [ÀϹÝ]  Git pushÇÏ·Á´Âµ¥ .gitignore Àû¿ëÀÌ ¾ÈµÉ¶§ 2026-02-04(¼ö) 827
229 [C#]  C# URL querystring ƯÁ¤ °ª °¡Á®¿À±â 2026-01-23(±Ý) 321
°Ë»ö :
Page : ÀÌÀü 1  2  3  4  5  6  7  8  9  10  11  12  ´ÙÀ½




Copyright 2003-2026 ¨Ï ±èÁ¾È£. All rights reserved. kimjongho.co.kr kimjongho.kr kimjongho.net kimjongho.com