Part9_数值触摸输入演示
<p>[TOC]</p>
<h1>功能描述</h1>
<p>数值控件弹出输入框字符串输入
按钮控件配合控件响应消息进行数值输入。</p>
<h4>接线方法</h4>
<p>如不需使用代码来直接打印操作信息,使用USB线为ATF模块提供电源即可。
代码测试部分需与Arduino控制器进行连接,RX-TX,GND-GND(用到了RX和TX串口)。</p>
<h4>实现功能</h4>
<p>数值控件若想实现弹出输入框的输入功能,必须有数值输入框资源项的支持。数值输入框资源项文件后缀为.inr。可在ATF_UITool工具的文件夹里找到。
1.加载所需控件到资源列表后,打开需要控件的页面进行配置字符控件即可。
2.区域控件可添加控件响应消息,其中有加值或减值的操作,选择所需响应消息后,再选择响应目标,即可对目标进行所选操作。
本例所需资源已在下方资源链接中准备好。</p>
<h4>温馨提示</h4>
<p>数值输入框资源项加载入资源文件后,必须在要使用它的界面里进行配置。否则字符控件无法正常弹出输入框。</p>
<h4>操作示例</h4>
<p>如不需第六步操作,可只为ATF模块提供电源即可测试效果。
1.仍使用ATF043模块,具体可参考之前的配置。
2.切换到资源列表加载所需控件资源,如图:
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=5ff4969fd5f266284d814ec9fe566ff2&amp;file=file.png" alt="" />
3.打开需要数值控件的界面,配置数值控件,如图:
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=b4ca6c2557f84b56805117d1e1f12b86&amp;file=file.png" alt="" />
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=9c10c094dc9bf11b6b14009061b60e6b&amp;file=file.png" alt="" />
4.添加三个数值控件100,101,102,其中100和101分别用于无符整数,有符浮点数的输入测试。102设置了无响应,用于之后测试控件响应消息。本次具体配置如图:
100:
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=7066f775b852889dda2e8383a03990b2&amp;file=file.png" alt="" />
101:
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=8da2ff43fa7db4169204f573a9d16397&amp;file=file.png" alt="" />
102:
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=948433f77cf6feb5775ae1058c951374&amp;file=file.png" alt="" />
5.为102添加两个区域控件,分别添加加值和减值的控件响应消息,并配置响应目标为102,即可控制102数值变化,如图:
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=d60c8902b7d1ff9f776b905c03abc69d&amp;file=file.png" alt="" />
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=ebb6ebe9829a0c3b6eccbcff5ab68ddf&amp;file=file.png" alt="" />
*6.可在本页面添加字符串字节打印区,配合下方程序进行测试。</p>
<h1>使用代码</h1>
<p>本次代码在part5代码基础上更改,详见part5。</p>
<pre><code class="language-c">void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.setTimeout(10);
delay(2000);
}
unsigned char m_ReciverHeader; //ATF Message Header char = @/#/$
unsigned short m_ReciverBodyID; //ATF Message BodyID 0:GUI Swtich 100~65535:Body Msg
int m_ReciverVarInt; //ATF Message int Val(Header=@)
float m_ReciverVarFloat; //ATF Message float Val(Header=#)
String m_ReciverVarString; //ATF Message String Val(Header=$)
void loop() {
// put your main code here, to run repeatedly:
if(ATFMessageService(1))
{
if(m_ReciverBodyID==100||m_ReciverBodyID==102)
{
Serial.print(&quot;\r&quot;);
Serial.print(&quot;ID&quot;);
Serial.print(m_ReciverBodyID);
Serial.print(&quot; Input:&quot;);
Serial.print(m_ReciverVarInt);
}
if(m_ReciverBodyID==101)
{
Serial.print(&quot;\r&quot;);
Serial.print(&quot;ID&quot;);
Serial.print(m_ReciverBodyID);
Serial.print(&quot; Input:&quot;);
Serial.print(m_ReciverVarFloat,3);
}
if(m_ReciverBodyID==103||m_ReciverBodyID==104)
{
Serial.println(&quot;@READ 102&quot;);
}
}
}
unsigned char ATFMessageService(unsigned char delaytimer)
{
char n_TempChar;
n_TempChar = Serial.available();
if(n_TempChar)
{
delay(delaytimer);
n_TempChar = Serial.read();
while(n_TempChar!='@'&amp;&amp;n_TempChar!='#'&amp;&amp;n_TempChar!='$'&amp;&amp;n_TempChar&gt;=0)
{
n_TempChar = Serial.read();
}
m_ReciverHeader = n_TempChar;
m_ReciverBodyID = Serial.parseInt();
if(n_TempChar=='@')
{
m_ReciverVarInt = Serial.parseInt();
}
else if(n_TempChar=='#')
{
m_ReciverVarFloat = Serial.parseFloat();
}
else if(n_TempChar=='$')
{
Serial.read();
m_ReciverVarString = Serial.readStringUntil('\r');
}
else return 0;
return 1;
}
return 0;
}</code></pre>
<h1>资源文件</h1>
<p><a href="https://pan.baidu.com/e/1rVtXfAZc44OR3R6HcM_w1g?pwd=ATFC">高级篇part9_资源文件</a></p>
<h1>视频教程</h1>
<p><a href="https://www.bilibili.com/video/BV1vL4y1L7Rv/?spm_id_from=333.999.0.0&amp;vd_source=8adc070117854dc6967b17bf3379321b">【高级篇】Part9_数值触摸输入演示</a></p>