Http protokoll befehle aus c oder c# ausführen

Hallo zusammen,

ich möchte mittels eines mikrocontrollers ein messgerät ansteuern. dazu habe ich zunächst das messgerät direkt an meinen PC verbunden und in c ein skript geschrieben. das skript erlaubt es mir auf grund der VISA Bibliothek auf das messgerät über das VXI-11 protokoll zuzugreifen. dieses vxi-11 protokoll ist speziell für die kommunikation mit messinstrumenten entwickelt worden. so, das ist aja ok, aber…

mein ziel es, wie bereits erwähnt mittels eines mikrocontrollers das messgerät anzusteuern. ist es nun möglich eine VISA .dll auf den mikrocontroller laufen zu lassen?

und die zweite möglichkeit wäre nicht mit VXI-11 zu arbeiten, sondern mit nem http protokoll. ich habe beeits geschafft mittels eines scripts und dem http protokoll daten des messgeräts auf meinen pc anzufordern, jedoch weiß ich nicht, wie ich diese daten ensprechend in ein format dekodieren soll? hat da jemand eine idee?

für jede hilfe binb ich dankbar… bitte auch ruhig nachfragen, wenn ich mich etwas unklar ausgedrückt habe. komme aber leider nicht weiter…

danke und gruß

Hi,

also so ganz dahinter gekommen bin ich noch nicht, was du damit meinst, dass du per HTTP was machen möchtest? Was ist das genau für ein Messgerät, läuft da drauf ein Webserver, oder warum HTTP?

Und mit welchem Mikrocontroller arbeitest du da? Du versuchst das ganze über LAN oder? Befindet sich auf dem Board des Mikrocontrollers ein Windows bzw. Linux, oder ist es ein ganz kleiner µC?

Was ich erstmal sagen kann, ist dass du mit hoher Wahrscheinlichkeit die DLL nicht nutzen kannst, da das eine Windows Bibliothek ist.
Und wenn du per HTTP Informationen in deinen Mikrocontroller bekommen kannst, musst du dir wohl eine Funktion schreiben, die das ganze bereinigt und dir die Daten, die du wirklich haben willst aus dem HTTP-Wust aussortiert.

Grüße,
Torsten

Hallo *.*,

sorry auf diesem Gebiet bin ich absolut unbeleckt…

Viel Glück

Hallo Torsten,

es geht um einen dsPIC33 und um einen Oszilloskop, der einen integrierten Ethernet-Port mit Web Server besitzt. Das Oszilloskop möchte ich per Ethernet mit dem Mikrocontroller direkt verbinden. Auf dem Board befindet sich kein Windows.

Mit http will ich versuchen zu arbeiten, da ich denke dies leichter auf den mikrokontroller implementieren zu können, als das übliche VXI Protokoll, dass für Messgeräte genutzt wird. Denn das VXI-Protokoll kenne ich nicht, weiß nicht wie es aufgebaut ist.

Im Programmer Manual des Oszilloskops ist ganz gut beschrieben, wie man auf das Gerät mittels VXI zugreifen kann. Es sind die SCPI Befehle. Man muss einfach die VISA.dll in C einbinden und mann kann VOM PC das OSZI ansteuern. Ich will aber einen Mikrocontroller dazwischen schalten, wodurch ich diese Befehle nicht mehr nutzen kann. Mein PC soll dem Microcontroller sagen, dass ich Daten vom Oszi haben möchte und der Mikrokontroller holt sich dann die Daten des Oszis und gibt sie an den PC weiter. Ethernet und TCP hab ich schon auf dem Mikrokontroller implementiert. Jetzt fehlt mir nur noch die Kommunikation für Ethernet (MikrochipOszi). Und dies wollte ich über http lösen…

Ist es etwas verständlicher was ich vorhabe?

Gruß

Hi,

ich bräuchte mehr Informationen:
Was für ein Mikrocontroller soll es sein? Mit nem 8-bitter wir das wohl schwierig werden, da ja die Ethernet-Schnittstelle schonmal ein wenig Rechenleistung vorraussetzt.

Zum thema .dll auf dem Controller: Das ginge prinzipiell, wenn du ein Embedded Windows Betriebssystem darauf laufen lässt (mit einigen Klimzügen). Aber ich bezweifle, dass du das möchtest.

