0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术在低成本工控主板上开发Java图形应用程序

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-02-06 11:17 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

随着互联网技术的快速发展,Java语言以其简单可靠,安全性高,可移植性强等特点得到极大普及,长期占据编程语言排行榜第一的位置,特别是在嵌入式领域得到了越来越多的应用。为了满足客户在嵌入式主板上运行Java程序的需求,英创公司在ESM335x、ESM6800等主流产品型号中移植了针对嵌入式Linux的JRE(Java Runtime Environment),以支持常规的Java通讯、控制类程序的运行。JRE的运行需要占用的内存超过100MB,英创公司的低成本嵌入式主板ESM6800H和ESM6800V即可满足Java虚拟机对硬件环境的要求。进一步,ESM6800H和ESM6800V这二款型号的主板还可以支持X11图形系统。在X11图形系统的环境中,就可以直接通过Java的图形用户接口实现图形界面的开发,其开发过程类似于WinCE+C#,这样就弥补了ESM6800没有WinCE系统,从而不能使用C#开发界面的遗憾。

Java的图形用户接口可以让用户构建一个通用的界面,使其在所有平台上都能正常显示,Java构建界面要使用抽象窗口工具包AWT(Abstract Window Toolkit)和Swing。Swing可以看作是AWT的改良版,而不是代替AWT,是对AWT的提高和扩展。所以,在实现界面的程序中,Swing和AWT都要用到,它们共存于Java基础类(Java Foundation Class,JFC)中。用户通过英创公司提供的eclipse软件就能够完成图形界面程序的开发。环境搭建的详细方法可以参考文章:《英创主板JAVA应用开发简介》。本文主要简要介绍何如使用Java实现图形界面。

Java的图形接口组件按其作用可分为基本组件(Component)和容器(Container)两大类:基本组件,不能容纳其他组件,如按钮、文本框等图形界面元素。容器可以用来容纳其他的组件,如窗口、对话框等,下面是常用组件的列表。

组件名称 组件简介
JTextField 单行文本框,为用户处理输入信息
JTextArea 多行文本框,为用户处理输入信息
JButton 按钮类,为用户提供具有文本和图标的按钮
JLabel 标签,为用户提供包含说明性文本和图标
JCheckBox 复选框,为用户提供多项选择
JRadioButton 单选按钮,为用户提供单项选择
JComboBox 组合框,为用户提供下拉菜单
JPasswordField 密码框,允许输入单行密码,密码框默认回显字符是“*”

图形窗口一般是上述各个组件的承载体,处于非常重要的位置,在JAVA中常用的窗体包括JFrame和JDialog这两种形式。

窗体名称 简介
JFrame 框架窗口,它支持窗口周边的框架、标题栏,以及最小化、最大化和关闭按钮
JDialog 对话框基类,为用户提供构造并管理通用对话框

我们以串口通讯为例,通过Java实现一个简单的串口测试界面。

窗口是图形界面的基础,所有用户设计的可视组件都是放在窗口中的,所以首先我们需要构建一个窗口,下面我们就使用框架窗口(JFrame)来构建一个窗口对象:

public class MainGui extends JFrame {

public MainGui() {

setSize(800, 480);

setTitle("串口测试程序");

setLocationRelativeTo(null);

setDefaultCloseOperation(MainGui.EXIT_ON_CLOSE);

setVisible(true);

}

}

我们给窗口取名为“串口测试程序”,接下来我们在串口上增加提供打开串口操作、关闭串口操作和发送数据的按钮,按钮(JButton)在界面中用于触发动作事件,按钮上可以显示文本,当按钮动作时,能触发动作事件,按钮动作事件的相关接口类是ActionListener, 构建按钮的部分代码如下:

class RightPanel extends JPanel {

public RightPanel() {

this.setLayout(new GridLayout(13, 1, 0, 5));

JButton button_open = new JButton("打开串口");

JButton button_write = new JButton("发送");

JButton button_close = new JButton("关闭串口");

button_open.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

mes = tty + ":" + baud + "-8-1-0";

exitflag = true;

if(Serial_Port.openport(mes.toString()) == -1)

JOptionPane.showMessageDialog(null,"open fail!","消息框",JOptionPane.YES_OPTION);

button_open.setEnabled(false);

button_write.setEnabled(true);

button_close.setEnabled(true);

}

});

button_write.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

String strs = textPane.getText();

String send_buf = ToolsFunc.formatHexString(strs);

System.out.print(send_buf.length());

if(send_buf.length() > 1)

{

System.out.println(send_buf);

Serial_Port.writeport(strs);

}

}

});

button_close.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

Serial_Port.closeport();

button_open.setEnabled(true);

button_write.setEnabled(false);

button_close.setEnabled(false);

}

});

add(button_open);

add(button_write);

add(button_close);

button_open.setEnabled(true);

button_write.setEnabled(false);

button_close.setEnabled(false);

}

}

接下来我们为串口的接受和发送的数据添加两个显示区域,可以选择文本框(JTextField)和文本区(JTextArea)来实现,文本框与文本区的主要区别是文本区可存放多行文本。在这里我们选用文本区来实现,并用GridBagLayout进行两个文本区的布局管理,构建文本区的部分代码如下:

