WhyCan Forum

本站无需注册,无需积分,无需回复可下载所有资料,如果真的喜欢小站,请您注册之后请至少回复一个帖子激活Id,谢谢支持! 站长QQ: 516333132 (挖坑网/填坑网) admin@whycan.cn

您尚未登录。

#1 2019-01-14 22:09:53

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 6,164

mobaxterm ssh登录 vps, 运行littlevgl的模拟器, 终端居然能显示模拟器窗口, 请教是什么原理?

QQ20190114220711.png


mobaxterm ssh登录 vps, 运行littlevgl的模拟器, 终端居然能显示模拟器窗口, 请教是什么原理?



只执行了下面几个步骤:

git clone https://github.com/littlevgl/pc_simulator.git
cd pc_simulator
git submodule update --init
make
./demo

按我以往的认知, 以为ssh 运行sdl之类的程序, 会直接奔溃.

离线

#2 2019-01-15 14:27:53

Zodiac
会员
注册时间: 2018-11-28
累计积分: 17

Re: mobaxterm ssh登录 vps, 运行littlevgl的模拟器, 终端居然能显示模拟器窗口, 请教是什么原理?

在线

#3 2019-01-15 14:31:21

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 6,164

Re: mobaxterm ssh登录 vps, 运行littlevgl的模拟器, 终端居然能显示模拟器窗口, 请教是什么原理?

Zodiac 说:

多谢指教!

离线

#4 2019-01-15 14:39:20

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 6,164

Re: mobaxterm ssh登录 vps, 运行littlevgl的模拟器, 终端居然能显示模拟器窗口, 请教是什么原理?

20190115143537.png

果然是, 默认就勾上了 X11 Forwarding

离线

#5 2019-01-15 14:44:29

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 6,164

Re: mobaxterm ssh登录 vps, 运行littlevgl的模拟器, 终端居然能显示模拟器窗口, 请教是什么原理?

20190115144201.png

qtcreator, 还能这么玩

离线

#6 2019-01-15 14:51:58

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 6,164

Re: mobaxterm ssh登录 vps, 运行littlevgl的模拟器, 终端居然能显示模拟器窗口, 请教是什么原理?

如果不勾上

运行 qtcreator, 直接炸了:

root@ubuntu:~# qtcreator
QXcbConnection: Could not connect to display
Aborted (core dumped)
root@ubuntu:~#
root@ubuntu:~#
root@ubuntu:~#

运行 littlevgl demo(没有炸, 命令行正常, 不显示窗口):

root@ubuntu:/opt/pc_simulator# ./demo
used:   9928 ( 16 %), frag:   1 %, biggest free:  55520
used:   9928 ( 16 %), frag:   1 %, biggest free:  55520
used:   9928 ( 16 %), frag:   1 %, biggest free:  55520
used:   9928 ( 16 %), frag:   1 %, biggest free:  55520
used:   9928 ( 16 %), frag:   1 %, biggest free:  55520
used:   9928 ( 16 %), frag:   1 %, biggest free:  55520
used:   9928 ( 16 %), frag:   1 %, biggest free:  55520
used:   9928 ( 16 %), frag:   1 %, biggest free:  55520
used:   9928 ( 16 %), frag:   1 %, biggest free:  55520

离线

#7 2019-02-11 17:32:09

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 6,164

Re: mobaxterm ssh登录 vps, 运行littlevgl的模拟器, 终端居然能显示模拟器窗口, 请教是什么原理?

QQ20190211173114.png
ubuntu 14 不行



QQ20190211173123.jpg
ubuntu 16, 18 都可以



这是什么问题引起?

离线

#8 2019-02-13 08:25:01

Zodiac
会员
注册时间: 2018-11-28
累计积分: 17

Re: mobaxterm ssh登录 vps, 运行littlevgl的模拟器, 终端居然能显示模拟器窗口, 请教是什么原理?

一套py代码在不同OS版本上表现不同,多数是OS环境差异引起的。
从问题log来看,已经提示ubuntu 14的环境上,导入的matplotlib用了agg才出的问题。然而,该后端的确只支持写入文件,不支持屏幕绘制。
由此,估计问题是出在OS上,没有可用UI版本的agg。例如:Qt5Agg Qt4Agg Gtk3Agg GTK3Cairo TkAgg WxAgg。
或者是,部署matplotlib时默认为agg;需要导入后手动由代码指定一个可用UI的agg(前提:OS环境必须有相关lib)。

