Part10_字符串输入演示
<p>[TOC]</p>
<h1>功能描述</h1>
<p>字符串控件弹出输入框字符串输入
按钮控件配合控件响应消息进行字符串输入。</p>
<h4>接线方法</h4>
<p>如不需使用代码来直接打印操作信息,使用USB线为ATF模块提供电源即可。
代码测试部分需与Arduino控制器进行连接,RX-TX,GND-GND(用到了RX和TX串口)。</p>
<h4>实现功能</h4>
<p>字符控件若想实现弹出输入框的输入功能,必须有字符输入框资源项的支持。数值输入框资源项文件后缀为.sir。可在ATF_UITool工具里找到。
加载所需控件到资源列表后,打开需要控件的页面进行配置字符控件即可。
另一种方法可以靠添加合适的控件响应消息达成。
本例所需资源已在下方资源链接中准备好。</p>
<h4>温馨提示</h4>
<p>字符输入框资源项加载入资源文件后,必须在要使用它的界面里进行配置。否则字符控件无法正常弹出输入框。</p>
<h4>操作示例</h4>
<p>如不需第六步操作,可只为ATF模块提供电源即可测试效果。
1.仍使用ATF043模块,具体可参考之前的配置。
2.切换到资源列表加载所需控件资源,如图:
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=2a5b50742acb36f8dff8488897502d5c&amp;file=file.png" alt="" />
因为要演示中文字库的输入,所以加载一下中文字库,具体可看中级篇part4。
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=f1e736ac1ea3fbb39d666339fac2e05d&amp;file=file.png" alt="" />
3.设置字库,本例会显示中西文两种,所以两种都设置一下。
4.打开需要字符输入控件的界面,配置字符输入控件,字符串输入框的配置有两处字库设置,可在测试时查看具体效果,如图:
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=d540633a60805146119b6333d4e7948a&amp;file=file.png" alt="" />
5.配置两个字符串控件100和101,100控件类型选择中英文字符,101控件仅显示,具体配置如图:
100:需要配置字库
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=44e07b5aed0f8a4753976ed8486f4e18&amp;file=file.png" alt="" />
101:
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=afb7e0340cb6ccb37714d49054021cfa&amp;file=file.png" alt="" />
6.为101添加一些区域控件,用控件响应消息更改101控件内容,可使用复制功能快速添加控件,可使用上方按钮将区域控件按钮调整整齐,如图:
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=c140e7a00b108fc70849935d9106c6f5&amp;file=file.png" alt="" />
控件响应消息的添加详见part8。
*6.可在本页面添加字符串字节打印区,配合下方程序进行测试。</p>
<h1>使用代码</h1>
<p>本次代码在part6代码基础上更改。</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==101)
{
Serial.print(&quot;\r&quot;);
Serial.print(&quot;ID&quot;);
Serial.print(m_ReciverBodyID);
Serial.print(&quot; Input:&quot;);
Serial.print(m_ReciverVarString);
}
if(m_ReciverBodyID==109)
{
Serial.println(&quot;@READ 101&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/10nJPJyPRRJv756IxTQ2zvw?pwd=ATFC">高级篇part10_资源文件</a></p>
<h1>视频教程</h1>
<p><a href="https://www.bilibili.com/video/BV1Ca41147NA/?spm_id_from=333.999.0.0&amp;vd_source=8adc070117854dc6967b17bf3379321b">【高级篇】Part10_字符串输入演示</a></p>