XIVN1987 发表于 2018-2-3 12:54:14

分享一个Web版的串口助手

本帖最后由 XIVN1987 于 2018-2-3 14:49 编辑

之前分享过一个PyQt版的串口助手:分享Python实现的串口助手,可显示波形、有源码!!

跟帖中有坛友说想要个Web版的,,正好周末没事儿,所以就做了个简单的Demo{:lol:}




只需要安装Python3.6、pyserial,双击main.py,然后在浏览器中输入 http://localhost:8080/ 即可看到界面

还可以在树莓派上运行这个程序,然后在笔记本浏览器里就可以控制树莓派的串口了{:lol:}

XIVN1987 发表于 2018-2-7 23:38:52


之前上传的程序只在Windows上跑通了,,在NanoPi上跑了下发现不少问题,修改后终于可以用了,,效果如下:


在NanoPi上运行的方法在main.py最下面的注释中有详细说明,如下:

只需要将下面两行替换上面两行,,并如说明中说到的把sers的值修改了即可

修改好的程序:

tim 发表于 2018-2-3 13:00:04

树莓派上运行这个程序,手机浏览器控制树莓派的串口也可以吧?

XIVN1987 发表于 2018-2-3 13:02:06

tim 发表于 2018-2-3 13:00
树莓派上运行这个程序,手机浏览器控制树莓派的串口也可以吧?


可以啊,只要是浏览器就可以打开这个页面

如果树莓派有public IP,那只要有互联网任何地方都可以访问!!

casterbn 发表于 2018-2-3 13:39:56

C:\WebSER>main.py
Traceback (most recent call last):
File "C:\WebSER\main.py", line 14, in <module>
    from serial import Serial
ImportError: No module named serial

python 是2.6不行吗?

XIVN1987 发表于 2018-2-3 13:46:33

casterbn 发表于 2018-2-3 13:39
C:\WebSER>main.py
Traceback (most recent call last):
File "C:\WebSER\main.py", line 14, in


额,我上面说错了,,需要安装pyserial包,,另外必须python3,我用的3.6

casterbn 发表于 2018-2-3 21:30:49

XIVN1987 发表于 2018-2-3 13:46
额,我上面说错了,,需要安装pyserial包,,另外必须python3,我用的3.6

哦哦{:smile:}

web110 发表于 2018-2-3 22:54:27

搞个服务器版本的,大家一起玩玩

wzavr 发表于 2018-2-3 23:49:58

python花样好多,好像很好玩的样子

ronic 发表于 2018-2-4 03:12:26

楼主厉害,能玩

duxingkei 发表于 2018-2-4 08:52:56

里面的http服务模块和flask好像,感觉更加好用哦!

avr-arm 发表于 2018-2-4 10:08:42

本帖最后由 avr-arm 于 2018-2-4 10:18 编辑

666!就喜欢这种的,收藏了,可以放到板子中跑,再搞个内网穿透,就全世界各地“远程”调试了

linhao1581 发表于 2018-2-4 10:08:44

这个有创意,很有意思

ericdai 发表于 2018-2-4 10:30:34

webserial,风靡世界

lyping1987 发表于 2018-2-4 10:31:35

这就是Python强大威力的地方啊

lanfeng0107 发表于 2018-2-4 10:35:25

牛了,学习!

qiuchen 发表于 2018-2-4 11:41:46

楼主牛,我要拿出我的树莓派来玩玩了

eliterxzgxu 发表于 2018-2-4 19:44:00

感谢楼主分享

喵叔不吃鱼 发表于 2018-2-4 19:52:07

厉害厉害!

bigrocks 发表于 2018-2-4 22:16:51

下载学习,谢谢

bigrocks 发表于 2018-2-4 22:17:15

本帖最后由 bigrocks 于 2018-2-4 22:18 编辑

楼主你好,我在学习你的代码,我的系统版本是ubuntu16.04,python版本是3.6.2,安装过pyserial,运行python3 main.py的时候,报错,
Traceback (most recent call last):
File "main.py", line 101, in <module>
    ser = SerialServer(websocket_server_port=9978)
