DBus를 필두로
너무 편리해서 다른 분들도 사용하시기 바랍니다.
간단하게 시작할 수 있도록 샘플 프로그램을 함께 보류하겠습니다.
DBus의 토대
DBus를 이해할 때 이것PDF은 읽기 쉽다.
공식 홈페이지는 좀 어려울 것 같아요.어쨌든 URL을 먼저 업로드합니다.
https://dbus.freedesktop.org/doc/dbus-specification.html
https://dbus.freedesktop.org/doc/dbus-tutorial.html
PDF를 발췌하여 기억을 열거하다.
기억하는 것
그 1
세션 버스는 각 사용자마다 버스가 있으며 해당 사용자만 사용합니다.
두 번째
service
is a collection of objects
providing a specific set of features :1.40
) org.ofono
) /
or /net/conman/technology/cellular
) org.ofono.manager
) properties
, methods
and signals
DBus는 끝점까지 URI를 지정하는 데
Service・Object・Interface
를 사용합니다.우선
qdbusviewer
을 사용하여 기존의 참조를 참조하십시오.# 僕の環境
$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux buster/sid"
$ sudo apt install qtbase qdbusviewer
이미지는 로 해석할 수 있습니다.
section
address
service
org.freedesktop.systemd1
object
org/feredesktop/systemd1
interface
org.freedesktop.DBus.Peer
서비스와 인터페이스는 "구분자
object는 "/"로 구분됩니다.
또한, 습관성(´63;)구문을 사용합니다.(freedesktop.org → org.freedesktop)
셋째
org.freedesktop.DBus.Properties
대신 Signals를 사용하여 Server->Celient를 호출합니다.
다만, Signal은 비동기적인 Observer 모드를 알립니다.
메트로드는 동기화 처리이기 때문에 너무 무거운 처리를 하지 말고 signal로 되돌려줍니다.
(내가 봤는데 출처를 잊어버렸어...)
이전에 DBus는 각각 Method와 Signal로 인식되는 동기식 및 비동기식 호출이 있었다
완전히 다르다.
Python 3의 DBus 라이브러리 사용 예제
이 장에서는 dbus-python v1.2.8를 사용하여 Server 및 Celient 생성
Method 및 Signal을 건너뛰는 데 사용되는 코드를 유지합니다.
그나저나 코드는 왜 남겼지?이렇게 되면 API 사용법을 이해하기 어렵다.파이톤이 힘이 부족해서 그런가?
코드는gist입니다.
https://gist.github.com/yuu/c25e95eef7d6ff3fe9f80b14c6b06911
server side
@dbus.service.method
와 @dbus.service.signal
만 장식하면 된다.method
listener에 로그인하면client에서 호출할 수 있습니다.signal
publish에 로그인하면client는subscribe를 호출하여 함수나 방법을 호출하여 발송할 수 있습니다.
client side
method
bus.get_object(service, obj)
시proxy 대상을 생성하고 방법도 자동으로 생성됩니다.signal
에handler를 bus.add_signal_receiver(..)
에 등록합니다.
총결산
XML에서 생성되기 때문에 파이톤과 달리 편차가 없습니다.
Reference
이 문제에 관하여(DBus를 필두로), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/byuu/items/c600366b9c138f639863텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)