簡體   English   中英

適用於OpenWrt的Python Evdev綁定

[英]Python Evdev binding for OpenWrt

美好的一天,

我是一名學生,我想請您抽出一點時間。 我正在研究通過USB端口連接到板名稱Arduino Yun的條形碼讀取器。 該開發板使用名為Atheros AR9331的微處理器運行從OpenWrt派生的嵌入式Linux版本。

我想問你,要使Evdev綁定(python-evdev.readthedocs.org/en/latest/)能夠在這種類型的MIPS微體系結構中運行,有什么必要? 目前,它僅適用於Ubuntu和ArchLinux。 我有點猜測可能需要交叉編譯,或者表明在此linux中使用特定C編譯器的指示。
我已經知道OpenWrt支持的當前python版本是2.7.3,如果在PC中編譯C代碼,則生成的可執行文件將僅在這種類型的體系結構上運行。 如果您在微處理器內部使用該編譯程序,它將無法正常工作。 我在PC的ubuntu中使用該綁定時沒有遇到任何麻煩。 我按照python setup.py install的說明進行了安裝,之前安裝了setuptools,它工作得很好。

但是對於OpenWrt,情況並非如此。

我正在使用的python腳本在代碼的第一行中需要此庫,以便從設備獲取數據(它的工作方式類似於鍵盤/ dev / input / event0):

#!/usr/bin/env python

from evdev import InputDevice, ecodes, list_devices

from select import select

我已經看到了將整個庫復制到arduino中並在同一文件夾中運行腳本的建議。 但這是行不通的,因為evdev模塊具有使用PC而非MIPS的體系結構創建的文件。

那么,針對該錯誤顯示的消息是什么? 如果您在Openwrt中運行python setup.py install嘗試安裝evdev綁定,它將顯示在屏幕上:

from setuptools.command.develop import develop File "setup.py", line 10, in <module> from setuptools.command.develop import develop ImportError: No module named setuptools.command.develop

從這里顯而易見,您需要上述模塊。 因此,我嘗試使用此腳本(pypi.python.org/pypi/setuptools)安裝它:

python ez_setup.py

輸出顯示如下: Downloading https://pypi.python.org/packages/source/s/setuptools/setuptools-11.3.1.zip Traceback(最近一次調用為last): File "ez_setup.py", line 332, in <module> sys.exit(主()) File "ez_setup.py", line 327, in main downloader_factory = options.downloader_factory, File "ez_setup.py", line 287, in download_setuptools下載器(URL,saveto) File "ez_setup.py", line 209, in download_file_curl _clean_check(cmd,target)中File "ez_setup.py", line 209, in download_file_curl File "ez_setup.py", line 169, in _clean_check (cmd)中File "ez_setup.py", line 169, in _clean_check File "/usr/lib/python2.7/subprocess.py", line 511, in check_call引發CalledProcessError(retcode,cmd) subprocess.CalledProcessError: Command '['curl',進程。CalledProcessError subprocess.CalledProcessError: Command '['curl', ' https subprocess.CalledProcessError: Command '['curl', //pypi.python.org/packages/source/s/setuptools/setuptools-11.3.1.zip' ,'--silent','--output','/mnt/sda1/evdev-0.4.6/setuptools-11.3.1.zip']'返回非零退出狀態60

我認為此輸出是由於以下事實:pypi對於OpenWrt中的python 2.7.3不存在,僅適用於較新的版本和其他體系結構。 Evedv綁定需要setuptools模塊才能使事情變得簡單和標准,但是如果目標體系結構不支持該綁定,則無論如何都需要使用它?

謝謝你的時間,

今天是個好日子,

該解決方案由Georgi Valkov提供。 他是python-evdev綁定的創建者。 我直接與他聯系,他非常友善,因此他為OpenWrt / Yun交叉編譯了一個版本。

您可以使用openwrt軟件包管理器-opkg安裝該軟件包。 安裝過程大致如下:

$ opkg update
$ opkg install /path/to/python-evdev_0.4.7-1_ar71xx.ipk

要驗證安裝是否成功:

$ opkg files python-evdev
/usr/lib/python2.7/site-packages/evdev-0.4.7-py2.7.egg-info
/usr/lib/python2.7/site-packages/evdev/genecodes.py
/usr/lib/python2.7/site-packages/evdev/ff.py
/usr/lib/python2.7/site-packages/evdev/_input.so
/usr/lib/python2.7/site-packages/evdev/device.py
/usr/lib/python2.7/site-packages/evdev/events.py
/usr/lib/python2.7/site-packages/evdev/__init__.py
/usr/lib/python2.7/site-packages/evdev/ecodes.py
/usr/lib/python2.7/site-packages/evdev/_ecodes.so
/usr/lib/python2.7/site-packages/evdev/util.py
/usr/lib/python2.7/site-packages/evdev/uinput.py
/usr/lib/python2.7/site-packages/evdev/_uinput.so

這樣很好。 謝謝。

PS。 如果有人需要該文件,請與我聯系。 Georgi給我發送了這個地址,但是我沒有從那里下載文件,因為他是通過電子郵件發送給我的。 https://github.com/gvalkov/openwrt-packages-yun/blob/master/lang/python-evdev/Makefile

在輸出中,你可以看到, curl返回的狀態碼60.根據man curl

60對等證書不能使用已知的CA證書進行身份驗證。

根據setuptools頁面,您可以改用python ez_setup.py --insecure但這樣做顯然需要您自擔風險。 或者,您可以執行高級說明中所述的內容,並手動下載setuptools tarball,親自驗證其md5哈希值,然后使用setup.py安裝它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM