From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail.jumo.net ([193.24.15.13]) by metis.ext.pengutronix.de with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mAY7l-0007PI-Gk for rauc@pengutronix.de; Mon, 02 Aug 2021 15:36:58 +0200 In-Reply-To: Message-ID: From: Eugen.Wiens@JUMO.net Date: Mon, 2 Aug 2021 15:36:54 +0200 References: , , MIME-Version: 1.0 Subject: [RAUC] Antwort: Re: Antwort: D-Bus control Qt List-Id: RAUC Project - Discussion List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: multipart/mixed; boundary="===============1313250157==" Errors-To: rauc-bounces@pengutronix.de Sender: "RAUC" To: "Stahl, Michael" Cc: RAUC , "RAUC@pengutronix.de" --===============1313250157== Content-Type: multipart/alternative; boundary="=_alternative 004ACA72C1258725_=" --=_alternative 004ACA72C1258725_= Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: quoted-printable Hi Michael, "RAUC" schrieb am 02.08.2021 15:20:25: > Von: "Stahl, Michael" > An: "Eugen.Wiens@JUMO.net" > Kopie: "RAUC@pengutronix.de" > Datum: 02.08.2021 15:20 > Betreff: Re: [RAUC] Antwort: D-Bus control Qt > Gesendet von: "RAUC" >=20 > Hi Eugen, >=20 > I think I got it. >=20 > MyProgress.cpp: > Q=5FDECLARE=5FMETATYPE(MyProgress)=20 >=20 > QDBusArgument &operator<<(QDBusArgument &argument, const MyProgress&=20 > parameterProgress) > { > argument.beginStructure(); > argument << parameterProgress.m=5FProgress; > argument << parameterProgress.m=5FMessage; > argument << parameterProgress.m=5FAdditional; > argument.endStructure(); > return argument; > } >=20 > const QDBusArgument &operator>>(const QDBusArgument &argument,=20 MyProgress&=20 > parameterProgress) > { > argument.beginStructure(); > argument >> parameterProgress.m=5FProgress; > argument >> parameterProgress.m=5FMessage; > argument >> parameterProgress.m=5FAdditional; > argument.endStructure(); > return argument; > } >=20 > MyProgress ::MyProgress(){ > qRegisterMetaType(); > qDBusRegisterMetaType(); > } >=20 > MyProgress.h: > #ifndef MYPROGRESS=5FH > #define MYPROGRESS=5FH >=20 > #include > #include > #include > #include >=20 > class MyProgress > { > public: > MyProgress(); > ~MyProgress(); > int m=5FProgress; > QString m=5FMessage; > int m=5FAdditional; > public slots: > friend QDBusArgument &operator<<(QDBusArgument &argument, const=20 > RaucProgress ¶meterProgress); > friend const QDBusArgument &operator>>(const QDBusArgument=20 &argument,=20 > RaucProgress ¶meterProgress); > }; > #endif // MYPROGRESS=5FH >=20 > update.cpp: > ... > QDBusInterface interface( "de.pengutronix.rauc", > "/", > "de.pengutronix.rauc.Installer", > QDBusConnection::systemBus() ); >=20 > if (interface.isValid() =3D=3D true) > { > qDebug() << "interface is valid"; > qDebug() << "Read property (Progress)"; > QVariant property =3D interface.property("Progress"); > property.value() >> parameterProgress; > qDebug() << parameterProgress.m=5FProgress; > qDebug() << parameterProgress.m=5FMessage; > } > ... >=20 > parameterProgress is delcared in the update.h >=20 > I have a last question. Maybe you can answer it. Why have I add the=20 > keyword "friend" in front of the QDBusArguments? I wount compile without = it. If you add the operators as a member, you Qt has problem to find them. We=20 implement the operators outside of the class. As "normal" functions not as = Member Methods. Qt is searching "operator >> ( Type, Type)" and not as=20 Member of a class. >=20 > Many thanks. >=20 > Kind regards=20 > Michael >=20 > Von: RAUC im Auftrag von Stahl,=20 > Michael > Gesendet: Montag, 2. August 2021 14:45 > An: Eugen.Wiens@JUMO.net > Cc: RAUC@pengutronix.de > Betreff: Re: [RAUC] Antwort: D-Bus control Qt=20 >=20 > Hi Eugen, >=20 > thanks for the informations. They were very useful. Some lines are=20 > familiar to me because I tested a lot. > But I still need some support.=20 >=20 > This is the way I request the property: >=20 > MyProgress parameterProgress; > QDBusInterface interface( "de.pengutronix.rauc",=20 > "/", > "de.pengutronix.rauc.Installer", > QDBusConnection::systemBus() ); > QVariant property =3D interface.property("Progress");=20 > property.value() >> parameterProgress; >=20 > No I get a compiler error: > no match for operator>>'(opernad types are 'QDBusArgument' and=20 'MyProgress') >=20 > I think I do the registration an the installing of the oparators wrong. >=20 > The registration is done in the constructor of MyProgress: > MyProgress ::MyProgress(){ > qRegisterMetaType(); > qDBusRegisterMetaType(); > } >=20 > The magic statement I place in top of my MyProcess.cpp > // this is one of the magic statements > Q=5FDECLARE=5FMETATYPE(MyProgress) >=20 > But where exactly do you place the operators? Also in the MyProcess.cpp? = > QDBusArgument &operator<<(QDBusArgument &argument, const MyProgress& > parameterProgress); > const QDBusArgument &operator>>(const QDBusArgument &argument,=20 > MyProgress& parameterProgress); > QDBusArgument &operator<<(QDBusArgument &argument, const MyProgress& > parameterProgress) > { > argument.beginStructure(); > argument << parameterProgress.m=5FProgress; > argument << parameterProgress.m=5FMessage; > argument << parameterProgress.m=5FAdditional; > argument.endStructure(); > return argument; > } > const QDBusArgument &operator>>(const QDBusArgument &argument,=20 > MyProgress& parameterProgress) > { > argument.beginStructure(); > argument >> parameterProgress.m=5FProgress; > argument >> parameterProgress.m=5FMessage; > argument >> parameterProgress.m=5FAdditional; > argument.endStructure(); > return argument; > } >=20 > It seems like I am only a few millimeters away from my goal. >=20 > Thanks >=20 > Von: Eugen.Wiens@JUMO.net > Gesendet: Montag, 2. August 2021 13:41 > An: Stahl, Michael > Cc: RAUC@pengutronix.de > Betreff: Antwort: [RAUC] D-Bus control Qt=20 >=20 > Hi Michael, >=20 > "RAUC" schrieb am 02.08.2021 08:15:26: >=20 > > Von: "Stahl, Michael" > > An: "RAUC@pengutronix.de" > > Datum: 02.08.2021 08:15 > > Betreff: [RAUC] D-Bus control Qt > > Gesendet von: "RAUC" > >=20 > > Is there someone who implemented the DBus Property "Progress" into a > > Qt-Application? The problem seems the return value isi (Integer,=20 > > String, Integer).=20 > > For all other properties with a single return value like "Operation" > > or "LastError" the Qt DBus API works fine.=20 > > I found an email from 28.Oct 2019 in the mailing list where Bastian=20 > > Krause had the same issue. The answer was only that he had to=20 > > cunsult the Qt DBus documentation on how a tuple is mapped to Qt=20 types. > >=20 > > Thats a good hint but after hours of searching the web I didn't find > > a solution. The return value for a property is QVariant in Qt.=20 > >=20 > > Trial 1 -> Read value by iface.property("Progress"): > > This is the error message I got when I try to read the progress=20 property: > > Cannot construct placeholder type QDBusRawType > >=20 > > Trial 2 -> Read value by iface.call("Get",...): > > Not able to get any information. The arguments of the returned=20 > > QDBusMessages are always empty! > That is the way we implemented it: >=20 > On Qt there are some pitfalls and you has to marshaling the data. >=20 > 1. Create a Data Class >=20 > #include > #include > #include >=20 > class MyProgress > { > public: > [...] > int m=5FProgress; > QString m=5FMessage; > int m=5FAdditional; > }; >=20 > // this is one of the magic statements=20 > Q=5FDECLARE=5FMETATYPE(MyProgress) > QDBusArgument &operator<<(QDBusArgument &argument, const MyProgress& > parameterProgress); > const QDBusArgument &operator>>(const QDBusArgument &argument,=20 > MyProgress& parameterProgress); > }; >=20 > You has to register the metatype and implement the operators. In the > Constructor you has to add two register Methods=20 >=20 > qRegisterMetaType(); > qDBusRegisterMetaType(); >=20 > After this tree registrations your Class MyProgress is known by Qt=20 > Metatype System. Now you has to implement operators >=20 > QDBusArgument &operator<<(QDBusArgument &argument, const MyProgress& > parameterProgress) > { > argument.beginStructure(); > argument << parameterProgress.m=5FProgress; > argument << parameterProgress.m=5FMessage; > argument << parameterProgress.m=5FAdditional; > argument.endStructure(); > return argument; > } > const QDBusArgument &operator>>(const QDBusArgument &argument,=20 > MyProgress& parameterProgress) > { > argument.beginStructure(); > argument >> parameterProgress.m=5FProgress; > argument >> parameterProgress.m=5FMessage; > argument >> parameterProgress.m=5FAdditional; > argument.endStructure(); > return argument; > } >=20 > Now you are finished with preparing how to use it. In the Qt Slot of > the D-Bus call your can pipe it in your class >=20 > MyProgress parameterProgress; > property.value() >> parameterProgress; >=20 >=20 > This URL help you to map our code to the Qt example https:// > doc.qt.io/qt-5/qdbusargument.html >=20 > I hope it helps=20 >=20 >=20 > >=20 > > =5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F= =5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F > > RAUC mailing list > Diese E-Mail kann vertrauliche und/oder rechtlich gesch?tzte=20 > Informationen beinhalten und ist ausschlie?lich f?r die im Verteiler > genannten Personen bestimmt. Das unerlaubte Kopieren sowie die=20 > unbefugte Weitergabe dieser Mail sind nicht gestattet. Bitte=20 > benachrichtigen Sie uns gegebenenfalls telefonisch oder mit Antwort- > Mail, falls Sie nicht der richtige Adressat dieser E-Mail sind.=20 > Bitte l?schen Sie diese Nachricht und alle Anh?nge dazu unverz? > glich. Falls nicht ausdr?cklich vermerkt, ist diese E-Mail keine=20 > rechtlich bindende Vereinbarung. >=20 > Kommanditgesellschaft: JUMO GmbH & Co. KG, Sitz: 36039 Fulda,=20 > Amtsgericht Fulda HRA 302, Pers?nlich haftende Gesellschafterin: M.=20 > K. JUCHHEIM GmbH, Sitz: 36039 Fulda, Amtsgericht Fulda HRB 17,=20 > Gesch?ftsf?hrer: Dipl.-Ing. Bernhard Juchheim, Dipl.-Kfm. Michael=20 > Juchheim, Dipl.-Ing. Dimitrios Charisiadis > Ust.-Id.-Nr.: DE=20 112411234=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F= =5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F > RAUC mailing list Diese E-Mail kann vertrauliche und/oder rechtlich gesch=FCtzte Informatione= n beinhalten und ist ausschlie=DFlich f=FCr die im Verteiler genannten Pers= onen bestimmt. Das unerlaubte Kopieren sowie die unbefugte Weitergabe diese= r Mail sind nicht gestattet. Bitte benachrichtigen Sie uns gegebenenfalls t= elefonisch oder mit Antwort-Mail, falls Sie nicht der richtige Adressat die= ser E-Mail sind. Bitte l=F6schen Sie diese Nachricht und alle Anh=E4nge daz= u unverz=FCglich. Falls nicht ausdr=FCcklich vermerkt, ist diese E-Mail kei= ne rechtlich bindende Vereinbarung.=20 Kommanditgesellschaft: JUMO GmbH & Co. KG, Sitz: 36039 Fulda, Amtsgericht F= ulda HRA 302, Pers=F6nlich haftende Gesellschafterin: M. K. JUCHHEIM GmbH, = Sitz: 36039 Fulda, Amtsgericht Fulda HRB 17, Gesch=E4ftsf=FChrer: Dipl.-Ing= . Bernhard Juchheim, Dipl.-Kfm. Michael Juchheim, Dipl.-Ing. Dimitrios Char= isiadis=20 Ust.-Id.-Nr.: DE 112411234 --=_alternative 004ACA72C1258725_= Content-Type: text/html; charset="US-ASCII" Content-Transfer-Encoding: quoted-printable Hi Michael,