File "main.py", line 42, in __init__
    self.ws = WebsocketServer(port=websocket_server_port)
File "/home/iten/WebSER/websocket_server.py", line 123, in __init__
    TCPServer.__init__(self, (host, port), WebSocketHandler)
File "/usr/lib/python3.6/socketserver.py", line 453, in __init__
    self.server_bind()
File "/usr/lib/python3.6/socketserver.py", line 467, in server_bind
    self.socket.bind(self.server_address)
请问是什么问题?

XIVN1987 发表于 2018-2-4 22:26:28

bigrocks 发表于 2018-2-4 22:17
楼主你好,我在学习你的代码,我的系统版本是ubuntu16.04,python版本是3.6.2,安装过pyserial,运行python ...


报错信息不全,看不出来,,

看着像是端口被占了,,或者你没权限操作端口??用管理员权限试试

bigrocks 发表于 2018-2-4 22:39:59

XIVN1987 发表于 2018-2-4 22:26
报错信息不全,看不出来,,

看着像是端口被占了,,或者你没权限操作端口??用管理员权限试试 ...

我用的就是管理员权限,win7下也报错,
$ python main.py
Bottle v0.12.13 server starting up (using WSGIRefServer())...
Listening on http://localhost:8080/
Hit Ctrl-C to quit.

Exception in thread Thread-2:
Traceback (most recent call last):
File "C:\Program Files\Python36\lib\threading.py", line 916, in _bootstrap_inn                                                                                                                er
    self.run()
File "C:\Program Files\Python36\lib\threading.py", line 864, in run
    self._target(*self._args, **self._kwargs)
File "main.py", line 84, in ser_receive
    if self.ser.is_open:
AttributeError: 'Serial' object has no attribute 'is_open'

Traceback (most recent call last):
File "D:\WebSER\bottle.py", line 3123, in run
    server.run(app)
File "D:\WebSER\bottle.py", line 2781, in run
    srv = make_server(self.host, self.port, app, server_cls, handler_cls)
File "C:\Program Files\Python36\lib\wsgiref\simple_server.py", line 153, in ma                                                                                                                ke_server
    server = server_class((host, port), handler_class)
File "C:\Program Files\Python36\lib\socketserver.py", line 453, in __init__
    self.server_bind()
File "C:\Program Files\Python36\lib\wsgiref\simple_server.py", line 50, in ser                                                                                                                ver_bind
    HTTPServer.server_bind(self)
File "C:\Program Files\Python36\lib\http\server.py", line 136, in server_bind
    socketserver.TCPServer.server_bind(self)
File "C:\Program Files\Python36\lib\socketserver.py", line 467, in server_bind
    self.socket.bind(self.server_address)
OSError: 以一种访问权限不允许的方式做了访问套接字的尝试

但是我win7和ubuntu都是用的管理员账户
哎,哪里设置错误呢

XIVN1987 发表于 2018-2-4 22:51:22


AttributeError: 'Serial' object has no attribute 'is_open'

这个问题应该是pyserial版本的问题,2.x版本里没有is_open,只有isOpen(),,你可以更新下pyserial版本,,或者把is_open都改成isOpen()试试


OSError: 以一种访问权限不允许的方式做了访问套接字的尝试

这个查了下都说是端口被占了,你改下程序用的端口试试,比如改成8081,注意改了这个访问的网址也要改成http://localhost:8081/
另外也可能是你的防火墙把8080端口改禁止了,,或者python.exe不是以管理员权限运行的

ele-madman 发表于 2018-2-4 23:19:13

楼主,请教一下,web后台是用啥写的,怎么调用python

XIVN1987 发表于 2018-2-4 23:26:45

ele-madman 发表于 2018-2-4 23:19
楼主,请教一下,web后台是用啥写的,怎么调用python


用的单文件的web framework bottle,,网址:http://www.bottlepy.org/docs/0.12/

zjy9430 发表于 2018-2-6 08:59:42

楼主真能玩,把Python玩出花来了{:lol:}

llysc 发表于 2018-2-6 09:02:50

厉害了,楼主~~~~~~~~~

