ubuntu18.04环境下kivy+buildozer+PLC变量读写

安装kivy

用pip安装:
(版本为1.11.1)

pip3 install kivy

安装完成测试:

python3

>>>import kivy

如上则kivy安装成功
如上则kivy安装成功

安装并使用buildozer

1.安装buildozer

安装依赖项

sudo apt update

sudo apt install -y git zip unzip openjdk-8-jdk python3-pip autoconf libtool pkg-config zlib1g-dev libncurses5-dev libncursesw5-dev libtinfo5 cmake libffi-dev libssl-dev

pip3 install --user --upgrade Cython==0.29.19 virtualenv

添加环境变量

export PATH=$PATH:~/.local/bin/

初始化并编译

buildozer init

#在buildozer.spec中更改一些必要的元素,如:android API接口等

buildozer android debug deploy run

buildozer android debug 这一步是报错的核心,buildozer会将很多东西自动下载下来但会由于各种原因以及bug会产生各种各样的错误。这里罗列一些我遇到的问题。

报错整理

整理了三类常规的报错,其他报错可以在buildozer官网或者github上的相关问题中找到部分解答。
1.下载报错
python-for-android
下载这个包时,可能会因为网络原因导致下载中断报错。
解决办法:根据终端下载的地址或在github上找到python-for-android的对应的包自行下载。
接下来去buildozer.spec文件中进行修改:

    # (str) python-for-android git clone directory (if empty, it will be automatically cloned from github)
    p4a.source_dir =/home/jiang/buildozer/python-for-android
     
    # (str) python-for-android branch to use, defaults to master
    p4a.branch = master

(上述是我的spec文件)

gradle
与上述的python-for-android类似,官方给出的下载源限速十分严重,并随时可能中断。建议手动下载并模仿官方下载的格式命名文件及文件夹等。
(https://downloads.gradle-dn.com/distributions/gradle-6.4.1-all.zip)

2.缺少文件报错
aidl
缺少该包的原因不清楚。
我的解决方法是手动下载android studio,并将下载时自动配置好的aidl包复制到buildozer自动下载的目录下。

ndk
缺少ndk很大的一个可能是下载中断,但当他再次执行下载命令时,系统找到了以ndk命名的包并认为ndk已经被完全下载完毕。
因此其解决方法是当发现报错提示找不到ndk包的时,删除原先下载的ndk包并重新下载。另一种方法是通过android studio下载对应版本的ndk包并复制到相对应的目录下。

3.权限不够
./gradlew
buildozer android debug 在执行过程中会用到这样一步命令。而该命令需要在gradlew的目录下进行,但那个gradlew文件很可能缺少一定权限导致报错
例如:./gradlew CommandnotFound

cd /home/jiang/buildozer/.buildozer/android/platform/build-armeabi-v7a/dists/myapp__armeabi-v7a

chmod 777 gradlew

我需要配置的gradlew文件在上述目录下,因此需要给他权限。

电脑端与PLC通信

安装pyads
pip3 install pyads

import成功则安装成功

通信
import pyads
pyads.open_port()
pyads.set_local_address('169.254.15.226.1.1')
SENDER_AMS = '169.254.15.226.1.1'
PLC_IP = '169.254.64.20'
USERNAME = 'Administrator'
PASSWORD = '1'
ROUTE_NAME='RouteToxxx'
HOSTNAME = '169.254.15.226'
PLC_AMS_ID = '5.52.74.54.1.1'
pyads.add_route_to_plc(SENDER_AMS, HOSTNAME, PLC_IP, USERNAME, PASSWORD,route_name=ROUTE_NAME)
plc = pyads.Connection('5.52.74.54.1.1', 801, '169.254.64.20')
plc.open()
print(plc.read_by_name(".mHmi.DB_index", pyads.PLCTYPE_INT))
plc.write_by_name(".mHmi.DB_index", 1, pyads.PLCTYPE_INT)
print(plc.read_by_name(".mHmi.DB_index", pyads.PLCTYPE_INT))
plc.close()

如上,该样例通信完成,并可以进行读写变量。

手机端与PLC通信

1.获取本机ip
通过

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(('8.8.8.8', 80))
ip = s.getsockname()[0]

2.打开buildozer.spec中网络开关

# (list) Permissions
android.permissions = INTERNET

参考资料:
1):https://kivy.org/doc/stable/installation/installation-linux.html
2):https://buildozer.readthedocs.io/en/latest/
3):https://buildozer.readthedocs.io/en/latest/quickstart.html
4):https://blog.csdn.net/davied9/article/details/93361566
5):https://www.cnpython.com/pypi/pyads

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值