"RAUC" <rauc-bo= unces@pengutronix.de> schrieb am 02.08.2021 15:20:25:

> Von: "Stahl, Michael"= <mstahl@moba.de>

> An: "Eu= gen.Wiens@JUMO.net" <Eugen.Wiens@JUMO.net>
> Kopie: "RAUC@pengutronix.de" <RAUC@pengutron= ix.de>
> Datum: 02.08.2021 15:20
> Betreff: Re: [RAUC] Antwort:  D-B= us control Qt
> Gesendet von: "RAUC" &l= t;rauc-bounces@pengutronix.de>
> > Hi Eugen,
>
> I think I = got it.

>
> MyProgress.cpp:

> Q=5FDECLARE=5FMETATYPE(MyProgress)
>
> QDBusArgument &operator<= ;<(QDBusArgument &argument, const MyProgress&
> parameterProgress)

> {
>     argument.b= eginStructure();
>     argum= ent << parameterProgress.m=5FProgress;
>     argument << parameterProgress.m=5FMessage;
>     argument << parame= terProgress.m=5FAdditional;
>   &= nbsp; argument.endStructure();
>  = ;   return argument;
> }
>
> const QDBusArgument &operator&g= t;>(const QDBusArgument &argument, MyProgress&
> parameterProgress)