class CenterPanel extends JPanel {

public CenterPanel() {

GridBagLayout layout = new GridBagLayout();

GridBagConstraints s= new GridBagConstraints();

this.setLayout(layout);

textField = new JTextArea(20, 50);

textField.setTabSize(4);

textField.setLineWrap(true);

textField.setEditable(false);

JScrollPane jscrollPane = new JScrollPane(textField);

textPane = new JTextArea(1, 50);

textPane.setCursor(new Cursor(Cursor.TEXT_CURSOR));

JScrollPane jscrollPane_1 = new JScrollPane(textPane);

textPane.setLineWrap(true);

this.add(jscrollPane);

this.add(jscrollPane_1);

s.gridwidth=0;

s.weightx = 0.5;

s.ipady = 320;

s.ipadx = 640;

s.weighty=0.8;

layout.setConstraints(jscrollPane, s);

s.gridwidth=0;

s.weightx = 0.5;

s.ipady = 10;

s.weighty=0.1;

layout.setConstraints(jscrollPane_1, s);

}

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11628

    浏览量

    217972
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6107

    浏览量

    36950
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CW32L010低成本BLDC电机控制开发套件的使用

    [tr][td]CW32L010ESC_Driver电机驱动板是武汉芯源科技推出的一款低成本BLDC无刷直流电机开发板。开源硬件平台可以查看该项目的详情。 https
    发表于 11-17 07:39

    3A6000四核龙芯工控主板,推动信工控深度融合

    当今信科技快速发展,技术的不断演进和市场需求的变化,工控领域也进行源源不断地创新,其中最引人注目的是国产龙芯
    的头像 发表于 11-14 09:10 206次阅读

    工控主板的设计特性

    工业自动化、智能装备、物联网等领域,工控主板作为核心控制单元,其设计质量直接决定了整个系统的稳定性、可靠性与运行效率。与消费级主板不同,工控
    的头像 发表于 11-13 08:58 292次阅读
    <b class='flag-5'>工控</b><b class='flag-5'>主板</b>的设计特性

    新时代的硬核基石:龙芯工控主板助力信产业新基建

    在数字技术重塑产业格局的今天,信产业已成为保障国家信息技术安全的核心战略。作为工业自动化系统的大脑,工控主板的自主可控程度直接决定信创新基
    的头像 发表于 11-05 13:54 132次阅读

    工控主板的三大核心技术

    工业自动化的浪潮中,工控主板如同“工业大脑”的核心载体,支撑着各类设备的稳定运行与智能升级。相较于消费级主板工控
    的头像 发表于 10-16 11:05 229次阅读

    智慧新核心,龙芯主板助力信体系再升级

    信息技术飞速发展的当下,信体系的自主可控与创新升级已成为国家战略层面的关键任务。作为信产业发展的重要基础硬件支撑,国产工控
    的头像 发表于 08-11 09:14 565次阅读

    飞腾主板为信产业发展提高硬实力

    信息技术飞速发展的当下,信产业已成为我国实现科技自立自强、保障国家信息安全的关键领域。信,即信息技
    的头像 发表于 07-22 18:20 560次阅读

    科普|信是什么?一文读懂“信息技术应用创新”战略

    什么是信?信,即“信息技术应用创新”,是国家推动IT系统自主可控、安全可控的重要战略工程。它不仅是技术层面的创新,更承载着保障国家网络安全、推动产业升级和实现数字主权的重任。简单来
    的头像 发表于 06-13 10:06 6298次阅读
    科普|信<b class='flag-5'>创</b>是什么?一文读懂“<b class='flag-5'>信息技术</b>应用创新”战略

    浪潮下,国产主板有什么新的发展机遇?

    信息技术应用创新浪潮的推动下,国产主板迎来了诸多新的发展机遇。信产业旨在实现信息技术领域的自主可控,这一战略目标为国产
    的头像 发表于 05-09 09:24 566次阅读
    信<b class='flag-5'>创</b>浪潮下,国产<b class='flag-5'>主板</b>有什么新的发展机遇?

    Java开发者必备的效率工具——Perforce JRebel是什么?为什么很多Java开发者在用?

    Perforce JRebel是一款Java开发效率工具,旨在帮助java开发人员更快地编写更好的应用程序。JRebel可即时重新加载对代码
    的头像 发表于 04-27 13:44 648次阅读
    <b class='flag-5'>Java</b><b class='flag-5'>开发</b>者必备的效率工具——Perforce JRebel是什么?为什么很多<b class='flag-5'>Java</b><b class='flag-5'>开发</b>者在用?

    基于QT开发国产主板终端桌面程序 高效、稳定、跨平台的解决方案

    开发者们面临的一个重要挑战。本文将介绍如何基于QT框架,开发适用于国产主板的终端桌面程序,并探讨其优势和应用场景。 QT是一个跨平台的C++图形
    的头像 发表于 01-08 15:34 1443次阅读

    工业级主板工控主板的区别?

    工业领域,主板的重要性是被无限放大的。大型工厂里日夜不停运转的自动化生产线、精准控制的智能电网系统、以及极端环境下依然稳定采集数据的石油勘探设备,它们背后都依靠着工业级
    的头像 发表于 01-02 10:01 841次阅读

    SSM框架在Java开发中的应用 如何使用SSM进行web开发

    SSM框架,即Spring、SpringMVC和MyBatis的整合,是Java Web开发中常用的技术栈。它通过分层架构,实现了视图、控制、业务逻辑和数据访问的分离,提高了代码的可维护性和可扩展性
    的头像 发表于 12-16 17:28 2131次阅读

    3A4000国产工控主板,成为推动信事业发展的“芯”力量

    在当今数字化时代,信息技术的应用至关重要,它能够优化生产流程、提高资源利用率、降低成本和排放,从而提升企业的生产效率和经济效益。通过自动化、数据分析、智能化等技术手段,企业可实现生产过程的全面监控和优化,提高产品质量。
    的头像 发表于 12-09 09:25 659次阅读