Wie viel Erfahrung hast du mit Programmieren? Hier findest du eine Implementierung des Protokolls für Linux. Das ließe sich mit vertretbaren Aufwand an deinen Controller anpassen. Aber es ist nichtsdestotrotz aufwendig…

Gruß,
OD

hallo
kann leider nicht helfen, da ich nur in Assembler und BASCOM programmiere. In C bin ich Anfänger (Arduino)

mfg

Hi,
entschuldige, dass die Antwort erst so spät kommt, ich hatte ein wenig zu tun :wink:

Also, ich denke, wenn du es sowieso schon geschafft hast, per HTTP auf das Oszi zuzugreifen, dann solltest du ruhig diese Möglichkeit nutzen, allerdings weiß ich auch nicht, in welcher Form die Daten dargestellt werden. Wenn das ganze zum Beispiel als Bild im Browser ausgegeben wird, wirst du schlechte Chancen haben, daraus die eigentlichen Messdaten zu ermitteln.

Auch musst du wissen, wie schnell du die neuen Daten abfragen möchtest. Per HTTP wirst du wahrscheinlich deutlich langsamer sein als mit VXI.

Es gäbe aber scheinbar auch die Möglichkeit, eine VXI Bibliothek für Linux zu nutzen. Dafür musst du nicht wissen, wie VXI genau funktioniert, du nutzt einfach nur die Sende- und Empfangsfunktionen der Bibliothek.
Der Haken an der Sache ist folgender: Um die Bibliothek zu nutzen müsstest du ein Linux auf deinem dsPIC33 zum Laufen bekommen, was sicherlich auch nicht ganz trivial sein wird, aber da gibts scheinbar was unter http://www.rowebots.com/products .
Zu der Linux-Bibliothek gibts unter http://optics.eee.nottingham.ac.uk/vxi11/ was zu lesen.

Aber ich denke der Weg mit Linux und Bibliotheken würde viel Entwicklungszeit in Anspruch nehmen und wenn es die Möglichkeit gibt, das ganze mit HTTP umzusetzen, wäre das wohl vorzuziehen. Wie gesagt, entscheidend dabei ist, dass die Daten in einem geeigneten Format vom HTTP-Server des Oszi kommen und dass das ganze langsamer sein wird, als per VXI.

Vielleicht kannst du ja mal den genauen Typ des Oszis angeben, oder besser noch hier posten bzw. irgendwo hochladen, was bei einer HTTP-Anfrage an das Oszi zurück kommt, dann kann man mal gucken, ob man die Daten da rauslesen kann.

Wenn die Daten da drin sind, würde ich das ganze mit Regular Expressions extrahieren.

Bis dann,
Torsten

Hi Torsten,

jetzt muss ich mich entschuldigen. hatte Probleme mit meinem internetanschluss, deshalb die späte Antwort.

Es handelt sich um den Tektronix mso4054. Wenn ich diesen direkt per Ethernet mit meinem PC verbinde, erhalte ich die Daten per http Anfrage in SRIBinary Format.
Leider ist das ByteMuster nicht konsistent. Manchmal bekomme ich direkt die gewünschten Daten ab dem ersten Byte, aber manchmal bekomem ich vor den eigentlichen Daten unsinniges Zeug (Bytes). Aber wie gesagt nur manchmal. Da dies nicht konsistent ist, habe ich damit ein Problem.

Wenn ich den VXI Treiber nutze bekomme ich die Daten direkt und konsistent. Auch per SRIBinary.

ich dachte, es gäbe eventuell VXI auf TCP/IP implementiert, so dass dies auf den Mikrokontroller implementiert werden kann. Gibt es denn Beispiele wie man http auf TCP/IP im mikrokontroller implementieren kann?

Gruß Marcela

Hi Bernd,

es ist ein 16Bit Mikrokontroller. dsPIC33 von Mikrochip. Mit Programmieren bin ich eher Anfänger bis fortgeschritten. So dazwischen…

gruß Marcela

Hi Bernd,

es ist ein 16Bit Mikrokontroller. dsPIC33 von Mikrochip. Mit Programmieren bin ich eher Anfänger bis fortgeschritten. So dazwischen…

gruß Marcela.

Leider ist mein Computer zur Zeit der Anfrage abgestürzt und kann mich erst jetzt melden.
Kann das Problem auch nicht lösen!

woeherb