> {
>     argument.b= eginStructure();
>     argum= ent >> parameterProgress.m=5FProgress;
>     argument >> parameterProgress.m=5FMessage;
>     argument >> parame= terProgress.m=5FAdditional;
>   &= nbsp; argument.endStructure();
>  = ;   return argument;
> }
>
> MyProgress ::MyProgress(){

>     qRegisterMetaType<MyProgres= s>();
>     qDBusRegister= MetaType<MyProgress>();
> }
>
> MyProgress.h:

> #ifndef MYPROGRESS=5FH

> #define MYPROGRESS=5FH
> =

> #include <QObject>=
> #include <QDBusArgument>=
> #include <QMetaType>
<= font size=3D2>> #include <QDBusMetaType>

>
> class MyProgress

&= gt; {
> public:
>     MyProgress();

>     ~MyProgress();
&g= t;     int m=5FProgress;
> &= nbsp;   QString m=5FMessage;
> &n= bsp;   int m=5FAdditional;
> publ= ic slots:
>     friend QDBus= Argument &operator<<(QDBusArgument &argument, const
> RaucProgress &parameterProgress);
<= /tt>
>     friend const QDBusArgument &a= mp;operator>>(const QDBusArgument &argument,
> RaucProgress &parameterProgress);=

> };
> #endif // MYPROGRESS=5FH
>
= > update.cpp:

> ...
= >     QDBusInterface interface( "de.pe= ngutronix.rauc",

>   &nb= sp;                           "/",
>            = ;                   "de.pengutroni= x.rauc.Installer",
>    = ;                           QDBusConnection::sy= stemBus() );
>
>     if (interf= ace.isValid() =3D=3D true)

>   &n= bsp; {
>         q= Debug() << "interface is valid";
> &nbs= p;                 qDebug() << "Read property (Progress)";
>        QVariant prope= rty =3D interface.property("Progress");
>       property.value<QDBusArgument>() >> parameterProgress;
>   &= nbsp;    qDebug() << parameterProgress.m=5FProgress;
> &nbs= p;      qDebug() << parameterProgress.m=5FMessage;
>  = ;    }
> ...
= >
> parameterProgress is delcared in the updat= e.h

>
> I have a last question.= Maybe you can answer it. Why have I add the
> keyword "friend" in front of the QDBusArguments? I wount compile without it.

If you add the operat= ors as a member, you Qt has problem to find them. We implement the operators outside of the class. As "nor= mal" functions not as Member Methods. Qt is searching "operator >> ( Type, Type)" and not as Member of a class.

>
> Many thanks.

&= gt;
> Kind regards

> Michael
>
> Von: RAUC <rauc-bounces@p= engutronix.de> im Auftrag von Stahl,
> Michael <mstahl@moba.de>
> Gesendet: Montag, 2. August= 2021 14:45
> An: Eugen.Wiens@JUMO.net <Eugen.Wiens@JUMO.net>> Cc: RAUC@pengutronix.de <RAUC@pengutronix.de>
> Betreff:= Re: [RAUC] Antwort: D-Bus control Qt

&g= t;  
> Hi Eugen,
<= tt>>
> thanks for the informations. They were very= useful. Some lines are
> familiar to me because I tested a lot.

> But I still need some support.
>
> This is the way I request the property:

<= tt>>
> MyProgress parameterProgress;
> QDBusInterface interface( "de.pengutronix.ra= uc",
>           =           "/",
> =                     "de.pengutronix.rauc.Installer",=
>                     QDBusConnection::systemBus() );
> QVariant property =3D interface.property("Progress&qu= ot;);

> property.value<QDBusArgument>= () >> parameterProgress;
>
> No I get= a compiler error:

> no match for oper= ator>>'(opernad types are 'QDBusArgument' and 'MyProgress')
>= ;
> I think I do the registration an the installing of the oparators= wrong.

>
> The registration is= done in the constructor of MyProgress:

&= gt; MyProgress ::MyProgress(){
>  = ;   qRegisterMetaType<MyProgress>();
>     qDBusRegisterMetaType<MyProgress>();=
> }
> <= br>> The magic statement I place in top of my MyProcess.cpp<= br>> // this is one of the magic statements
> Q= =5FDECLARE=5FMETATYPE(MyProgress)

> > But where exactly do you place the operators? Also in the MyProcess.= cpp?
> QDBusArgument &operator<<= (QDBusArgument &argument, const MyProgress&
> parameterProgress);
> co= nst QDBusArgument &operator>>(const QDBusArgument &argument,
> MyProgress& parameterProgress);

> QDBusArgument &operator<<(QDBusArgument &argument, const MyProgress&
> parameterProgress)
> {>     argument.beginStructure();
>     argum= ent << parameterProgress.m=5FProgress;
>     argument= << parameterProgress.m=5FMessage;
>     argument <= ;< parameterProgress.m=5FAdditional;
>     argument.endS= tructure();
>     return argument;
> }
> const = QDBusArgument &operator>>(const QDBusArgument &argument,
> MyProgress& parameterProgress)
> {
>    = argument.beginStructure();
>     argument >> paramet= erProgress.m=5FProgress;
>     argument >> parameterP= rogress.m=5FMessage;
>     argument >> parameterProgr= ess.m=5FAdditional;
>     argument.endStructure();
> =     return argument;
> }

= >
> It seems like I am only a few millimeters away from my goal.<= /font>

>
> Thanks

<= font size=3D2>>
> Von: Eugen.Wiens@JUMO.net <Eugen.Wiens@JUMO.= net>
> Gesendet: Montag, 2. August 2021 13:41
> An: Stahl, M= ichael <mstahl@moba.de>
> Cc: RAUC@pengutronix.de <RAUC@peng= utronix.de>
> Betreff: Antwort: [RAUC] D-Bus control Qt

>  
>= Hi Michael,
>
> "RAUC" <rauc-bounces@pengutronix= .de> schrieb am 02.08.2021 08:15:26:
>
> > Von: "Stahl, Michael" <mstahl@= moba.de>
> > An: "RAUC@pengutronix.de" <RAUC@pengu= tronix.de>
> > Datum: 02.08.2021 08:15
> > Betreff: [R= AUC] D-Bus control Qt
> > Gesendet von: "RAUC" <rauc-= bounces@pengutronix.de>
> >
> > Is there someone who = implemented the DBus Property "Progress" into a
> > Qt-Application? The problem seems the return value isi = (Integer,
> > String, Integer).
> > For all other properties with= a single return value like "Operation"
> > or "Las= tError" the Qt DBus API works fine.
> > I found an email fro= m 28.Oct 2019 in the mailing list where Bastian
> > Krause had the same issue. The answer was only that he had to
> > cunsult the Qt DBus documentation on how a tuple is mapped to Qt types.
> >
> > Thats a good hint but after hours of s= earching the web I didn't find
> > a solution. The return value for a property is QVariant i= n Qt.
> >
> > Trial 1 -> Read value by iface.property(&quo= t;Progress"):
> > This is the error message I got when I try = to read the progress property:
> > Cannot construct placeholder type QDBusRawType
&g= t; >
> > Trial 2 -> Read value by iface.call("Get"= ;,...):
> > Not able to get any information. The arguments of the = returned
> > QDBusMessages are always empty!
> That is the way we im= plemented it:
>
> On Qt there are some pitfalls and you has to= marshaling the data.
>
> 1. Create a Data Class
>
&= gt; #include <QObject>
> #include <QDBusArgument>
>= #include <QString>
>
> class MyProgress
> {
&g= t; public:
> [...]
>     int m=5FProgress;
> &n= bsp;   QString m=5FMessage;
>     int m=5FAdditional;<= br>> };
>
> // this is one of the magic statements
>= Q=5FDECLARE=5FMETATYPE(MyProgress)
> QDBusArgument &operator<= <(QDBusArgument &argument, const MyProgress&
> parameterProgress);
> const QDBusArgument &am= p;operator>>(const QDBusArgument &argument,
> MyProgress& parameterProgress);
> };
>
> Yo= u has to register the metatype and implement the operators. In the
> = Constructor you has to add two register Methods
>
> qRegister= MetaType<MyProgress>();
> qDBusRegisterMetaType<MyProgress&g= t;();
>
> After this tree registrations your Class MyProgress = is known by Qt
> Metatype System. Now you has to implement operators
>
&g= t; QDBusArgument &operator<<(QDBusArgument &argument, const MyProgress&
> parameterProgress)
> {
>     = argument.beginStructure();
>     argument << paramete= rProgress.m=5FProgress;
>     argument << parameterPr= ogress.m=5FMessage;
>     argument << parameterProgre= ss.m=5FAdditional;
>     argument.endStructure();
> &= nbsp;   return argument;
> }
> const QDBusArgument &op= erator>>(const QDBusArgument &argument,
> MyProgress& parameterProgress)
> {
>    = argument.beginStructure();
>     argument >> paramet= erProgress.m=5FProgress;
>     argument >> parameterP= rogress.m=5FMessage;
>     argument >> parameterProgr= ess.m=5FAdditional;
>     argument.endStructure();
> =     return argument;
> }
>
> Now you are finis= hed with preparing how to use it. In the Qt Slot of
> the D-Bus call your can pipe it in your class
>
> M= yProgress parameterProgress;
> property.value<QDBusArgument>() = >> parameterProgress;
>
>
> This URL help you to = map our code to the Qt example https://
> doc.qt.io/qt-5/qdbusargumen= t.html
>
> I hope it helps
>
>
> > > > =5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F= =5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F= =5F
> > RAUC mailing list

> D= iese E-Mail kann vertrauliche und/oder rechtlich gesch?tzte
> Informationen beinhalten und ist ausschlie?lich f?r die= im Verteiler
> genannten Personen bestimmt. Das unerlaubte Kopieren = sowie die
> unbefugte Weitergabe dieser Mail sind nicht gestattet. B= itte
> benachrichtigen Sie uns gegebenenfalls telefonisch oder mit A= ntwort-
> Mail, falls Sie nicht der richtige Adressat dieser E-Mail s= ind.
> Bitte l?schen Sie diese Nachricht und alle Anh?nge dazu unver= z?
> glich. Falls nicht ausdr?cklich vermerkt, ist diese E-Mail keine=
> rechtlich bindende Vereinbarung.
>
> Kommanditgesell= schaft: JUMO GmbH & Co. KG, Sitz: 36039 Fulda,
> Amtsgericht Fulda HRA 302, Pers?nlich haftende Gesellschafterin: M.
> K. JUCHHEIM GmbH, Sitz: 36039 Fulda, Amtsgericht Fulda HRB 17, > Gesch?ftsf?hrer: Dipl.-Ing. Bernhard Juchheim, Dipl.-Kfm. Michael
> Juchheim, Dipl.-Ing. Dimitrios Charisiadis
> Ust.-Id.-Nr.: D= E 112411234=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F= =5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F= =5F
> RAUC mailing list

<= font size=3D2 face=3D"sans-serif">Diese E-Mail kann vertrauliche und/oder r= echtlich gesch=FCtzte Informationen beinhalten und ist ausschlie=DFlich f= =FCr die im Verteiler genannten Personen bestimmt. Das unerlaubte Kopieren = sowie die unbefugte Weitergabe dieser Mail sind nicht gestattet. Bitte bena= chrichtigen Sie uns gegebenenfalls telefonisch oder mit Antwort-Mail, falls= Sie nicht der richtige Adressat dieser E-Mail sind. Bitte l=F6schen Sie di= ese Nachricht und alle Anh=E4nge dazu unverz=FCglich. Falls nicht ausdr=FCc= klich vermerkt, ist diese E-Mail keine rechtlich bindende Vereinbarung.

Kommanditgesellschaft: JUMO GmbH & Co. KG, Sitz: 36039 Fulda, Amtsgeric= ht Fulda HRA 302, Pers=F6nlich haftende Gesellschafterin: M. K. JUCHHEIM Gm= bH, Sitz: 36039 Fulda, Amtsgericht Fulda HRB 17, Gesch=E4ftsf=FChrer: Dipl.= -Ing. Bernhard Juchheim, Dipl.-Kfm. Michael Juchheim, Dipl.-Ing. Dimitrios = Charisiadis
Ust.-Id.-Nr.: DE 112411234

--=_alternative 004ACA72C1258725_=-- --===============1313250157== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ RAUC mailing list --===============1313250157==--