文档章节

SL4A、QPython学习笔记(2)

泊松
 泊松
发布于 2014/03/23 19:54
字数 844
阅读 3179
收藏 3

SL4A下使用Python WEB框架;

QPython之WEB APP的前后端通讯问题;

ANDROID设备与PC等的数据通讯的Python解决方案;

这一次对上述这些问题进行了一番钻研与实验,结论如下:

1. SL4A下使用Python WEB框架

SL4A中也可以像在QPython中那样使用Python web框架制作server,至少,使用单文件/模块web框架bottle十分容易。详见 http://www.marginhound.com/using-bottle-py-and-sl4a-to-build-an-android-web-server-for-your-phone-tablet/

2. QPython之WEB APP的前后端通讯问题

SL4A下存在一个前后端互送事件与数据的机制,但QPython中这个机制尚未实现,或者是个bug,我在QPython社区提了相关问题,从反馈看,QPython的研发者对这个问题模棱两可。我认为这是QPython应该解决的一个首要问题,只恨自己没那个技术,否则必定动手尝试修正。

至于为什么强调这个功能,ANDROID的webview目前不支持从服务器推送事件(server sent events)与WebSocket,所以,在QPython中,javascript前端只能周期轮询或者是采用一种称为long polling的方式,也就是异步模式中处理完一个response后再送出一个request。以如下Python服务器、VBA客户端代码演示其原理:

#Python server
from bottle import route, run
from random import randint
import time
@route("/")
def hello():
    time.sleep(randint(1,6))
    c = str(randint(1,300)) + "\n"
    return c
run(host='localhost', port=8080)

'VBA client
Private WithEvents hr As WinHttpRequest
'-----------------------------------------
Private Sub CommandButton1_Click()
Set hr = New WinHttpRequest
hr.Open "GET", "http://localhost:8080/", True
hr.send
End Sub
'-----------------------------------------
Private Sub hr_OnResponseFinished()
Debug.Print hr.responseText
hr.send
End Sub

如果上述问题能解决,界面更加友好一些,QPython有望成为一个Android平台上真正强有力的Python IDE。


3. ANDROID设备与PC等其他设备数据通讯的Python解决方案

不知道这个话题价值如何,只是突然好奇,尝试将Android设备收集的数据实时输送到PC。首先尝试了蓝牙,没搞定Android端的蓝牙串口服务,作罢。不过,尝试在Excel下用VBA读串口,从蓝牙GPS读数据成功,代码如下:

Private onoff As Boolean
Private fso As New FileSystemObject
Private ts As TextStream
'-----------------------------
Private Sub CmdBtnOpenRead_Click()
Dim gdata
onoff = True
Set ts = fso.OpenTextFile("COM6", ForReading)
Do While Not ts.AtEndOfStream
DoEvents
TextBox1.Text = TextBox1.Text & ts.ReadLine & vbCrLf
If onoff = False Then Exit Do
Loop
ts.Close
End Sub
'---------------------------------
Private Sub CmdBtnClose_Click()
onoff = False
End Sub

之后,尝试基于WLAN局域网Http服务器/客户端的方案。至于WLAN路由的问题,方法很多,除了路由器(独立路由器,电脑端的USB路由器之类的),也可以使用Android设备的WLAN热点(AP)功能来实现,关键是取得服务器端的IP地址,在使用Android无线AP的情况下,使用用netcfg命令查询AP的IP地址(在QPython下,console中输入netcfg),我查到的是192.168.43.1,据网上资料,这个是AP的默认ip。

如下是一段示例代码,在QPython中实现的一个提供罗盘方位角数据的server:

#qpy:console
from bottle import route, run
import androidhelper
import time
droid = androidhelper.Android()
droid.startSensingTimed(1, 250)
@route("/azimuth", method="GET")
def default():
    s6data = droid.sensorsReadOrientation().result
    if len(s6data)>0:
        return str(s6data[0])
run(host='192.168.43.1', port=8080)
droid.stopSensing()

客户端设备无线接入局域网,请求http://192.168.43.1:8080/azimuth,取得方位角弧度。


© 著作权归作者所有

泊松
粉丝 5
博文 2
码字总数 2607
作品 0
洛阳
私信 提问
SL4A、QPython学习笔记

耐着性子钻研了一下sl4a与QPython之类,取得了些经验,汇报如下: 本文使用的apk安装包如下: QPython: QPython70.apk;sl4a+Python:sl4ar6.apk;PythonForAndroidr4.apk。安装与使用方法十分...

泊松
2014/03/16
12.4K
1
QPython —— Android 上运行 Python 脚本引擎

QPython是一个在Android上运行Python脚本引擎,他整合了Python解释器、Console、编辑器和SL4A库。可以让你在Android设备上运行Python语言开发的程序。它就是Android上的Python!...

oschina
2016/06/02
292
0
python代码让android手机实现监控功能

百度搜索"qpython",点击qpython官网。 《QPython》是一个脚本引擎,他整合了Python解释器、Console、编辑器和SL4A库。可以让你在Android设备上运行Python语言开发的程序。它就是Android上的...

triangle_line
2018/04/11
1K
0
使用Python开发Android应用程序(3): 在电脑上编写程序在手机上运行

本节目录 1. 一些传统的方法 2. 将程序的代码生成二维码图片 3. 使用手机扫描生成的二维码,并将其转化为py脚本 前言 最手机上写脚本是一件每场辛苦的事情,虽然SL4A人性化的为我们提供了API快...

无鸯
2011/09/22
7.5K
0
qpython怎么安装一个叫dulwich的模块

在用qpython运行一个项目时,出现错误缺少一个dulwich模块,用qpython里面的pip下载安装dulwich的时候出现问题 怎么破,求大神指点

scymore
2016/07/26
442
1

没有更多内容

加载失败,请刷新页面

加载更多

CSS--列表

一、列表标识项 list-style-type none:去掉标识项 disc:默认实心圆 circle:空心圆 squire:矩形 二、列表项图片 list-style-img: 取值:url(路径) 三、列表项位置 list-style-position:...

wytao1995
今天
4
0
linux 命令-文本比较comm、diff、patch

本文原创首发于公众号:编程三分钟 今天学了三个文本比较的命令分享给大家。 comm comm 命令比较相同的文本 $ cat charabc$ cat chardiffadc 比如,我有两个文件char和chardiff如上,...

编程三分钟
今天
7
0
QML教程

https://blog.csdn.net/qq_40194498/article/category/7580030 https://blog.csdn.net/LaineGates/article/details/50887765...

shzwork
今天
5
0
HA Cluster之5

对于使用heartbeat v2版的CRM配置的集群信息都是保存在一个名为cib.xml的配置文件中,存放在/var/lib/heartbeat/crm/下。CIB:Cluster Information Base,由于xml文件配置不是那么方便,所以...

lhdzw
今天
6
0
玩转Redis-Redis基础数据结构及核心命令

  《玩转Redis》系列文章主要讲述Redis的基础及中高级应用,文章基于Redis5.0.4+。本文主要讲述Redis的数据结构String,《玩转Redis-Redis基础数据结构及核心命令》相关操作命令为方便对比...

zxiaofan666
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部