myxiaonia 发表于 2018-2-6 11:59:07

一直想学python,,,没有使用的地方,学不起来怎么办

XIVN1987 发表于 2018-2-6 12:10:11

myxiaonia 发表于 2018-2-6 11:59
一直想学python,,,没有使用的地方,学不起来怎么办


没地方用肯定学不起来,不用强迫自己,,

比如我学嵌入式Linux也学不起来,因为没地方用,,买过十多个Linux的开发板、都是不到一个月就半价处理了,到如今都还没入门呢{:dizzy:}

不过作为单片机工程师的话,不可能一点儿上位机的需求都没有,,所以上位机编程肯定要学一个的,Python、C#、JAVA、NodeJS、VB、Delphi甚至Labview、Matlab都有坛友在用做上位机编程语言,,选一个自己喜欢用的即可。。

另外一般来说有一个用就够了,毕竟又不是专业开发上位机程序的,也没必要学好几个,,

dengkong 发表于 2018-2-6 12:32:46

一直想把常用的小工具,搞成web版放虚拟主机上,再也不怕那些个老软件系统不兼容{:titter:}{:titter:}{:titter:}

楼主有心了,谢谢

huangqi412 发表于 2018-2-6 12:59:14

这个版本够方便

huy666 发表于 2018-2-6 20:11:10

为什么我下载提示有危险,因此chrome已将其拦截? 只能点击放弃 。

huy666 发表于 2018-2-6 20:22:26

换ie可以了

leicai05 发表于 2018-2-8 08:01:43

厉害啊,向你学习。

gmyu 发表于 2018-2-8 08:38:09

为了把note3余热发挥,前一段时间玩了玩Qpython+kivy,蓝牙和USB串口都很好用。就是现在不知怎么在win下编译成APK。

vipcff 发表于 2018-2-8 09:03:55

本帖最后由 vipcff 于 2018-2-8 09:05 编辑

我在PYTHON2.7.14 +win7 下测试楼主最新的版本 运行也没有报错
目前没有串口硬件测试。
感谢楼主的无私奉献

XIVN1987 发表于 2018-2-8 09:36:21

gmyu 发表于 2018-2-8 08:38
为了把note3余热发挥,前一段时间玩了玩Qpython+kivy,蓝牙和USB串口都很好用。就是现在不知怎么在win下编 ...


以前也玩儿过QPython+Kivy,,

希望QPython越来越成熟吧,早日达到比较完善的程度

proteldxp 发表于 2018-2-8 22:54:22

web前端一直不会写{:cry:}

ericdai 发表于 2018-2-10 10:10:57


非常好用,感谢楼主

ericdai 发表于 2018-2-10 10:14:59

运行一段时间会爆错

XIVN1987 发表于 2018-2-10 10:45:02

ericdai 发表于 2018-2-10 10:14
运行一段时间会爆错


额,从这个报错上看不出问题的原因,,我晚上回去试试看能不能重现{:handshake:}

MAD_FISH 发表于 2018-7-14 08:42:34

LZ你前端用了bootstrap,element,这俩不都是UI框架吗,为什么要用两个?

XIVN1987 发表于 2018-7-14 08:53:00

MAD_FISH 发表于 2018-7-14 08:42
LZ你前端用了bootstrap,element,这俩不都是UI框架吗,为什么要用两个?

因为我不会前端开发,,如果不用这种框架,自己用HTML、CSS和JavaScript做出类似效果的话,,难度要高很多、而且要学很多东西、很长时间才能做到

MAD_FISH 发表于 2018-7-14 09:02:09

XIVN1987 发表于 2018-7-14 08:53
因为我不会前端开发,,如果不用这种框架,自己用HTML、CSS和JavaScript做出类似效果的话,,难度要高很 ...

不是我的意思是bootstrap和element这俩都是UI框架,重复了,应该用一个就可以

XIVN1987 发表于 2018-7-14 09:13:51

MAD_FISH 发表于 2018-7-14 09:02
不是我的意思是bootstrap和element这俩都是UI框架,重复了,应该用一个就可以 ...

偶,抱歉,,理解错了。。我好像用两个UI库各写过一遍,,看哪个更简单些,,

MAD_FISH 发表于 2018-7-14 09:44:26

XIVN1987 发表于 2018-7-14 09:13
偶,抱歉,,理解错了。。我好像用两个UI库各写过一遍,,看哪个更简单些,, ...

厉害,之前了解点html,js,但是看了你写的页面一点看不懂
搜了下,里面又是bootstrap有是element,vue啥的全是新知识,哎..

XIVN1987 发表于 2018-7-14 09:49:12

MAD_FISH 发表于 2018-7-14 09:44
厉害,之前了解点html,js,但是看了你写的页面一点看不懂
搜了下,里面又是bootstrap有是element,vue啥 ...

建议你学下bootstrap,比自己用HTML、css、js做界面简单,,就学下概念、然后用的时候复制教程里的演示代码然后修改就行

ericdai 发表于 2018-7-17 17:28:45

推荐给一个客户 他们喜欢的不得了,坐在办公室 可以调机了,可以考虑做成系列产品

ronic 发表于 2018-7-26 18:46:57

启动之后,怎么关掉呢

ronic 发表于 2018-7-26 19:02:21

大概是我没跑起来win7 64位,Unable to create process using "c:\python36\python.exe main.py"

ronic 发表于 2018-7-26 19:18:56

Access Error: 404 -- Not Found
Cannot locate document: /

xunke 发表于 2018-7-26 22:15:25

现在,在学HTML5,
请教HTML5怎样控制串口等硬件?

XIVN1987 发表于 2018-7-26 22:36:07

xunke 发表于 2018-7-26 22:15
现在,在学HTML5,
请教HTML5怎样控制串口等硬件?


这个我也不知道

我不是通过HTML5控制串口的,我是用Python控制串口,网页与后台的Python代码交互间接控制串口!!

lmhtz 发表于 2018-7-27 05:17:28

不错不错

zljcat3721 发表于 2018-8-22 13:54:03

我也做了一个wieb版的串口,与楼主不同的是基于esp8266的,esp8266建立web服务,通过websocket与模块串口通讯,来实现无线串口功能

XIVN1987 发表于 2018-8-22 17:36:54

zljcat3721 发表于 2018-8-22 13:54
我也做了一个wieb版的串口,与楼主不同的是基于esp8266的,esp8266建立web服务,通过websocket与模块串口通 ...


功能齐全、外观美观,,很赞!!

你ESP8266用什么写的程序??C、Lua、MicroPython??

zljcat3721 发表于 2018-8-27 14:55:48

用的esp8266原生sdk+arduino混编+javascript+H5,所有代码保存在esp8266内,
但esp8266内存不够用,一个H5页面不能超过15K超过了会有各种题,只能用原生js代码写,不能用框架
没有楼主用PyQt写方便,有些功用js实现比较困难,如传输hex文件功还没有实现
楼主是通网页操控电脑的串口,我是通过网页操控esp8266的串口
esp8266搞成一个简单web服务器(类似于路由器的界面),实现B/S架构对esp8266的操控,无需客户端,只要一个支持主流浏览器设备,就可以操作esp8266的串口了,硬件上与操作客户端完全隔离

connor888 发表于 2019-2-15 15:49:35

刚刚学会了pyqt的串口,就又来了web版的,想学习啊。。。请问是要怎么入门啊,从flask开始还是Django啊?

XIVN1987 发表于 2019-2-15 15:57:45

connor888 发表于 2019-2-15 15:49
刚刚学会了pyqt的串口,就又来了web版的,想学习啊。。。请问是要怎么入门啊,从flask开始还是Django啊? ...


如果只是顶楼这样简单的网页,,不要说flask、django,,就是单文件的bottle都够用了

做这种网页程序,,后端其实很简单,,麻烦的是前端,,尤其是对于我这种不懂前端的,,80%的时间都花费在前端了,,

前端建议用bootstrap或element-ui,,对不懂前端的比较友好,,
页: [1]
查看完整版本: 分享一个Web版的串口助手