Commit c4b7c77e authored by sam's avatar sam

test font

parent e27507d1
{
"recommendations": [
"mjohns.clang-format"
]
}
\ No newline at end of file
{
"workbench.editor.autoLockGroups": {
"imagePreview.previewEditor": true
},
"clang-format.language.cpp.enable": false,
"clang-format.language.csharp.enable": false,
"clang-format.language.cuda.enable": false,
"clang-format.language.glsl.enable": false,
"clang-format.language.hlsl.enable": false,
"clang-format.language.java.enable": false,
"clang-format.language.javascript.enable": false,
"clang-format.language.objective-c.enable": false,
"clang-format.language.objective-cpp.enable": false,
"clang-format.language.proto.enable": false,
"clang-format.language.typescript.enable": false,
"clang-format.language.apex.enable": false,
"editor.tabSize": 3,
"C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: Google, IndentWidth: 3, IncludeBlocks: Merge, IndentGotoLabels: true, KeepEmptyLinesAtTheStartOfBlocks: true}",
"C_Cpp.clang_format_style": "{ BasedOnStyle: Google, IndentWidth: 3, IncludeBlocks: Merge, IndentGotoLabels: true, KeepEmptyLinesAtTheStartOfBlocks: true}",
"html.format.preserveNewLines": false,
"editor.formatOnSave": true
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<ProjectWorkspace xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_mpw.xsd">
<SchemaVersion>1.0</SchemaVersion>
<Header>### uVision Project, (C) Keil Software</Header>
<WorkspaceName>WorkSpace</WorkspaceName>
<project>
<PathAndName>.\N9H20_HMI_NonOS_BSP_V1.04.000t\BSP\SampleCode\FreeRTOS\Sample_BLT+RTOS\KEIL\BLTDemo.uvproj</PathAndName>
</project>
<project>
<PathAndName>.\N9H20_HMI_NonOS_BSP_V1.04.000t\BSP\SampleCode\FreeRTOS\Sample_RTOS\KEIL\RTOSDemo.uvproj</PathAndName>
</project>
<project>
<PathAndName>.\N9H20_HMI_NonOS_BSP_V1.04.000t\BSP\SampleCode\emWin\GUIDemo\KEIL\GUIDemo.uvproj</PathAndName>
</project>
<project>
<PathAndName>.\N9H20_HMI_NonOS_BSP_V1.04.000t\BSP\SampleCode\emWin\SimpleDemo\KEIL\SimpleDemo.uvproj</PathAndName>
</project>
<project>
<PathAndName>.\N9H20_HMI_NonOS_BSP_V1.04.000t\BSP\SampleCode\JPEG\KEIL\JPEG.uvproj</PathAndName>
<NodeIsActive>1</NodeIsActive>
</project>
<project>
<PathAndName>.\N9H20_HMI_NonOS_BSP_V1.04.000t\BSP\Driver\Source\SYS\KEIL\SYSLib.uvproj</PathAndName>
</project>
<project>
<PathAndName>.\N9H20_HMI_NonOS_BSP_V1.04.000t\BSP\SampleCode\BLT\KEIL\BLT.uvproj</PathAndName>
</project>
<project>
<PathAndName>.\N9H20_HMI_NonOS_BSP_V1.04.000t\BSP\SampleCode\EDMA\KEIL\EDMA.uvproj</PathAndName>
</project>
<project>
<PathAndName>.\N9H20_HMI_NonOS_BSP_V1.04.000t\BSP\SampleCode\NVTFAT\KEIL\N9H20K5_NVTFAT.uvproj</PathAndName>
</project>
<project>
<PathAndName>.\N9H20_HMI_NonOS_BSP_V1.04.000t\BSP\SampleCode\PWM\KEIL\PWM.uvproj</PathAndName>
</project>
<project>
<PathAndName>.\N9H20_HMI_NonOS_BSP_V1.04.000t\BSP\SampleCode\RTC\KEIL\RTC.uvproj</PathAndName>
</project>
<project>
<PathAndName>.\N9H20_HMI_NonOS_BSP_V1.04.000t\BSP\SampleCode\VPOST\KEIL\VPOST_N9H20_FW043TFT_480x272.uvproj</PathAndName>
</project>
<project>
<PathAndName>.\N9H20_HMI_NonOS_BSP_V1.04.000t\BSP\Driver\Source\VPOST\KEIL\FW043TFT_480X272\FW043TFT_480x272.uvproj</PathAndName>
</project>
<project>
<PathAndName>.\N9H20_HMI_NonOS_BSP_V1.04.000t\BSP\SampleCode\FreeRTOS\Sample_NVTFAT\KEIL\NVTFAT_FreeRTOS.uvproj</PathAndName>
</project>
<project>
<PathAndName>.\N9H20_HMI_NonOS_BSP_V1.04.000t\BSP\Driver\Source\JPEG\KEIL\JPEGLib.uvproj</PathAndName>
</project>
</ProjectWorkspace>
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
<TargetName>DebugRel_KPI_2X3</TargetName> <TargetName>DebugRel_KPI_2X3</TargetName>
<ToolsetNumber>0x4</ToolsetNumber> <ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName> <ToolsetName>ARM-ADS</ToolsetName>
<pCCUsed>5060528::V5.06 update 5 (build 528)::ARMCC</pCCUsed>
<uAC6>0</uAC6> <uAC6>0</uAC6>
<TargetOption> <TargetOption>
<TargetCommonOption> <TargetCommonOption>
......
...@@ -16,7 +16,7 @@ static unsigned char _int; ...@@ -16,7 +16,7 @@ static unsigned char _int;
static unsigned char _opened = 0; static unsigned char _opened = 0;
int key_map[KEY_COUNT] = { int key_map[KEY_COUNT] = {
KEY_UP, KEY_LEFT, KEY_ESC, KEY_DOWN, KEY_RIGHT, KEY_ENTER KEwsY_UP, KEY_LEFT, KEY_ESC, KEY_DOWN, KEY_RIGHT, KEY_ENTER
}; };
static unsigned int readkey(void) static unsigned int readkey(void)
......
...@@ -211,7 +211,7 @@ ...@@ -211,7 +211,7 @@
<Group> <Group>
<GroupName>FreeRTOS</GroupName> <GroupName>FreeRTOS</GroupName>
<tvExp>0</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel> <cbSel>0</cbSel>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
...@@ -511,6 +511,18 @@ ...@@ -511,6 +511,18 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<bShared>0</bShared> <bShared>0</bShared>
</File> </File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>26</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\User\Src\GUI_Font24.c</PathWithFileName>
<FilenameWithoutPath>GUI_Font24.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group> </Group>
<Group> <Group>
...@@ -521,7 +533,7 @@ ...@@ -521,7 +533,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>26</FileNumber> <FileNumber>27</FileNumber>
<FileType>4</FileType> <FileType>4</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
...@@ -533,7 +545,7 @@ ...@@ -533,7 +545,7 @@
</File> </File>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>27</FileNumber> <FileNumber>28</FileNumber>
<FileType>4</FileType> <FileType>4</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
...@@ -545,7 +557,7 @@ ...@@ -545,7 +557,7 @@
</File> </File>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>28</FileNumber> <FileNumber>29</FileNumber>
<FileType>4</FileType> <FileType>4</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
...@@ -557,7 +569,7 @@ ...@@ -557,7 +569,7 @@
</File> </File>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>29</FileNumber> <FileNumber>30</FileNumber>
<FileType>4</FileType> <FileType>4</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
...@@ -569,7 +581,7 @@ ...@@ -569,7 +581,7 @@
</File> </File>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>30</FileNumber> <FileNumber>31</FileNumber>
<FileType>4</FileType> <FileType>4</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
...@@ -581,7 +593,7 @@ ...@@ -581,7 +593,7 @@
</File> </File>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>31</FileNumber> <FileNumber>32</FileNumber>
<FileType>4</FileType> <FileType>4</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
...@@ -593,7 +605,7 @@ ...@@ -593,7 +605,7 @@
</File> </File>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>32</FileNumber> <FileNumber>33</FileNumber>
<FileType>4</FileType> <FileType>4</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
...@@ -605,7 +617,7 @@ ...@@ -605,7 +617,7 @@
</File> </File>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>33</FileNumber> <FileNumber>34</FileNumber>
<FileType>4</FileType> <FileType>4</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
...@@ -617,7 +629,7 @@ ...@@ -617,7 +629,7 @@
</File> </File>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>34</FileNumber> <FileNumber>35</FileNumber>
<FileType>4</FileType> <FileType>4</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
...@@ -629,7 +641,7 @@ ...@@ -629,7 +641,7 @@
</File> </File>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>35</FileNumber> <FileNumber>36</FileNumber>
<FileType>4</FileType> <FileType>4</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
...@@ -641,7 +653,7 @@ ...@@ -641,7 +653,7 @@
</File> </File>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>36</FileNumber> <FileNumber>37</FileNumber>
<FileType>4</FileType> <FileType>4</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
...@@ -651,17 +663,29 @@ ...@@ -651,17 +663,29 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<bShared>0</bShared> <bShared>0</bShared>
</File> </File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>38</FileNumber>
<FileType>4</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\Library\IPLib\N9H20_KPI_2x3.lib</PathWithFileName>
<FilenameWithoutPath>N9H20_KPI_2x3.lib</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group> </Group>
<Group> <Group>
<GroupName>inc</GroupName> <GroupName>inc</GroupName>
<tvExp>0</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel> <cbSel>0</cbSel>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>5</GroupNumber> <GroupNumber>5</GroupNumber>
<FileNumber>37</FileNumber> <FileNumber>39</FileNumber>
<FileType>5</FileType> <FileType>5</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
...@@ -673,7 +697,7 @@ ...@@ -673,7 +697,7 @@
</File> </File>
<File> <File>
<GroupNumber>5</GroupNumber> <GroupNumber>5</GroupNumber>
<FileNumber>38</FileNumber> <FileNumber>40</FileNumber>
<FileType>5</FileType> <FileType>5</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
...@@ -685,7 +709,7 @@ ...@@ -685,7 +709,7 @@
</File> </File>
<File> <File>
<GroupNumber>5</GroupNumber> <GroupNumber>5</GroupNumber>
<FileNumber>39</FileNumber> <FileNumber>41</FileNumber>
<FileType>5</FileType> <FileType>5</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
...@@ -699,13 +723,13 @@ ...@@ -699,13 +723,13 @@
<Group> <Group>
<GroupName>emWinConifg</GroupName> <GroupName>emWinConifg</GroupName>
<tvExp>0</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel> <cbSel>0</cbSel>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>6</GroupNumber> <GroupNumber>6</GroupNumber>
<FileNumber>40</FileNumber> <FileNumber>42</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
...@@ -717,7 +741,7 @@ ...@@ -717,7 +741,7 @@
</File> </File>
<File> <File>
<GroupNumber>6</GroupNumber> <GroupNumber>6</GroupNumber>
<FileNumber>41</FileNumber> <FileNumber>43</FileNumber>
<FileType>5</FileType> <FileType>5</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
...@@ -729,7 +753,7 @@ ...@@ -729,7 +753,7 @@
</File> </File>
<File> <File>
<GroupNumber>6</GroupNumber> <GroupNumber>6</GroupNumber>
<FileNumber>42</FileNumber> <FileNumber>44</FileNumber>
<FileType>5</FileType> <FileType>5</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
...@@ -741,7 +765,7 @@ ...@@ -741,7 +765,7 @@
</File> </File>
<File> <File>
<GroupNumber>6</GroupNumber> <GroupNumber>6</GroupNumber>
<FileNumber>43</FileNumber> <FileNumber>45</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
...@@ -755,13 +779,13 @@ ...@@ -755,13 +779,13 @@
<Group> <Group>
<GroupName>tslib</GroupName> <GroupName>tslib</GroupName>
<tvExp>0</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel> <cbSel>0</cbSel>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>7</GroupNumber> <GroupNumber>7</GroupNumber>
<FileNumber>44</FileNumber> <FileNumber>46</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
...@@ -773,7 +797,7 @@ ...@@ -773,7 +797,7 @@
</File> </File>
<File> <File>
<GroupNumber>7</GroupNumber> <GroupNumber>7</GroupNumber>
<FileNumber>45</FileNumber> <FileNumber>47</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
...@@ -785,7 +809,7 @@ ...@@ -785,7 +809,7 @@
</File> </File>
<File> <File>
<GroupNumber>7</GroupNumber> <GroupNumber>7</GroupNumber>
<FileNumber>46</FileNumber> <FileNumber>48</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
...@@ -797,7 +821,7 @@ ...@@ -797,7 +821,7 @@
</File> </File>
<File> <File>
<GroupNumber>7</GroupNumber> <GroupNumber>7</GroupNumber>
<FileNumber>47</FileNumber> <FileNumber>49</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
......
...@@ -653,6 +653,61 @@ ...@@ -653,6 +653,61 @@
<FileName>AppleLiGothicFont24.c</FileName> <FileName>AppleLiGothicFont24.c</FileName>
<FileType>1</FileType> <FileType>1</FileType>
<FilePath>.\User\Src\AppleLiGothicFont24.c</FilePath> <FilePath>.\User\Src\AppleLiGothicFont24.c</FilePath>
<FileOption>
<CommonProperty>
<UseCPPCompiler>2</UseCPPCompiler>
<RVCTCodeConst>0</RVCTCodeConst>
<RVCTZI>0</RVCTZI>
<RVCTOtherData>0</RVCTOtherData>
<ModuleSelection>0</ModuleSelection>
<IncludeInBuild>0</IncludeInBuild>
<AlwaysBuild>2</AlwaysBuild>
<GenerateAssemblyFile>2</GenerateAssemblyFile>
<AssembleAssemblyFile>2</AssembleAssemblyFile>
<PublicsOnly>2</PublicsOnly>
<StopOnExitCode>11</StopOnExitCode>
<CustomArgument></CustomArgument>
<IncludeLibraryModules></IncludeLibraryModules>
<ComprImg>1</ComprImg>
</CommonProperty>
<FileArmAds>
<Cads>
<interw>2</interw>
<Optim>0</Optim>
<oTime>2</oTime>
<SplitLS>2</SplitLS>
<OneElfS>2</OneElfS>
<Strict>2</Strict>
<EnumInt>2</EnumInt>
<PlainCh>2</PlainCh>
<Ropi>2</Ropi>
<Rwpi>2</Rwpi>
<wLevel>0</wLevel>
<uThumb>2</uThumb>
<uSurpInc>2</uSurpInc>
<uC99>2</uC99>
<useXO>2</useXO>
<v6Lang>0</v6Lang>
<v6LangP>0</v6LangP>
<vShortEn>2</vShortEn>
<vShortWch>2</vShortWch>
<v6Lto>2</v6Lto>
<v6WtE>2</v6WtE>
<v6Rtti>2</v6Rtti>
<VariousControls>
<MiscControls></MiscControls>
<Define></Define>
<Undefine></Undefine>
<IncludePath></IncludePath>
</VariousControls>
</Cads>
</FileArmAds>
</FileOption>
</File>
<File>
<FileName>GUI_Font24.c</FileName>
<FileType>1</FileType>
<FilePath>.\User\Src\GUI_Font24.c</FilePath>
</File> </File>
</Files> </Files>
</Group> </Group>
...@@ -733,6 +788,11 @@ ...@@ -733,6 +788,11 @@
<FileType>4</FileType> <FileType>4</FileType>
<FilePath>..\..\Library\NVTFATLib\N9H20_NVTFAT_FreeRTOS.lib</FilePath> <FilePath>..\..\Library\NVTFATLib\N9H20_NVTFAT_FreeRTOS.lib</FilePath>
</File> </File>
<File>
<FileName>N9H20_KPI_2x3.lib</FileName>
<FileType>4</FileType>
<FilePath>..\..\Library\IPLib\N9H20_KPI_2x3.lib</FilePath>
</File>
</Files> </Files>
</Group> </Group>
<Group> <Group>
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -5,6 +5,14 @@ ...@@ -5,6 +5,14 @@
#include "mysys.h" #include "mysys.h"
#include "N9H20TouchPanel.h" #include "N9H20TouchPanel.h"
typedef struct {
uint16_t col;
uint16_t colWidth; // item col width
uint16_t row;
uint16_t rowHeight;
char tableData[16];
}tTableContent, *ptTableContent;
extern GUI_CONST_STORAGE GUI_BITMAP bmgreen_LED_30x30; extern GUI_CONST_STORAGE GUI_BITMAP bmgreen_LED_30x30;
extern GUI_CONST_STORAGE GUI_BITMAP bmpexelsphoto371589; extern GUI_CONST_STORAGE GUI_BITMAP bmpexelsphoto371589;
...@@ -16,8 +24,47 @@ extern GUI_CONST_STORAGE GUI_BITMAP bmpexelsphoto753626; ...@@ -16,8 +24,47 @@ extern GUI_CONST_STORAGE GUI_BITMAP bmpexelsphoto753626;
void vStartGUITasks(UBaseType_t uxPriority); void vStartGUITasks(UBaseType_t uxPriority);
static portTASK_FUNCTION_PROTO(vGUITaskProducer, pvParameters); static portTASK_FUNCTION_PROTO(vGUITaskProducer, pvParameters);
void fn_PictureSlideShow(void); void fn_PictureSlideShow(void);
static void fn_ShowInfoPage(void); static void fn_ShowInfoPageGenset_1_2(void);
void fn_DrawInfoItemValueBg(GUI_RECT* pParentRect, GUI_RECT* pItemRect, GUI_RECT* pValueRect, uint8_t col_num); void fn_DrawInfoItemValueBg(GUI_RECT* pParentRect, GUI_RECT* pItemRect, GUI_RECT* pValueRect, uint8_t col_num);
void fn_PutDataToInfoTable(GUI_RECT* const pParentRect, ptTableContent ptc);
void fn_DrawInfoTableOutLine(GUI_RECT* const pParentRect, ptTableContent ptc);
static void fn_Test_UpdateInfoPage1(void);
static void fn_UpdateACVoltage(GUI_RECT* const pParentRect, ptTableContent ptc, uint8_t itemIndex, uint16_t* volt);
void fn_UpdateRS_Voltage(void);
void fn_UpdateST_Voltage(void);
void fn_UpdateTR_Voltage(void);
void fn_UpdateRN_Voltage(void);
void fn_UpdateSN_Voltage(void);
void fn_UpdateTN_Voltage(void);
static void fn_UpdateACAmpere(GUI_RECT* const pParentRect, ptTableContent ptc, uint8_t itemIndex, uint16_t* ampere);
void fn_UpdateR_Ampere(void);
void fn_UpdateS_Ampere(void);
void fn_UpdateT_Ampere(void);
void fn_UpdateAVG_Volt(void);
void fn_UpdateAVG_Ampere(void);
void fn_UpdateFreqValue(GUI_RECT* const pParentRect, ptTableContent ptc, uint8_t itemIndex, uint16_t* freq);
void fn_UpdateAC_Freq(void);
void fn_ShowLCD_Page(void);
static void fn_ShowInfoPageGenset_2_2(void);
void fn_ChangePageCheck(void);
void fn_InfoPageValueUpdate(void);
static void fn_Test_UpdateInfoPage2(void);
static void fn_UpdateKW_Value(GUI_RECT* const pParentRect, ptTableContent ptc, uint8_t itemIndex, int16_t* kw);
void fn_UpdateRN_KW_Value(void);
void fn_UpdateSN_KW_Value(void);
void fn_UpdateTN_KW_Value(void);
void fn_UpdateTotal_KW_Value(void);
static void fn_UpdateKVA_Value(GUI_RECT* const pParentRect, ptTableContent ptc, uint8_t itemIndex, uint16_t* kva);
void fn_UpdateRN_KVA_Value(void);
void fn_UpdateSN_KVA_Value(void);
void fn_UpdateTN_KVA_Value(void);
void fn_UpdateTotal_KVA_Value(void);
static void fn_UpdateKVAR_Value(GUI_RECT* const pParentRect, ptTableContent ptc, uint8_t itemIndex, uint16_t* kvar);
void fn_UpdateRN_KVAR_Value(void);
void fn_UpdateSN_KVAR_Value(void);
void fn_UpdateTN_KVAR_Value(void);
void fn_UpdateTotal_KVAR_Value(void);
void fn_Test_Value_Update(void);
void vStartGUITasks(UBaseType_t uxPriority) { void vStartGUITasks(UBaseType_t uxPriority) {
xTaskCreate(vGUITaskProducer, "GUI Task", configMINIMAL_STACK_SIZE, NULL, xTaskCreate(vGUITaskProducer, "GUI Task", configMINIMAL_STACK_SIZE, NULL,
...@@ -25,28 +72,48 @@ void vStartGUITasks(UBaseType_t uxPriority) { ...@@ -25,28 +72,48 @@ void vStartGUITasks(UBaseType_t uxPriority) {
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
#define GTR_BKG_COLOR GUI_MAKE_COLOR(0x00292421) #define GTR_BKG_COLOR GUI_MAKE_COLOR(0x00292421)
#define MAX_LCD_PAGE 2
uint16_t u16lcdPageIndex;
uint16_t u16pre_lcdPageIndex;
uint16_t u16RS_Volt, u16ST_Volt, u16TR_Volt;
uint16_t u16RN_Volt, u16SN_Volt, u16TN_Volt;
uint16_t u16R_Amp, u16S_Amp, u16T_Amp;
uint16_t u16Avg_Volt, u16Avg_Amp;
uint16_t u16Freq;
int16_t i16RN_KW, i16SN_KW, i16TN_KW, i16Total_KW;
uint16_t u16RN_KVA, u16SN_KVA, u16TN_KVA, u16Total_KVA;
uint16_t u16RN_KVAR, u16SN_KVAR, u16TN_KVAR, u16Total_KVAR;
uint16_t RS_Volt, ST_Volt, TR_Volt;
uint16_t RN_Volt, SN_Volt, TN_Volt;
uint16_t R_Amp, S_Amp, T_Amp;
uint16_t Avg_Volt, Avg_Amp;
uint16_t Freq;
static portTASK_FUNCTION_PROTO(vGUITaskProducer, pvParameters) { static portTASK_FUNCTION_PROTO(vGUITaskProducer, pvParameters) {
RS_Volt = 0; u16lcdPageIndex = 0;
ST_Volt = 0; u16pre_lcdPageIndex = (uint16_t)(-1);
TR_Volt = 0; u16RS_Volt = 0;
RN_Volt = 0; u16ST_Volt = 0;
SN_Volt = 0; u16TR_Volt = 0;
TN_Volt = 0; u16RN_Volt = 0;
R_Amp = 0; u16SN_Volt = 0;
S_Amp = 0; u16TN_Volt = 0;
T_Amp = 0; u16R_Amp = 0;
Avg_Volt = (RS_Volt + ST_Volt + TR_Volt) / 3; u16S_Amp = 0;
Avg_Amp = (R_Amp + S_Amp + T_Amp) / 3; u16T_Amp = 0;
Freq = 0; u16Avg_Volt = (u16RS_Volt + u16ST_Volt + u16TR_Volt) / 3;
u16Avg_Amp = (u16R_Amp + u16S_Amp + u16T_Amp) / 3;
u16Freq = 0;
i16RN_KW = 0;
i16SN_KW = 0;
i16TN_KW = 0;
i16Total_KW = 0;
u16RN_KVA = 0;
u16SN_KVA = 0;
u16TN_KVA = 0;
u16Total_KVA = 0;
u16RN_KVAR = 0;
u16SN_KVAR = 0;
u16TN_KVAR = 0;
u16Total_KVAR = 0;
GUI_Init(); GUI_Init();
GUI_Clear(); GUI_Clear();
...@@ -79,8 +146,8 @@ static portTASK_FUNCTION_PROTO(vGUITaskProducer, pvParameters) { ...@@ -79,8 +146,8 @@ static portTASK_FUNCTION_PROTO(vGUITaskProducer, pvParameters) {
GUI_DispStringHCenterAt("Monicon Instrument Co., Ltd", XSIZE_PHYS / 2, 50); GUI_DispStringHCenterAt("Monicon Instrument Co., Ltd", XSIZE_PHYS / 2, 50);
#endif #endif
#if 1 #if 0
fn_ShowInfoPage(); fn_ShowInfoPageGenset_1_2();
#endif #endif
...@@ -90,7 +157,11 @@ static portTASK_FUNCTION_PROTO(vGUITaskProducer, pvParameters) { ...@@ -90,7 +157,11 @@ static portTASK_FUNCTION_PROTO(vGUITaskProducer, pvParameters) {
} }
#else #else
while (TRUE) { while (TRUE) {
GUI_Delay(100); fn_Test_Value_Update();
fn_ChangePageCheck();
fn_ShowLCD_Page();
fn_InfoPageValueUpdate();
GUI_Delay(500);
} }
#endif #endif
} }
...@@ -120,27 +191,103 @@ void fn_PictureSlideShow(void) { ...@@ -120,27 +191,103 @@ void fn_PictureSlideShow(void) {
#define TITLE_HEIGHT 40 #define TITLE_HEIGHT 40
GUI_RECT PageTitleRect = {0, 0, XSIZE_PHYS-1, TITLE_HEIGHT}; // 水平寬度為 480,繪製外框時要從 0 -- 479 GUI_RECT PageTitleRect = {0, 0, XSIZE_PHYS-1, TITLE_HEIGHT}; // 水平寬度為 480,繪製外框時要從 0 -- 479
//static char _gInfoTitleText[] = "發電機資訊"; //static char _gInfoTitleText[] = "發電機資訊";
static char _gInfoTitleText[] = "\xe7\x99\xbc\xe9\x9b\xbb\xe6\xa9\x9f\xe8\xb3\x87\xe8\xa8\x8a"; static char _gPage_1_InfoTitleText[] = "\xe7\x99\xbc\xe9\x9b\xbb\xe6\xa9\x9f\xe8\xb3\x87\xe8\xa8\x8a 1/2";
//static char _gInfoTitleText[] = "Genset Infomation"; //static char _gInfoTitleText[] = "Genset Infomation";
static char _gPage_2_InfoTitleText[] = "\xe7\x99\xbc\xe9\x9b\xbb\xe6\xa9\x9f\xe8\xb3\x87\xe8\xa8\x8a 2/2";
#define INFO_MARGIN 10 #define INFO_MARGIN 10
#define INFO_BG_ROUND_RADIUS 10 #define INFO_BG_ROUND_RADIUS 10
#define INFO_RECT_WIDTH (XSIZE_PHYS - 3 * INFO_MARGIN) / 2 #define INFO_RECT_WIDTH (XSIZE_PHYS - 3 * INFO_MARGIN) / 2
#define INFO_RECT_HEIGHT (YSIZE_PHYS - TITLE_HEIGHT - INFO_MARGIN * 2) #define INFO_RECT_HEIGHT (YSIZE_PHYS - TITLE_HEIGHT - INFO_MARGIN * 2)
GUI_RECT PageLeftInfoRect = {INFO_MARGIN, TITLE_HEIGHT + INFO_MARGIN, INFO_RECT_WIDTH + INFO_MARGIN, YSIZE_PHYS - INFO_MARGIN}; GUI_RECT PageLeftInfoRect = {INFO_MARGIN, TITLE_HEIGHT + INFO_MARGIN, INFO_RECT_WIDTH + INFO_MARGIN, YSIZE_PHYS - INFO_MARGIN};
GUI_RECT PageRightInfoRect = {INFO_RECT_WIDTH + INFO_MARGIN * 2, TITLE_HEIGHT + INFO_MARGIN, INFO_RECT_WIDTH * 2 + INFO_MARGIN * 2, YSIZE_PHYS - INFO_MARGIN}; GUI_RECT PageRightInfoRect = {INFO_RECT_WIDTH + INFO_MARGIN * 2, TITLE_HEIGHT + INFO_MARGIN, XSIZE_PHYS - INFO_MARGIN, YSIZE_PHYS - INFO_MARGIN};
extern GUI_CONST_STORAGE GUI_FONT BM_Font_AppleLiGothicFont24; extern GUI_CONST_STORAGE GUI_FONT GUI_FontG24;
//extern GUI_CONST_STORAGE GUI_FONT BM_Font_AppleLiGothicFont24;
#define ITEM_TEXT_COLOR GUI_WHITE #define ITEM_TEXT_COLOR GUI_WHITE
#define VALUE_TEXT_COLOR GUI_BLUE #define VALUE_TEXT_COLOR GUI_BLUE
#define UNIT_TEXT_COLOR GUI_GREEN #define UNIT_TEXT_COLOR GUI_GREEN
static void fn_ShowInfoPage(void) { #define TABLE_ROW_HEIGHT 30
#define PAGE_1_INFO_LEFT_COL0_WIDTH (24 * 5 + INFO_MARGIN)
#define PAGE_1_INFO_LEFT_COL1_WIDTH (INFO_RECT_WIDTH - PAGE_1_INFO_LEFT_COL0_WIDTH)
#define PAGE_1_INFO_RIGHT_COL0_WIDTH (24 * 5 + INFO_MARGIN * 2)
#define PAGE_1_INFO_RIGHT_COL1_WIDTH (INFO_RECT_WIDTH - PAGE_1_INFO_RIGHT_COL0_WIDTH)
tTableContent tableContentGTR_InfoPage_1_2_Left[] = {
{0, PAGE_1_INFO_LEFT_COL0_WIDTH, 0, TABLE_ROW_HEIGHT, "R-S \xe9\x9b\xbb\xe5\xa3\x93"}, {1, PAGE_1_INFO_LEFT_COL1_WIDTH, 0, TABLE_ROW_HEIGHT, "220.0 V"},
{0, PAGE_1_INFO_LEFT_COL0_WIDTH, 1, TABLE_ROW_HEIGHT, "S-T \xe9\x9b\xbb\xe5\xa3\x93"}, {1, PAGE_1_INFO_LEFT_COL1_WIDTH, 1, TABLE_ROW_HEIGHT, "221.0 V"},
{0, PAGE_1_INFO_LEFT_COL0_WIDTH, 2, TABLE_ROW_HEIGHT, "T-R \xe9\x9b\xbb\xe5\xa3\x93"}, {1, PAGE_1_INFO_LEFT_COL1_WIDTH, 2, TABLE_ROW_HEIGHT, "220.5 V"},
{0, PAGE_1_INFO_LEFT_COL0_WIDTH, 3, TABLE_ROW_HEIGHT, "R-N \xe9\x9b\xbb\xe5\xa3\x93"}, {1, PAGE_1_INFO_LEFT_COL1_WIDTH, 3, TABLE_ROW_HEIGHT, "127.9 V"},
{0, PAGE_1_INFO_LEFT_COL0_WIDTH, 4, TABLE_ROW_HEIGHT, "S-N \xe9\x9b\xbb\xe5\xa3\x93"}, {1, PAGE_1_INFO_LEFT_COL1_WIDTH, 4, TABLE_ROW_HEIGHT, "127.5 V"},
{0, PAGE_1_INFO_LEFT_COL0_WIDTH, 5, TABLE_ROW_HEIGHT, "T-N \xe9\x9b\xbb\xe5\xa3\x93"}, {1, PAGE_1_INFO_LEFT_COL1_WIDTH, 5, TABLE_ROW_HEIGHT, "127.8 V"},
};
tTableContent tableContentGTR_InfoPage_1_2_Right[] = {
{0, PAGE_1_INFO_RIGHT_COL0_WIDTH, 0, TABLE_ROW_HEIGHT, "R \xe7\x9b\xb8\xe9\x9b\xbb\xe6\xb5\x81"},
{1, PAGE_1_INFO_RIGHT_COL1_WIDTH, 0, TABLE_ROW_HEIGHT, "50.0 A"},
{0, PAGE_1_INFO_RIGHT_COL0_WIDTH, 1, TABLE_ROW_HEIGHT, "S \xe7\x9b\xb8\xe9\x9b\xbb\xe6\xb5\x81"},
{1, PAGE_1_INFO_RIGHT_COL1_WIDTH, 1, TABLE_ROW_HEIGHT, "50.2 A"},
{0, PAGE_1_INFO_RIGHT_COL0_WIDTH, 2, TABLE_ROW_HEIGHT, "T \xe7\x9b\xb8\xe9\x9b\xbb\xe6\xb5\x81"},
{1, PAGE_1_INFO_RIGHT_COL1_WIDTH, 2, TABLE_ROW_HEIGHT, "50.5 A"},
{0, PAGE_1_INFO_RIGHT_COL0_WIDTH, 3, TABLE_ROW_HEIGHT, "\xe5\xb9\xb3\xe5\x9d\x87\xe7\xb7\x9a\xe9\x9b\xbb\xe5\xa3\x93"},
{1, PAGE_1_INFO_RIGHT_COL1_WIDTH, 3, TABLE_ROW_HEIGHT, "220.5 V"},
{0, PAGE_1_INFO_RIGHT_COL0_WIDTH, 4, TABLE_ROW_HEIGHT, "\xe5\xb9\xb3\xe5\x9d\x87\xe9\x9b\xbb\xe6\xb5\x81"},
{1, PAGE_1_INFO_RIGHT_COL1_WIDTH, 4, TABLE_ROW_HEIGHT, "50.2 A"},
{0, PAGE_1_INFO_RIGHT_COL0_WIDTH, 5, TABLE_ROW_HEIGHT, "\xe9\xa0\xbb\xe7\x8e\x87"},
{1, PAGE_1_INFO_RIGHT_COL1_WIDTH, 5, TABLE_ROW_HEIGHT, "60.2 Hz"},
};
#if 1
static void fn_ShowInfoPageGenset_1_2(void) {
volatile ptTableContent pTable;
int i;
// 顯示 title
GUI_SetColor(0x804B0080);
GUI_FillRoundedFrame(PageTitleRect.x0, PageTitleRect.y0, PageTitleRect.x1, PageTitleRect.y1, 0, 0);
GUI_UC_SetEncodeUTF8();
GUI_SetColor(GUI_YELLOW);
GUI_SetTextMode(GUI_TM_TRANS);
//GUI_SetFont(&BM_Font_AppleLiGothicFont24);
GUI_SetFont(&GUI_FontG24);
//GUI_DrawRect(PageTitleRect.x0, PageTitleRect.y0, PageTitleRect.x1, PageTitleRect.y1);
GUI_DispStringHCenterAt(_gPage_1_InfoTitleText, XSIZE_PHYS/2, 8);
//GUI_DispStringInRect(_gInfoTitleText, &PageTitleRect, GUI_TA_HCENTER | GUI_TA_VCENTER);
// 顯示左資訊欄
GUI_SetColor(GTR_BKG_COLOR);
GUI_FillRoundedFrame(PageLeftInfoRect.x0, PageLeftInfoRect.y0, PageLeftInfoRect.x1, PageLeftInfoRect.y1, INFO_BG_ROUND_RADIUS, 0);
// 顯示資訊項目及其數值
// R-S 電壓
#if 1
for (i = 0; i < sizeof(tableContentGTR_InfoPage_1_2_Left)/sizeof(tTableContent); i++) {
pTable = &tableContentGTR_InfoPage_1_2_Left[i];
fn_PutDataToInfoTable(&PageLeftInfoRect, pTable);
}
#endif
#if 1
// 顯示右資訊欄
GUI_SetColor(GTR_BKG_COLOR);
GUI_FillRoundedFrame(PageRightInfoRect.x0, PageRightInfoRect.y0, PageRightInfoRect.x1, PageRightInfoRect.y1, INFO_BG_ROUND_RADIUS, 0);
// 顯示資訊項目及其數值
for (i = 0; i < sizeof(tableContentGTR_InfoPage_1_2_Right)/sizeof(tTableContent); i++) {
pTable = &tableContentGTR_InfoPage_1_2_Right[i];
fn_PutDataToInfoTable(&PageRightInfoRect, pTable);
}
#endif
}
#endif
#if 0
static void fn_ShowInfoPageGenset_1_2(void) {
GUI_RECT itemRect, valueRect, unitRect; GUI_RECT itemRect, valueRect, unitRect;
// 顯示 title // 顯示 title
GUI_UC_SetEncodeUTF8(); GUI_UC_SetEncodeUTF8();
GUI_SetColor(GUI_YELLOW); GUI_SetColor(GUI_YELLOW);
GUI_SetFont(&BM_Font_AppleLiGothicFont24); //GUI_SetFont(&BM_Font_AppleLiGothicFont24);
GUI_SetFont(&GUI_FontG24);
//GUI_DrawRect(PageTitleRect.x0, PageTitleRect.y0, PageTitleRect.x1, PageTitleRect.y1); //GUI_DrawRect(PageTitleRect.x0, PageTitleRect.y0, PageTitleRect.x1, PageTitleRect.y1);
GUI_DispStringHCenterAt(_gInfoTitleText, XSIZE_PHYS/2, 8); GUI_DispStringHCenterAt(_gInfoTitleText, XSIZE_PHYS/2, 8);
//GUI_DispStringInRect(_gInfoTitleText, &PageTitleRect, GUI_TA_HCENTER | GUI_TA_VCENTER); //GUI_DispStringInRect(_gInfoTitleText, &PageTitleRect, GUI_TA_HCENTER | GUI_TA_VCENTER);
...@@ -150,6 +297,7 @@ static void fn_ShowInfoPage(void) { ...@@ -150,6 +297,7 @@ static void fn_ShowInfoPage(void) {
GUI_FillRoundedFrame(PageLeftInfoRect.x0, PageLeftInfoRect.y0, PageLeftInfoRect.x1, PageLeftInfoRect.y1, INFO_BG_ROUND_RADIUS, 0); GUI_FillRoundedFrame(PageLeftInfoRect.x0, PageLeftInfoRect.y0, PageLeftInfoRect.x1, PageLeftInfoRect.y1, INFO_BG_ROUND_RADIUS, 0);
// 顯示資訊項目及其數值 // 顯示資訊項目及其數值
// R-S 電壓
itemRect.x0 = PageLeftInfoRect.x0 + INFO_MARGIN; itemRect.x0 = PageLeftInfoRect.x0 + INFO_MARGIN;
itemRect.y0 = PageLeftInfoRect.y0 + INFO_MARGIN; itemRect.y0 = PageLeftInfoRect.y0 + INFO_MARGIN;
itemRect.x1 = itemRect.x0 + 120; itemRect.x1 = itemRect.x0 + 120;
...@@ -170,7 +318,7 @@ static void fn_ShowInfoPage(void) { ...@@ -170,7 +318,7 @@ static void fn_ShowInfoPage(void) {
GUI_DispStringInRect("V", &unitRect, GUI_TA_RIGHT | GUI_TA_VCENTER); GUI_DispStringInRect("V", &unitRect, GUI_TA_RIGHT | GUI_TA_VCENTER);
GUI_SetColor(VALUE_TEXT_COLOR); GUI_SetColor(VALUE_TEXT_COLOR);
GUI_DispStringInRect("220.0", &valueRect, GUI_TA_RIGHT | GUI_TA_VCENTER); GUI_DispStringInRect("220.0", &valueRect, GUI_TA_RIGHT | GUI_TA_VCENTER);
//
itemRect.y0 += 30; itemRect.y0 += 30;
itemRect.y1 = itemRect.y0 + 30; itemRect.y1 = itemRect.y0 + 30;
valueRect.y0 += 30; valueRect.y0 += 30;
...@@ -185,7 +333,7 @@ static void fn_ShowInfoPage(void) { ...@@ -185,7 +333,7 @@ static void fn_ShowInfoPage(void) {
GUI_DispStringInRect("V", &unitRect, GUI_TA_RIGHT | GUI_TA_VCENTER); GUI_DispStringInRect("V", &unitRect, GUI_TA_RIGHT | GUI_TA_VCENTER);
GUI_SetColor(VALUE_TEXT_COLOR); GUI_SetColor(VALUE_TEXT_COLOR);
GUI_DispStringInRect("221.0", &valueRect, GUI_TA_RIGHT | GUI_TA_VCENTER); GUI_DispStringInRect("221.0", &valueRect, GUI_TA_RIGHT | GUI_TA_VCENTER);
//
itemRect.y0 += 30; itemRect.y0 += 30;
itemRect.y1 = itemRect.y0 + 30; itemRect.y1 = itemRect.y0 + 30;
valueRect.y0 += 30; valueRect.y0 += 30;
...@@ -200,7 +348,7 @@ static void fn_ShowInfoPage(void) { ...@@ -200,7 +348,7 @@ static void fn_ShowInfoPage(void) {
GUI_DispStringInRect("V", &unitRect, GUI_TA_RIGHT | GUI_TA_VCENTER); GUI_DispStringInRect("V", &unitRect, GUI_TA_RIGHT | GUI_TA_VCENTER);
GUI_SetColor(VALUE_TEXT_COLOR); GUI_SetColor(VALUE_TEXT_COLOR);
GUI_DispStringInRect("220.5", &valueRect, GUI_TA_RIGHT | GUI_TA_VCENTER); GUI_DispStringInRect("220.5", &valueRect, GUI_TA_RIGHT | GUI_TA_VCENTER);
//
itemRect.y0 += 30; itemRect.y0 += 30;
itemRect.y1 = itemRect.y0 + 30; itemRect.y1 = itemRect.y0 + 30;
valueRect.y0 += 30; valueRect.y0 += 30;
...@@ -215,7 +363,7 @@ static void fn_ShowInfoPage(void) { ...@@ -215,7 +363,7 @@ static void fn_ShowInfoPage(void) {
GUI_DispStringInRect("V", &unitRect, GUI_TA_RIGHT | GUI_TA_VCENTER); GUI_DispStringInRect("V", &unitRect, GUI_TA_RIGHT | GUI_TA_VCENTER);
GUI_SetColor(VALUE_TEXT_COLOR); GUI_SetColor(VALUE_TEXT_COLOR);
GUI_DispStringInRect("127.9", &valueRect, GUI_TA_RIGHT | GUI_TA_VCENTER); GUI_DispStringInRect("127.9", &valueRect, GUI_TA_RIGHT | GUI_TA_VCENTER);
//
itemRect.y0 += 30; itemRect.y0 += 30;
itemRect.y1 = itemRect.y0 + 30; itemRect.y1 = itemRect.y0 + 30;
valueRect.y0 += 30; valueRect.y0 += 30;
...@@ -230,7 +378,7 @@ static void fn_ShowInfoPage(void) { ...@@ -230,7 +378,7 @@ static void fn_ShowInfoPage(void) {
GUI_DispStringInRect("V", &unitRect, GUI_TA_RIGHT | GUI_TA_VCENTER); GUI_DispStringInRect("V", &unitRect, GUI_TA_RIGHT | GUI_TA_VCENTER);
GUI_SetColor(VALUE_TEXT_COLOR); GUI_SetColor(VALUE_TEXT_COLOR);
GUI_DispStringInRect("127.5", &valueRect, GUI_TA_RIGHT | GUI_TA_VCENTER); GUI_DispStringInRect("127.5", &valueRect, GUI_TA_RIGHT | GUI_TA_VCENTER);
//
itemRect.y0 += 30; itemRect.y0 += 30;
itemRect.y1 = itemRect.y0 + 30; itemRect.y1 = itemRect.y0 + 30;
valueRect.y0 += 30; valueRect.y0 += 30;
...@@ -245,7 +393,7 @@ static void fn_ShowInfoPage(void) { ...@@ -245,7 +393,7 @@ static void fn_ShowInfoPage(void) {
GUI_DispStringInRect("V", &unitRect, GUI_TA_RIGHT | GUI_TA_VCENTER); GUI_DispStringInRect("V", &unitRect, GUI_TA_RIGHT | GUI_TA_VCENTER);
GUI_SetColor(VALUE_TEXT_COLOR); GUI_SetColor(VALUE_TEXT_COLOR);
GUI_DispStringInRect("127.8", &valueRect, GUI_TA_RIGHT | GUI_TA_VCENTER); GUI_DispStringInRect("127.8", &valueRect, GUI_TA_RIGHT | GUI_TA_VCENTER);
//
//----------------------------------------------------------------------------------------------------// //----------------------------------------------------------------------------------------------------//
// 顯示右資訊欄 // 顯示右資訊欄
...@@ -253,6 +401,7 @@ static void fn_ShowInfoPage(void) { ...@@ -253,6 +401,7 @@ static void fn_ShowInfoPage(void) {
GUI_FillRoundedFrame(PageRightInfoRect.x0, PageRightInfoRect.y0, PageRightInfoRect.x1, PageRightInfoRect.y1, INFO_BG_ROUND_RADIUS, 0); GUI_FillRoundedFrame(PageRightInfoRect.x0, PageRightInfoRect.y0, PageRightInfoRect.x1, PageRightInfoRect.y1, INFO_BG_ROUND_RADIUS, 0);
// 顯示資訊項目及其數值 // 顯示資訊項目及其數值
//
itemRect.x0 = PageRightInfoRect.x0 + INFO_MARGIN; itemRect.x0 = PageRightInfoRect.x0 + INFO_MARGIN;
itemRect.y0 = PageRightInfoRect.y0 + INFO_MARGIN; itemRect.y0 = PageRightInfoRect.y0 + INFO_MARGIN;
itemRect.x1 = itemRect.x0 + 120; itemRect.x1 = itemRect.x0 + 120;
...@@ -273,7 +422,7 @@ static void fn_ShowInfoPage(void) { ...@@ -273,7 +422,7 @@ static void fn_ShowInfoPage(void) {
GUI_DispStringInRect("A", &unitRect, GUI_TA_RIGHT | GUI_TA_VCENTER); GUI_DispStringInRect("A", &unitRect, GUI_TA_RIGHT | GUI_TA_VCENTER);
GUI_SetColor(GUI_BLUE); GUI_SetColor(GUI_BLUE);
GUI_DispStringInRect("50.0", &valueRect, GUI_TA_RIGHT | GUI_TA_VCENTER); GUI_DispStringInRect("50.0", &valueRect, GUI_TA_RIGHT | GUI_TA_VCENTER);
//
itemRect.y0 += 30; itemRect.y0 += 30;
itemRect.y1 = itemRect.y0 + 30; itemRect.y1 = itemRect.y0 + 30;
valueRect.y0 += 30; valueRect.y0 += 30;
...@@ -288,7 +437,7 @@ static void fn_ShowInfoPage(void) { ...@@ -288,7 +437,7 @@ static void fn_ShowInfoPage(void) {
GUI_DispStringInRect("A", &unitRect, GUI_TA_RIGHT | GUI_TA_VCENTER); GUI_DispStringInRect("A", &unitRect, GUI_TA_RIGHT | GUI_TA_VCENTER);
GUI_SetColor(GUI_BLUE); GUI_SetColor(GUI_BLUE);
GUI_DispStringInRect("50.2", &valueRect, GUI_TA_RIGHT | GUI_TA_VCENTER); GUI_DispStringInRect("50.2", &valueRect, GUI_TA_RIGHT | GUI_TA_VCENTER);
//
itemRect.y0 += 30; itemRect.y0 += 30;
itemRect.y1 = itemRect.y0 + 30; itemRect.y1 = itemRect.y0 + 30;
valueRect.y0 += 30; valueRect.y0 += 30;
...@@ -303,7 +452,7 @@ static void fn_ShowInfoPage(void) { ...@@ -303,7 +452,7 @@ static void fn_ShowInfoPage(void) {
GUI_DispStringInRect("A", &unitRect, GUI_TA_RIGHT | GUI_TA_VCENTER); GUI_DispStringInRect("A", &unitRect, GUI_TA_RIGHT | GUI_TA_VCENTER);
GUI_SetColor(GUI_BLUE); GUI_SetColor(GUI_BLUE);
GUI_DispStringInRect("50.5", &valueRect, GUI_TA_RIGHT | GUI_TA_VCENTER); GUI_DispStringInRect("50.5", &valueRect, GUI_TA_RIGHT | GUI_TA_VCENTER);
//
itemRect.y0 += 30; itemRect.y0 += 30;
itemRect.y1 = itemRect.y0 + 30; itemRect.y1 = itemRect.y0 + 30;
valueRect.y0 += 30; valueRect.y0 += 30;
...@@ -318,7 +467,7 @@ static void fn_ShowInfoPage(void) { ...@@ -318,7 +467,7 @@ static void fn_ShowInfoPage(void) {
GUI_DispStringInRect("V", &unitRect, GUI_TA_RIGHT | GUI_TA_VCENTER); GUI_DispStringInRect("V", &unitRect, GUI_TA_RIGHT | GUI_TA_VCENTER);
GUI_SetColor(GUI_BLUE); GUI_SetColor(GUI_BLUE);
GUI_DispStringInRect("220.5", &valueRect, GUI_TA_RIGHT | GUI_TA_VCENTER); GUI_DispStringInRect("220.5", &valueRect, GUI_TA_RIGHT | GUI_TA_VCENTER);
//
itemRect.y0 += 30; itemRect.y0 += 30;
itemRect.y1 = itemRect.y0 + 30; itemRect.y1 = itemRect.y0 + 30;
valueRect.y0 += 30; valueRect.y0 += 30;
...@@ -333,7 +482,7 @@ static void fn_ShowInfoPage(void) { ...@@ -333,7 +482,7 @@ static void fn_ShowInfoPage(void) {
GUI_DispStringInRect("A", &unitRect, GUI_TA_RIGHT | GUI_TA_VCENTER); GUI_DispStringInRect("A", &unitRect, GUI_TA_RIGHT | GUI_TA_VCENTER);
GUI_SetColor(GUI_BLUE); GUI_SetColor(GUI_BLUE);
GUI_DispStringInRect("50.2", &valueRect, GUI_TA_RIGHT | GUI_TA_VCENTER); GUI_DispStringInRect("50.2", &valueRect, GUI_TA_RIGHT | GUI_TA_VCENTER);
//
itemRect.y0 += 30; itemRect.y0 += 30;
itemRect.y1 = itemRect.y0 + 30; itemRect.y1 = itemRect.y0 + 30;
valueRect.y0 += 30; valueRect.y0 += 30;
...@@ -349,7 +498,9 @@ static void fn_ShowInfoPage(void) { ...@@ -349,7 +498,9 @@ static void fn_ShowInfoPage(void) {
valueRect.x1 -= 12; valueRect.x1 -= 12;
GUI_SetColor(GUI_BLUE); GUI_SetColor(GUI_BLUE);
GUI_DispStringInRect("60.2", &valueRect, GUI_TA_RIGHT | GUI_TA_VCENTER); GUI_DispStringInRect("60.2", &valueRect, GUI_TA_RIGHT | GUI_TA_VCENTER);
//
} }
#endif
void fn_DrawInfoItemValueBg(GUI_RECT* pParentRect, GUI_RECT* pItemRect, GUI_RECT* pValueRect, uint8_t col_num) { void fn_DrawInfoItemValueBg(GUI_RECT* pParentRect, GUI_RECT* pItemRect, GUI_RECT* pValueRect, uint8_t col_num) {
uint32_t col_color = GUI_GRAY_3F; uint32_t col_color = GUI_GRAY_3F;
...@@ -365,3 +516,553 @@ void fn_DrawInfoItemValueBg(GUI_RECT* pParentRect, GUI_RECT* pItemRect, GUI_RECT ...@@ -365,3 +516,553 @@ void fn_DrawInfoItemValueBg(GUI_RECT* pParentRect, GUI_RECT* pItemRect, GUI_RECT
GUI_DrawRect(pParentRect->x0, pItemRect->y0, pItemRect->x1, pItemRect->y1); GUI_DrawRect(pParentRect->x0, pItemRect->y0, pItemRect->x1, pItemRect->y1);
GUI_DrawRect(pValueRect->x0, pValueRect->y0, pParentRect->x1, pValueRect->y1); GUI_DrawRect(pValueRect->x0, pValueRect->y0, pParentRect->x1, pValueRect->y1);
} }
void fn_PutDataToInfoTable(GUI_RECT* const pParentRect, ptTableContent ptc) {
GUI_RECT r;
char tableData[16];
int iLastCharPos;
char cLastChar;
r.y0 = pParentRect->y0 + INFO_MARGIN + ptc->rowHeight * (ptc->row );
r.y1 = r.y0 + ptc->rowHeight;
memset(tableData, 0, sizeof(tableData)/sizeof(char));
iLastCharPos = strlen(ptc->tableData) - 1;
cLastChar = ptc->tableData[iLastCharPos];
if (ptc->col == 0) {
// item 字串寫入
r.x0 = pParentRect->x0 + INFO_MARGIN;
r.x1 = r.x0 + ptc->colWidth;
//GUI_ClearRect(r.x0, r.y0, r.x1, r.y1);
memcpy(tableData, ptc->tableData, strlen(ptc->tableData));
fn_DrawInfoTableOutLine(pParentRect, ptc);
GUI_SetColor(ITEM_TEXT_COLOR);
GUI_SetTextMode(GUI_TM_TRANS);
GUI_DispStringInRect(ptc->tableData, &r, GUI_TA_LEFT | GUI_TA_VCENTER);
}
else {
// value & unit 字串寫入
r.x0 = pParentRect->x1 - ptc->colWidth - INFO_MARGIN;
r.x1 = pParentRect->x1 - INFO_MARGIN;
//GUI_ClearRect(r.x0, r.y0, r.x1, r.y1);
// 寫入 unit
fn_DrawInfoTableOutLine(pParentRect, ptc);
GUI_SetColor(UNIT_TEXT_COLOR);
GUI_SetTextMode(GUI_TM_TRANS);
if (cLastChar == 'V') {
// unit: 'V'
GUI_DispStringInRect(&ptc->tableData[iLastCharPos], &r, GUI_TA_RIGHT | GUI_TA_VCENTER);
// 計算 value 的區域
r.x1 -= GUI_GetStringDistX(&ptc->tableData[iLastCharPos - 1]);
// 處理 value 字串
memcpy(tableData, ptc->tableData, iLastCharPos - 1);
}
else if (cLastChar == 'W') {
// unit: 'KW'
GUI_DispStringInRect(&ptc->tableData[iLastCharPos - 1], &r, GUI_TA_RIGHT | GUI_TA_VCENTER);
// 計算 value 的區域
r.x1 -= GUI_GetStringDistX(&ptc->tableData[iLastCharPos - 2]);
// 處理 value 字串
memcpy(tableData, ptc->tableData, iLastCharPos - 2);
}
else if (cLastChar == 'R') {
// unit: 'KVAR
GUI_DispStringInRect(&ptc->tableData[iLastCharPos - 3], &r, GUI_TA_RIGHT | GUI_TA_VCENTER);
// 計算 value 的區域
r.x1 -= GUI_GetStringDistX(&ptc->tableData[iLastCharPos - 4]);
// 處理 value 字串
memcpy(tableData, ptc->tableData, iLastCharPos - 4);
}
else if (cLastChar == 'M') {
// unit: 'RPM'
GUI_DispStringInRect(&ptc->tableData[iLastCharPos - 2], &r, GUI_TA_RIGHT | GUI_TA_VCENTER);
// 計算 value 的區域
r.x1 -= GUI_GetStringDistX(&ptc->tableData[iLastCharPos - 3]);
// 處理 value 字串
memcpy(tableData, ptc->tableData, iLastCharPos - 3);
}
else if (cLastChar == 'z') {
// unit: 'Hz'
GUI_DispStringInRect(&ptc->tableData[iLastCharPos - 1], &r, GUI_TA_RIGHT | GUI_TA_VCENTER);
// 計算 value 的區域
r.x1 -= GUI_GetStringDistX(&ptc->tableData[iLastCharPos - 2]);
// 處理 value 字串
memcpy(tableData, ptc->tableData, iLastCharPos - 2);
}
else if (cLastChar == 'A') {
// unit: ' A' or 'KVA'
cLastChar = ptc->tableData[iLastCharPos - 1];
if (cLastChar != ' ') {
// unit: 'KVA'
GUI_DispStringInRect(&ptc->tableData[iLastCharPos - 2], &r, GUI_TA_RIGHT | GUI_TA_VCENTER);
// 計算 value 的區域
r.x1 -= GUI_GetStringDistX(&ptc->tableData[iLastCharPos - 3]);
// 處理 value 字串
memcpy(tableData, ptc->tableData, iLastCharPos - 3);
}
else {
// unit: ' A'
GUI_DispStringInRect(&ptc->tableData[iLastCharPos], &r, GUI_TA_RIGHT | GUI_TA_VCENTER);
// 計算 value 的區域
r.x1 -= GUI_GetStringDistX(&ptc->tableData[iLastCharPos - 1]);
// 處理 value 字串
memcpy(tableData, ptc->tableData, iLastCharPos - 1);
}
}
else {
// unit: none
GUI_SetColor(VALUE_TEXT_COLOR);
GUI_DispStringInRect(ptc->tableData, &r, GUI_TA_LEFT | GUI_TA_VCENTER);
return;
}
// 寫入 value 帶 unit 的字串
GUI_SetColor(VALUE_TEXT_COLOR);
GUI_DispStringInRect(tableData, &r, GUI_TA_RIGHT | GUI_TA_VCENTER);
}
}
void fn_DrawInfoTableOutLine(GUI_RECT* const pParentRect, ptTableContent ptc) {
GUI_RECT r;
uint32_t col_color = GUI_GRAY_3F;
if (ptc->row % 2 != 0) {
col_color = GTR_BKG_COLOR;
}
r.y0 = pParentRect->y0 + INFO_MARGIN + ptc->rowHeight * (ptc->row );
r.y1 = r.y0 + ptc->rowHeight;
if (ptc->col == 0) {
r.x0 = pParentRect->x0;
r.x1 = r.x0 + ptc->colWidth;
}
else {
r.x0 = pParentRect->x1 - ptc->colWidth - INFO_MARGIN;
r.x1 = pParentRect->x1;
}
// 畫底色
GUI_SetColor(col_color);
GUI_FillRoundedFrame(r.x0, r.y0, r.x1, r.y1, 0, 0);
GUI_FillRoundedFrame(r.x0, r.y0, r.x1, r.y1, 0, 0);
// 畫外框
GUI_SetColor(GUI_GRAY_50);
GUI_DrawRect(r.x0, r.y0, r.x1, r.y1);
GUI_DrawRect(r.x0, r.y0, r.x1, r.y1);
}
#define RS_VOLTAGE_POS 0
#define RS_VOLTAGE_ITEM_POS (RS_VOLTAGE_POS * 2)
#define RS_VOLTAGE_VALUE_POS (RS_VOLTAGE_POS * 2 + 1)
#define ST_VOLTAGE_POS 1
#define ST_VOLTAGE_ITEM_POS (ST_VOLTAGE_POS * 2)
#define ST_VOLTAGE_VALUE_POS (ST_VOLTAGE_POS * 2 + 1)
#define TR_VOLTAGE_POS 2
#define TR_VOLTAGE_ITEM_POS (TR_VOLTAGE_POS * 2)
#define TR_VOLTAGE_VALUE_POS (TR_VOLTAGE_POS * 2 + 1)
#define RN_VOLTAGE_POS 3
#define RN_VOLTAGE_ITEM_POS (RN_VOLTAGE_POS * 2)
#define RN_VOLTAGE_VALUE_POS (RN_VOLTAGE_POS * 2 + 1)
#define SN_VOLTAGE_POS 4
#define SN_VOLTAGE_ITEM_POS (SN_VOLTAGE_POS * 2)
#define SN_VOLTAGE_VALUE_POS (SN_VOLTAGE_POS * 2 + 1)
#define TN_VOLTAGE_POS 5
#define TN_VOLTAGE_ITEM_POS (TN_VOLTAGE_POS * 2)
#define TN_VOLTAGE_VALUE_POS (TN_VOLTAGE_POS * 2 + 1)
static void fn_Test_UpdateInfoPage1(void) {
u16RS_Volt = 2200 + rand() % 10;
u16ST_Volt = 2200 + rand() % 10;
u16TR_Volt = 2200 + rand() % 10;
u16RN_Volt = 1280 + rand() % 10;
u16SN_Volt = 1280 + rand() % 10;
u16TN_Volt = 1280 + rand() % 10;
u16R_Amp = 500 + rand() % 10;
u16S_Amp = 500 + rand() % 10;
u16T_Amp = 500 + rand() % 10;
u16Avg_Volt = (u16RS_Volt + u16ST_Volt + u16TR_Volt) / 3;
u16Avg_Amp = (u16R_Amp + u16S_Amp + u16T_Amp) / 3;
u16Freq = 600 + rand() % 10;
}
static void fn_UpdateACVoltage(GUI_RECT* const pParentRect, ptTableContent ptc, uint8_t itemIndex, uint16_t* volt) {
uint32_t acVolt = *volt;
ptTableContent acVolt_ptc = &ptc[itemIndex];
memset(acVolt_ptc->tableData, 0, 16);
sprintf(acVolt_ptc->tableData, "%d.%d V", acVolt / 10, acVolt % 10);
fn_PutDataToInfoTable(pParentRect, acVolt_ptc);
}
void fn_UpdateRS_Voltage(void) {
fn_UpdateACVoltage(&PageLeftInfoRect, tableContentGTR_InfoPage_1_2_Left, RS_VOLTAGE_VALUE_POS, &u16RS_Volt);
}
void fn_UpdateST_Voltage(void) {
fn_UpdateACVoltage(&PageLeftInfoRect, tableContentGTR_InfoPage_1_2_Left, ST_VOLTAGE_VALUE_POS, &u16ST_Volt);
}
void fn_UpdateTR_Voltage(void) {
fn_UpdateACVoltage(&PageLeftInfoRect, tableContentGTR_InfoPage_1_2_Left, TR_VOLTAGE_VALUE_POS, &u16TR_Volt);
}
void fn_UpdateRN_Voltage(void) {
fn_UpdateACVoltage(&PageLeftInfoRect, tableContentGTR_InfoPage_1_2_Left, RN_VOLTAGE_VALUE_POS, &u16RN_Volt);
}
void fn_UpdateSN_Voltage(void) {
fn_UpdateACVoltage(&PageLeftInfoRect, tableContentGTR_InfoPage_1_2_Left, SN_VOLTAGE_VALUE_POS, &u16SN_Volt);
}
void fn_UpdateTN_Voltage(void) {
fn_UpdateACVoltage(&PageLeftInfoRect, tableContentGTR_InfoPage_1_2_Left, TN_VOLTAGE_VALUE_POS, &u16TN_Volt);
}
#define R_AMPERE_POS 0
#define R_AMPERE_ITEM_POS (R_AMPERE_POS * 2)
#define R_AMPERE_VALUE_POS (R_AMPERE_POS * 2 + 1)
#define S_AMPERE_POS 1
#define S_AMPERE_ITEM_POS (S_AMPERE_POS * 2)
#define S_AMPERE_VALUE_POS (S_AMPERE_POS * 2 + 1)
#define T_AMPERE_POS 2
#define T_AMPERE_ITEM_POS (T_AMPERE_POS * 2)
#define T_AMPERE_VALUE_POS (T_AMPERE_POS * 2 + 1)
#define AVG_VOLTAGE_POS 3
#define AVG_VOLTAGE_ITEM_POS (AVG_VOLTAGE_POS * 2)
#define AVG_VOLTAGE_VALUE_POS (AVG_VOLTAGE_POS * 2 + 1)
#define AVG_AMPERE_POS 4
#define AVG_AMPERE_ITEM_POS (AVG_AMPERE_POS * 2)
#define AVG_AMPERE_VALUE_POS (AVG_AMPERE_POS * 2 + 1)
#define FREQ_POS 5
#define FREQ_ITEM_POS (FREQ_POS * 2)
#define FREQ_VALUE_POS (FREQ_POS * 2 + 1)
static void fn_UpdateACAmpere(GUI_RECT* const pParentRect, ptTableContent ptc, uint8_t itemIndex, uint16_t* ampere) {
uint32_t acAmpere = *ampere;
ptTableContent acAmpere_ptc = &ptc[itemIndex];
memset(acAmpere_ptc->tableData, 0, 16);
if (acAmpere < 1000) {
sprintf(acAmpere_ptc->tableData, "%d.%d A", acAmpere / 10, acAmpere % 10);
}
else {
sprintf(acAmpere_ptc->tableData, "%d A", acAmpere / 10);
}
fn_PutDataToInfoTable(pParentRect, acAmpere_ptc);
}
void fn_UpdateR_Ampere(void) {
fn_UpdateACAmpere(&PageRightInfoRect, tableContentGTR_InfoPage_1_2_Right, R_AMPERE_VALUE_POS, &u16R_Amp);
}
void fn_UpdateS_Ampere(void) {
fn_UpdateACAmpere(&PageRightInfoRect, tableContentGTR_InfoPage_1_2_Right, S_AMPERE_VALUE_POS, &u16S_Amp);
}
void fn_UpdateT_Ampere(void) {
fn_UpdateACAmpere(&PageRightInfoRect, tableContentGTR_InfoPage_1_2_Right, T_AMPERE_VALUE_POS, &u16T_Amp);
}
void fn_UpdateAVG_Volt(void) {
fn_UpdateACVoltage(&PageRightInfoRect, tableContentGTR_InfoPage_1_2_Right, AVG_VOLTAGE_VALUE_POS, &u16Avg_Volt);
}
void fn_UpdateAVG_Ampere(void) {
fn_UpdateACAmpere(&PageRightInfoRect, tableContentGTR_InfoPage_1_2_Right, AVG_AMPERE_VALUE_POS, &u16Avg_Amp);
}
void fn_UpdateFreqValue(GUI_RECT* const pParentRect, ptTableContent ptc, uint8_t itemIndex, uint16_t* freq) {
uint32_t acFreq = *freq;
ptTableContent acFreq_ptc = &ptc[itemIndex];
memset(acFreq_ptc->tableData, 0, 16);
sprintf(acFreq_ptc->tableData, "%d.%d Hz", acFreq / 10, acFreq % 10);
fn_PutDataToInfoTable(pParentRect, acFreq_ptc);
}
void fn_UpdateAC_Freq(void) {
fn_UpdateFreqValue(&PageRightInfoRect, tableContentGTR_InfoPage_1_2_Right, FREQ_VALUE_POS, &u16Freq);
}
void fn_ShowLCD_Page(void) {
if (u16pre_lcdPageIndex == u16lcdPageIndex) {
return;
}
u16pre_lcdPageIndex = u16lcdPageIndex;
GUI_Clear();
switch (u16lcdPageIndex) {
case 0:
GUI_DrawBitmapEx(&bmpexelsphoto371589, 0, 0, 0, 0, XSIZE_PHYS *1000 / bmpexelsphoto371589.XSize, YSIZE_PHYS * 1000/bmpexelsphoto371589.YSize);
GUI_Delay(3000);
GUI_Clear();
u16lcdPageIndex++;
u16pre_lcdPageIndex = u16lcdPageIndex;
//break;
case 1:
fn_ShowInfoPageGenset_1_2();
break;
case 2:
fn_ShowInfoPageGenset_2_2();
break;
default:
u16pre_lcdPageIndex = (uint16_t)(-1);
break;
}
}
#define PAGE_2_INFO_LEFT_COL0_WIDTH (24 * 4 + INFO_MARGIN)
#define PAGE_2_INFO_LEFT_COL1_WIDTH (INFO_RECT_WIDTH - PAGE_2_INFO_LEFT_COL0_WIDTH)
#define PAGE_2_INFO_RIGHT_COL0_WIDTH (24 * 4 + INFO_MARGIN * 2)
#define PAGE_2_INFO_RIGHT_COL1_WIDTH (INFO_RECT_WIDTH - PAGE_2_INFO_RIGHT_COL0_WIDTH)
tTableContent tableContentGTR_InfoPage_2_2_Left[] = {
{0, PAGE_2_INFO_LEFT_COL0_WIDTH, 0, TABLE_ROW_HEIGHT, "RN \xe5\xaf\xa6\xe5\x8a\x9f"}, {1, PAGE_2_INFO_LEFT_COL1_WIDTH, 0, TABLE_ROW_HEIGHT, "0.0 KW"},
{0, PAGE_2_INFO_LEFT_COL0_WIDTH, 1, TABLE_ROW_HEIGHT, "SN \xe5\xaf\xa6\xe5\x8a\x9f"}, {1, PAGE_2_INFO_LEFT_COL1_WIDTH, 1, TABLE_ROW_HEIGHT, "0.0 KW"},
{0, PAGE_2_INFO_LEFT_COL0_WIDTH, 2, TABLE_ROW_HEIGHT, "TN \xe5\xaf\xa6\xe5\x8a\x9f"}, {1, PAGE_2_INFO_LEFT_COL1_WIDTH, 2, TABLE_ROW_HEIGHT, "0.0 KW"},
{0, PAGE_2_INFO_LEFT_COL0_WIDTH, 3, TABLE_ROW_HEIGHT, "RN \xe8\x99\x9b\xe5\x8a\x9f"}, {1, PAGE_2_INFO_LEFT_COL1_WIDTH, 3, TABLE_ROW_HEIGHT, "0.0 KVAR"},
{0, PAGE_2_INFO_LEFT_COL0_WIDTH, 4, TABLE_ROW_HEIGHT, "SN \xe8\x99\x9b\xe5\x8a\x9f"}, {1, PAGE_2_INFO_LEFT_COL1_WIDTH, 4, TABLE_ROW_HEIGHT, "0.0 KVAR"},
{0, PAGE_2_INFO_LEFT_COL0_WIDTH, 5, TABLE_ROW_HEIGHT, "TN \xe8\x99\x9b\xe5\x8a\x9f"}, {1, PAGE_2_INFO_LEFT_COL1_WIDTH, 5, TABLE_ROW_HEIGHT, "0.0 KVAR"},
};
tTableContent tableContentGTR_InfoPage_2_2_Right[] = {
{0, PAGE_2_INFO_RIGHT_COL0_WIDTH, 0, TABLE_ROW_HEIGHT, "RN \xe8\xa6\x96\xe5\x8a\x9f"}, {1, PAGE_2_INFO_RIGHT_COL1_WIDTH, 0, TABLE_ROW_HEIGHT, "0.0 KVA"},
{0, PAGE_2_INFO_RIGHT_COL0_WIDTH, 1, TABLE_ROW_HEIGHT, "SN \xe8\xa6\x96\xe5\x8a\x9f"}, {1, PAGE_2_INFO_RIGHT_COL1_WIDTH, 1, TABLE_ROW_HEIGHT, "0.0 KVA"},
{0, PAGE_2_INFO_RIGHT_COL0_WIDTH, 2, TABLE_ROW_HEIGHT, "TN \xe8\xa6\x96\xe5\x8a\x9f"}, {1, PAGE_2_INFO_RIGHT_COL1_WIDTH, 2, TABLE_ROW_HEIGHT, "0.0 KVA"},
{0, PAGE_2_INFO_RIGHT_COL0_WIDTH, 3, TABLE_ROW_HEIGHT, "\xe7\xb8\xbd\xe5\x8a\x9f\xe7\x8e\x87"}, {1, PAGE_2_INFO_RIGHT_COL1_WIDTH, 3, TABLE_ROW_HEIGHT, "0.0 KW"},
{0, PAGE_2_INFO_RIGHT_COL0_WIDTH, 4, TABLE_ROW_HEIGHT, "\xe7\xb8\xbd\xe8\x99\x9b\xe5\x8a\x9f"}, {1, PAGE_2_INFO_RIGHT_COL1_WIDTH, 4, TABLE_ROW_HEIGHT, "0.0 KVAR"},
{0, PAGE_2_INFO_RIGHT_COL0_WIDTH, 5, TABLE_ROW_HEIGHT, "\xe7\xb8\xbd\xe8\xa6\x96\xe5\x8a\x9f"}, {1, PAGE_2_INFO_RIGHT_COL1_WIDTH, 5, TABLE_ROW_HEIGHT, "0.0 KVA"},
};
void fn_ShowInfoPageGenset_2_2(void) {
volatile ptTableContent pTable;
int i;
// 顯示 title
GUI_SetColor(0x804B0080);
GUI_FillRoundedFrame(PageTitleRect.x0, PageTitleRect.y0, PageTitleRect.x1, PageTitleRect.y1, 0, 0);
GUI_UC_SetEncodeUTF8();
GUI_SetColor(GUI_YELLOW);
GUI_SetTextMode(GUI_TM_TRANS);
//GUI_SetFont(&BM_Font_AppleLiGothicFont24);
GUI_SetFont(&GUI_FontG24);
//GUI_DrawRect(PageTitleRect.x0, PageTitleRect.y0, PageTitleRect.x1, PageTitleRect.y1);
GUI_DispStringHCenterAt(_gPage_2_InfoTitleText, XSIZE_PHYS/2, 8);
//GUI_DispStringInRect(_gInfoTitleText, &PageTitleRect, GUI_TA_HCENTER | GUI_TA_VCENTER);
// 顯示左資訊欄
GUI_SetColor(GTR_BKG_COLOR);
GUI_FillRoundedFrame(PageLeftInfoRect.x0, PageLeftInfoRect.y0, PageLeftInfoRect.x1, PageLeftInfoRect.y1, INFO_BG_ROUND_RADIUS, 0);
// 顯示資訊項目及其數值
#if 1
for (i = 0; i < sizeof(tableContentGTR_InfoPage_2_2_Left)/sizeof(tTableContent); i++) {
pTable = &tableContentGTR_InfoPage_2_2_Left[i];
fn_PutDataToInfoTable(&PageLeftInfoRect, pTable);
}
#endif
#if 1
// 顯示右資訊欄
GUI_SetColor(GTR_BKG_COLOR);
GUI_FillRoundedFrame(PageRightInfoRect.x0, PageRightInfoRect.y0, PageRightInfoRect.x1, PageRightInfoRect.y1, INFO_BG_ROUND_RADIUS, 0);
// 顯示資訊項目及其數值
for (i = 0; i < sizeof(tableContentGTR_InfoPage_2_2_Right)/sizeof(tTableContent); i++) {
pTable = &tableContentGTR_InfoPage_2_2_Right[i];
fn_PutDataToInfoTable(&PageRightInfoRect, pTable);
}
#endif
}
extern int key_click;
void fn_ChangePageCheck(void) {
if (key_click & KEY_RIGHT) {
key_click ^= KEY_RIGHT;
u16lcdPageIndex++;
if (u16lcdPageIndex > MAX_LCD_PAGE) {
u16lcdPageIndex = 1;
}
}
if (key_click & KEY_LEFT) {
key_click ^= KEY_LEFT;
u16lcdPageIndex--;
if (u16lcdPageIndex == 0) {
u16lcdPageIndex = MAX_LCD_PAGE;
}
}
}
void fn_InfoPageValueUpdate(void) {
switch (u16lcdPageIndex) {
case 1:
fn_UpdateRS_Voltage();
fn_UpdateST_Voltage();
fn_UpdateTR_Voltage();
fn_UpdateRN_Voltage();
fn_UpdateSN_Voltage();
fn_UpdateTN_Voltage();
fn_UpdateR_Ampere();
fn_UpdateS_Ampere();
fn_UpdateT_Ampere();
fn_UpdateAVG_Volt();
fn_UpdateAVG_Ampere();
fn_UpdateAC_Freq();
break;
case 2:
fn_UpdateRN_KW_Value();
fn_UpdateSN_KW_Value();
fn_UpdateTN_KW_Value();
fn_UpdateTotal_KW_Value();
fn_UpdateRN_KVAR_Value();
fn_UpdateSN_KVAR_Value();
fn_UpdateTN_KVAR_Value();
fn_UpdateTotal_KVAR_Value();
fn_UpdateRN_KVA_Value();
fn_UpdateSN_KVA_Value();
fn_UpdateTN_KVA_Value();
fn_UpdateTotal_KVA_Value();
break;
}
}
#define RN_KW_POS 0
#define RN_KW_ITEM_POS (RN_KW_POS * 2)
#define RN_KW_VALUE_POS (RN_KW_POS * 2 + 1)
#define SN_KW_POS 1
#define SN_KW_ITEM_POS (SN_KW_POS * 2)
#define SN_KW_VALUE_POS (SN_KW_POS * 2 + 1)
#define TN_KW_POS 2
#define TN_KW_ITEM_POS (TN_KW_POS * 2)
#define TN_KW_VALUE_POS (TN_KW_POS * 2 + 1)
#define RN_KVAR_POS 3
#define RN_KVAR_ITEM_POS (RN_KVAR_POS * 2)
#define RN_KVAR_VALUE_POS (RN_KVAR_POS * 2 + 1)
#define SN_KVAR_POS 4
#define SN_KVAR_ITEM_POS (SN_KVAR_POS * 2)
#define SN_KVAR_VALUE_POS (SN_KVAR_POS * 2 + 1)
#define TN_KVAR_POS 5
#define TN_KVAR_ITEM_POS (TN_KVAR_POS * 2)
#define TN_KVAR_VALUE_POS (TN_KVAR_POS * 2 + 1)
#define RN_KVA_POS 0
#define RN_KVA_ITEM_POS (RN_KVA_POS * 2)
#define RN_KVA_VALUE_POS (RN_KVA_POS * 2 + 1)
#define SN_KVA_POS 1
#define SN_KVA_ITEM_POS (SN_KVA_POS * 2)
#define SN_KVA_VALUE_POS (SN_KVA_POS * 2 + 1)
#define TN_KVA_POS 2
#define TN_KVA_ITEM_POS (TN_KVA_POS * 2)
#define TN_KVA_VALUE_POS (TN_KVA_POS * 2 + 1)
#define TOTAL_KW_POS 3
#define TOTAL_KW_ITEM_POS (TOTAL_KW_POS * 2)
#define TOTAL_KW_VALUE_POS (TOTAL_KW_POS * 2 + 1)
#define TOTAL_KVAR_POS 4
#define TOTAL_KVAR_ITEM_POS (TOTAL_KVAR_POS * 2)
#define TOTAL_KVAR_VALUE_POS (TOTAL_KVAR_POS * 2 + 1)
#define TOTAL_KVA_POS 5
#define TOTAL_KVA_ITEM_POS (TOTAL_KVA_POS * 2)
#define TOTAL_KVA_VALUE_POS (TOTAL_KVA_POS * 2 + 1)
static void fn_Test_UpdateInfoPage2(void) {
uint16_t u16PF = 80;
uint32_t u32Tmp;
double f32Tmp;
u32Tmp = u16RN_Volt * u16R_Amp;
u32Tmp /= 1000;
u16RN_KVA = (uint16_t)u32Tmp;
u32Tmp = u16SN_Volt * u16S_Amp;
u32Tmp /= 1000;
u16SN_KVA = (uint16_t)u32Tmp;
u32Tmp = u16TN_Volt * u16T_Amp;
u32Tmp /= 1000;
u16TN_KVA = (uint16_t)u32Tmp;
u16Total_KVA = u16RN_KVA + u16SN_KVA + u16TN_KVA;
u32Tmp = u16RN_KVA * u16PF;
u32Tmp /= 100;
i16RN_KW = (uint16_t)u32Tmp;
u32Tmp = u16SN_KVA * u16PF;
u32Tmp /= 100;
i16SN_KW = (uint16_t)u32Tmp;
u32Tmp = u16TN_KVA * u16PF;
u32Tmp /= 100;
i16TN_KW = (uint16_t)u32Tmp;
i16Total_KW = i16RN_KW + i16SN_KW + i16TN_KW;
f32Tmp = u16RN_KVA * sqrt(1 - pow(0.8, 2));
u16RN_KVAR = (uint16_t)f32Tmp;
f32Tmp = u16SN_KVA * sqrt(1 - pow(0.8, 2));
u16SN_KVAR = (uint16_t)f32Tmp;
f32Tmp = u16TN_KVA * sqrt(1 - pow(0.8, 2));
u16TN_KVAR = (uint16_t)f32Tmp;
u16Total_KVAR = u16RN_KVAR + u16SN_KVAR + u16TN_KVAR;
}
static void fn_UpdateKW_Value(GUI_RECT* const pParentRect, ptTableContent ptc, uint8_t itemIndex, int16_t* kw) {
int32_t kwValue = *kw;
ptTableContent kw_ptc = &ptc[itemIndex];
memset(kw_ptc->tableData, 0, 16);
sprintf(kw_ptc->tableData, "%.2f KW", kwValue / 100.0);
fn_PutDataToInfoTable(pParentRect, kw_ptc);
}
void fn_UpdateRN_KW_Value(void) {
fn_UpdateKW_Value(&PageLeftInfoRect, tableContentGTR_InfoPage_2_2_Left, RN_KW_VALUE_POS, &i16RN_KW);
}
void fn_UpdateSN_KW_Value(void) {
fn_UpdateKW_Value(&PageLeftInfoRect, tableContentGTR_InfoPage_2_2_Left, SN_KW_VALUE_POS, &i16SN_KW);
}
void fn_UpdateTN_KW_Value(void) {
fn_UpdateKW_Value(&PageLeftInfoRect, tableContentGTR_InfoPage_2_2_Left, TN_KW_VALUE_POS, &i16TN_KW);
}
void fn_UpdateTotal_KW_Value(void) {
fn_UpdateKW_Value(&PageRightInfoRect, tableContentGTR_InfoPage_2_2_Right, TOTAL_KW_VALUE_POS, &i16TN_KW);
}
static void fn_UpdateKVA_Value(GUI_RECT* const pParentRect, ptTableContent ptc, uint8_t itemIndex, uint16_t* kva) {
int32_t kvaValue = *kva;
ptTableContent kva_ptc = &ptc[itemIndex];
memset(kva_ptc->tableData, 0, 16);
sprintf(kva_ptc->tableData, "%.2f KVA", kvaValue / 100.0);
fn_PutDataToInfoTable(pParentRect, kva_ptc);
}
void fn_UpdateRN_KVA_Value(void) {
fn_UpdateKVA_Value(&PageRightInfoRect, tableContentGTR_InfoPage_2_2_Right, RN_KVA_VALUE_POS, &u16RN_KVA);
}
void fn_UpdateSN_KVA_Value(void) {
fn_UpdateKVA_Value(&PageRightInfoRect, tableContentGTR_InfoPage_2_2_Right, SN_KVA_VALUE_POS, &u16SN_KVA);
}
void fn_UpdateTN_KVA_Value(void) {
fn_UpdateKVA_Value(&PageRightInfoRect, tableContentGTR_InfoPage_2_2_Right, TN_KVA_VALUE_POS, &u16TN_KVA);
}
void fn_UpdateTotal_KVA_Value(void) {
fn_UpdateKVA_Value(&PageRightInfoRect, tableContentGTR_InfoPage_2_2_Right, TOTAL_KVA_VALUE_POS, &u16TN_KVA);
}
static void fn_UpdateKVAR_Value(GUI_RECT* const pParentRect, ptTableContent ptc, uint8_t itemIndex, uint16_t* kvar) {
int32_t kvarValue = *kvar;
ptTableContent kvar_ptc = &ptc[itemIndex];
memset(kvar_ptc->tableData, 0, 16);
sprintf(kvar_ptc->tableData, "%.2f KVAR", kvarValue / 100.0);
fn_PutDataToInfoTable(pParentRect, kvar_ptc);
}
void fn_UpdateRN_KVAR_Value(void) {
fn_UpdateKVAR_Value(&PageLeftInfoRect, tableContentGTR_InfoPage_2_2_Left, RN_KVAR_VALUE_POS, &u16RN_KVAR);
}
void fn_UpdateSN_KVAR_Value(void) {
fn_UpdateKVAR_Value(&PageLeftInfoRect, tableContentGTR_InfoPage_2_2_Left, SN_KVAR_VALUE_POS, &u16SN_KVAR);
}
void fn_UpdateTN_KVAR_Value(void) {
fn_UpdateKVAR_Value(&PageLeftInfoRect, tableContentGTR_InfoPage_2_2_Left, TN_KVAR_VALUE_POS, &u16TN_KVAR);
}
void fn_UpdateTotal_KVAR_Value(void) {
fn_UpdateKVAR_Value(&PageRightInfoRect, tableContentGTR_InfoPage_2_2_Right, TOTAL_KVAR_VALUE_POS, &u16Total_KVAR);
}
void fn_Test_Value_Update(void) {
static uint16_t u16TestValueCount = 0;
if ( u16TestValueCount % 1 == 0) {
fn_Test_UpdateInfoPage1();
fn_Test_UpdateInfoPage2();
}
u16TestValueCount++;
}
...@@ -36,6 +36,9 @@ UINT8 u8FrameBuf[XSIZE_PHYS*YSIZE_PHYS*2] __attribute__((aligned(32))); ...@@ -36,6 +36,9 @@ UINT8 u8FrameBuf[XSIZE_PHYS*YSIZE_PHYS*2] __attribute__((aligned(32)));
UINT8 *u8FrameBufPtr; UINT8 *u8FrameBufPtr;
SemaphoreHandle_t xSemButton;
int key, key_pressed, key_click;
extern void vStartGUITasks(UBaseType_t uxPriority); extern void vStartGUITasks(UBaseType_t uxPriority);
int main() { int main() {
...@@ -82,6 +85,13 @@ static void prvSetupHardware(void) { ...@@ -82,6 +85,13 @@ static void prvSetupHardware(void) {
vpostLCMInit(&lcdFormat, (UINT32*)u8FrameBuf); vpostLCMInit(&lcdFormat, (UINT32*)u8FrameBuf);
u8FrameBufPtr = (UINT8*)((UINT32)u8FrameBuf | 0x80000000); u8FrameBufPtr = (UINT8*)((UINT32)u8FrameBuf | 0x80000000);
vpostEnaBacklight(); vpostEnaBacklight();
xSemButton = xSemaphoreCreateBinary();
kpi_init();
kpi_open(3); // use nIRQ0 as external interrupt source
key = 0;
key_pressed = 0;
key_click = 0;
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
...@@ -94,9 +104,51 @@ LCDFORMATEX mainlcdInfo; ...@@ -94,9 +104,51 @@ LCDFORMATEX mainlcdInfo;
static portTASK_FUNCTION_PROTO(vMainTaskProducer, pvParameters) { static portTASK_FUNCTION_PROTO(vMainTaskProducer, pvParameters) {
static uint16_t uRunCount = 0; static uint16_t uRunCount = 0;
for (;;) { for (;;) {
key = kpi_read(KPI_NONBLOCK);
//檢查 KEY_UP 是否 click
if ((key_pressed & KEY_UP) != 0) {
if ((key & KEY_UP) == 0) {
key_click |= KEY_UP;
}
}
//檢查 KEY_DOWN 是否 click
if ((key_pressed & KEY_DOWN) != 0) {
if ((key & KEY_DOWN) == 0) {
key_click |= KEY_DOWN;
}
}
//檢查 KEY_LEFT 是否 click
if ((key_pressed & KEY_LEFT) != 0) {
if ((key & KEY_LEFT) == 0) {
key_click |= KEY_LEFT;
}
}
//檢查 KEY_RIGHT 是否 click
if ((key_pressed & KEY_RIGHT) != 0) {
if ((key & KEY_RIGHT) == 0) {
key_click |= KEY_RIGHT;
}
}
//檢查 KEY_ENTER 是否 click
if ((key_pressed & KEY_ENTER) != 0) {
if ((key & KEY_ENTER) == 0) {
key_click |= KEY_ENTER;
}
}
//檢查 KEY_ESC 是否 click
if ((key_pressed & KEY_ESC) != 0) {
if ((key & KEY_ESC) == 0) {
key_click |= KEY_ESC;
}
}
key_pressed = key;
//sysprintf("key is %d\n", key);
#if 0
sysprintf("TaskName=%s, runCount=%d\r\n", pcTaskGetTaskName(NULL), sysprintf("TaskName=%s, runCount=%d\r\n", pcTaskGetTaskName(NULL),
uRunCount); uRunCount);
#endif
#if (VPOST_SHOW_IMAGE == 1) #if (VPOST_SHOW_IMAGE == 1)
if (uRunCount % 2 == 0) { if (uRunCount % 2 == 0) {
...@@ -108,7 +160,7 @@ static portTASK_FUNCTION_PROTO(vMainTaskProducer, pvParameters) { ...@@ -108,7 +160,7 @@ static portTASK_FUNCTION_PROTO(vMainTaskProducer, pvParameters) {
} }
#endif #endif
#endif #endif
vTaskDelay(5000); vTaskDelay(20);
uRunCount++; uRunCount++;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment