硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3992|回复: 4
收起左侧

[STM32MP] 使用glade3工具在STM32MP157C-DK2上界面开发

[复制链接]

1

主题

2

回帖

5

积分

新手上路

积分
5
发表于 2020-3-3 21:37:44 | 显示全部楼层 |阅读模式
年前申请了一块stm32mp157开发板,工作之余研究了一下。STM32MP1多核微处理器,带有650Mhz主频的cortex-A7双核以及一个主频为209Mhz的cortex-M4核。很适合需要上linux系统,同时又需要一些实时需求场合的项目。拿到开发板按官方wiki教程(https://wiki.st.com/stm32mpu)一步一步操作。烧录了openstlinux-4.19系统。系统启动后进入主界面。

1583228762895.jpg

图形界面是基于GTK+的,之前在Ubuntu上接触过。使用glade3工具很方便开发出一些小工具。于是想用glade3开发界面编译后在stm32mp157开发板上运行。试了下还真可以。我开发环境是ubuntu16.04

glade3使用教程自行百度下,也不难上手。工具界面如下:
18081537_9GR3.png

代码编写完后下载到开发板子
1583228795856.jpg 1583228849165.jpg
代码如下:
#include <gtk/gtk.h>
#include <string.h>

//全局变量
GtkWidget *g_text_view;
GtkTextBuffer *g_buffer;
GtkTextIter *g_Iter;

//我们在UI中,为button1添加的点击函数
static void button1_clicked_cb(GObject *object, gpointer user_data)
{
        const gchar *text = "How are you!";
        GtkTextIter start,end;

        gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(g_buffer), &start,&end);        /*获得缓冲区开始和结束位置的Iter*/
        gtk_text_buffer_insert(GTK_TEXT_BUFFER(g_buffer), &start, text, strlen(text));        /*插入文本到缓冲区*/
        // g_print(user_data);
        // g_print("\n");
}

//我们在UI中,为button1添加的点击函数
static void button2_clicked_cb(GObject *object, gpointer user_data)
{
        g_print(user_data);
        g_print("\n");
}

// static void gtk_main_quit(GObject *object, gpointer user_data)
// {

// }

int main(int argc, char *argv[])
{
        GObject *button1, *button2;  
        GtkBuilder *builder;
        GtkWidget *window;
        // GtkWidget *textView1;        
        // GtkTextBuffer *buffer;

        //1.gtk初始化                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
        gtk_init(&argc,&argv);

        //2.创建GtkBuilder对象,GtkBuilder在<gtk/gtk.h>声明
        builder = gtk_builder_new();

        //3.读取test.glade文件的信息,保存在builder中
        if ( !gtk_builder_add_from_file(builder,"test1.glade", NULL)) {
                printf("connot load file!");
        }

        //4.获取窗体指针,注意"window1"要和glade里面的标签名词匹配
        window = GTK_WIDGET(gtk_builder_get_object(builder,"window1"));
        button1 = gtk_builder_get_object(builder, "btn1");
        button2 = gtk_builder_get_object(builder, "btn2");
        g_text_view = GTK_WIDGET(gtk_builder_get_object(builder, "textview1"));

        //测试TextView
        g_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(g_text_view)); /*获得文本框缓冲区*/

        //手动连接信号
        // g_signal_connect(GTK_OBJECT(window),”destroy”,G_CALLBACK(gtk_main_quit),NULL);
        g_signal_connect(button1, "clicked", G_CALLBACK(button1_clicked_cb), "press button1");
        g_signal_connect(button2, "clicked", G_CALLBACK(button2_clicked_cb), "press button2");
        // gtk_builder_connect_signals (builder, NULL);//连接响应事件

        g_object_unref(G_OBJECT(builder));  //释放xml内存空间

        gtk_widget_show_all(window);

        gtk_main();

        return 0;
}

测试程序实现的功能比较简单,两个按键和一个文本框。key1触发文本框显示一次 How are you!。key2在终端显示press button2。
完整工程在附近中。

test3.rar

13.76 KB, 下载次数: 2

评分

参与人数 1金币 +100 收起 理由
eric2013 + 100 赞一个!

查看全部评分

回复

使用道具 举报

3

主题

1222

回帖

1231

积分

至尊会员

积分
1231
发表于 2020-3-3 22:27:45 | 显示全部楼层
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106590
QQ
发表于 2020-3-4 00:43:25 | 显示全部楼层
感谢分享。
回复

使用道具 举报

2

主题

103

回帖

109

积分

初级会员

积分
109
发表于 2020-3-4 09:59:41 | 显示全部楼层
感谢楼主分享,不过还是建议用QT来搞吧,相对用的人多一些。
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2021-3-4 13:53:56 | 显示全部楼层
厉害                 
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-26 02:07 , Processed in 0.171131 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表