相关py调用,例如:matplotlib.use('GTK')

参考:
https://matplotlib.org/faq/usage_faq.html#what-is-a-backend
https://stackoverflow.com/questions/4930524/how-can-i-set-the-backend-in-matplotlib-in-python

在线

#9 2019-02-13 08:48:27

Zodiac
会员
注册时间: 2018-11-28
累计积分: 17

Re: mobaxterm ssh登录 vps, 运行littlevgl的模拟器, 终端居然能显示模拟器窗口, 请教是什么原理?

在matplotlib-3.0.2版的代码里发现如下内容:
该库会自行搜索OS上可用的agg后端,次序为,
for candidate in ["macosx", "qt5agg", "qt4agg", "gtk3agg", "gtk3cairo", "tkagg", "wxagg", "agg", "cairo"]:
那么,只要ubuntu 14 安装了可用的UIagg的库,似乎就能解决问题。

源码位于:https://pypi.org/project/matplotlib/#files

 
# Line892 @matplotlib/_init_.py
class RcParams(MutableMapping, dict):
    ...
    def __getitem__(self, key):
        ...
       elif key == "backend":
            val = dict.__getitem__(self, key)
            if val is rcsetup._auto_backend_sentinel:
                from matplotlib import pyplot as plt
                plt.switch_backend(rcsetup._auto_backend_sentinel)
# Line177 @matplotlib/pyplot.py
def switch_backend(newbackend):
    """
    Close all open figures and set the Matplotlib backend.

    The argument is case-insensitive.  Switching to an interactive backend is
    possible only if no event loop for another interactive backend has started.
    Switching to and from non-interactive backends is always possible.

    Parameters
    ----------
    newbackend : str
        The name of the backend to use.
    """
    close("all")

    if newbackend is rcsetup._auto_backend_sentinel:
        for candidate in ["macosx", "qt5agg", "qt4agg", "gtk3agg", "gtk3cairo",
                          "tkagg", "wxagg", "agg", "cairo"]:
            try:
                switch_backend(candidate)
            except ImportError:
                continue
            else:
                rcParamsOrig['backend'] = candidate
                return
    ....

在线

#10 2019-02-13 08:56:23

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 6,164

Re: mobaxterm ssh登录 vps, 运行littlevgl的模拟器, 终端居然能显示模拟器窗口, 请教是什么原理?

@Zodiac 后来那个问题解决了, 可能python3.5下的安装包不全引起,
python3(3.4.3) 安装 Tk 包 apt-get install python3-tk ,
再运行,然后x终端就有窗口了。

离线

#11 2019-04-02 15:59:30

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 6,164

Re: mobaxterm ssh登录 vps, 运行littlevgl的模拟器, 终端居然能显示模拟器窗口, 请教是什么原理?

2019-04-02_155334.png





这个 mobaxterm 软件功能强大, 几乎无可挑剔, 但是为什么不能做到自动检测串口呢?
每次重新插入CP2104/CH34x 都要重启软件, 不可忍受, 因为我一般还可能开着 ssh 连着服务器。

离线

#12 2019-04-02 17:23:20

Quotation
会员
注册时间: 2018-10-04
累计积分: 76

Re: mobaxterm ssh登录 vps, 运行littlevgl的模拟器, 终端居然能显示模拟器窗口, 请教是什么原理?

fq5.whycan.cn,fq,嗯,我们懂的 big_smile

离线

#13 2019-04-02 17:30:24

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 6,164

Re: mobaxterm ssh登录 vps, 运行littlevgl的模拟器, 终端居然能显示模拟器窗口, 请教是什么原理?

Quotation 说:

fq5.whycan.cn,fq,嗯,我们懂的 big_smile

千算万算,还是没想到暴露了。

离线

#14 2019-04-02 17:32:50

john78
会员
注册时间: 2018-07-19
累计积分: 111

Re: mobaxterm ssh登录 vps, 运行littlevgl的模拟器, 终端居然能显示模拟器窗口, 请教是什么原理?

神奇!WIN下能登陆,显示?

离线

#15 2019-04-02 17:41:12

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 6,164

Re: mobaxterm ssh登录 vps, 运行littlevgl的模拟器, 终端居然能显示模拟器窗口, 请教是什么原理?

john78 说:

神奇!WIN下能登陆,显示?

是的,这就是传说中的  X 终端

离线

页脚