# Visualisierung (Touchpanel mit ARM-Prozessor, libnodave, VB2008)



## showview_123 (1 November 2010)

*Visualisierung (Touchpanel mit ARM-Prozessor, libnodave oder S7net, VB2008)*

Hallo.

Ich habe ein Problem. Ich möchte auf meine SPS mittels Touchpanel zugreifen.

Technische Daten meiner Geräte:
SPS: S7-1212C
Touchpanel mit Intel ARM 920T-PXA2 Prozessor und Windows CE

Ich kann bereits vom PC auf die SPS zugreifen (mittels libnodave).
Vom Touchpanel aus geht der Zugriff nicht.
Die Fehlermeldung auf dem Touchpanel ist folgende:

```
NotSupportedException (wenn mit libnodave zugegriffen wird)
```
Ich weiß schon, dass Zottel in der Beschreibung erwähnt, dass libnodave
nicht mit ARM-Prozessoren arbeitet. Zugleich schreibt er aber über die
Möglichkeit trotzdem darauf zuzugreifen.
(Siehe doc, im Verzeichnis von libnodave)


> *Compiling Libnodave for ARM processors*
> 
> Libnodave did not work on ARM processors. It seemed that the processor cannot access a word on a non word boundary (odd address). The following code did not work:
> 
> ...


Falls es trotzdem nicht möglich ist mit einem ARM-Prozessor zu arbeiten,
kann vielleicht jemand aus dem Forum mir weiterhelfen.

Weiters habe ich auch versucht mit der Software IPS7Lnk von Träger eine
Verbindung vom Touchpanel aufzubauen.
http://www.traeger.de/softwaretreiber-simatic-s7/ip-s7-link.html

Hier bekomme ich eine andere Fehlermeldung:

```
Can't find PInvoke DLL 'ips7lnk.dll'
```
Am PC funktioniert es aber.

Nun weiß ich wirklich nicht mehr weiter, und hoffe das ihr mir helfen könnt.

Danke.


----------



## Jochen Kühner (3 November 2010)

Also ich habe libnodave fürs iphone compiliert, und damit komm ich online! Und das iphone hat ja auch einen arm prozessor!


----------



## Jochen Kühner (3 November 2010)

Nochwas, wenn du auf die libnodave page gehst, steht ja bei version 0.6.3: 
Code includes workarounds for and has been tested on ARM processors


----------



## Rainer Hönle (3 November 2010)

Von ACCON-AGLink gibt es eine Version die unter WinCE (native und mit .net-Wrapper) läuft und die Varianten für x86, ARMV4 und ARMV4i enthält.


----------



## showview_123 (4 November 2010)

Hallo, 

Danke für die Rückmeldungen!

Trotz vielem herumprobieren, läufts noch immer nicht (mit libnodave).

Auf die kommerziellen Produkte möchte ich erst dann umsteigen, falls die 
OpenSource-Produkte versagen 

Hab  es zumindestens geschafft, dass unter libnodave ein:


```
Can't find PInvoke DLL 'libnodave.dll'
```
als Fehlermeldung retour kommt. 

Habe auch am Touchpanel die .dll-Dateien ins Windows-Verzeichnis kopiert.
Habe auch auf ein höheres .net-Framework aktualisiert.

--> Alles vergeblich.

Vielleicht weiß, ja jemand anderes einen Tipp!

@ Jochen:
Kannst du mir vielleicht einen Blick auf deinen Code für iphone gewären?

Danke.


----------



## Rainer Hönle (4 November 2010)

Kommt die libnodave-DLL für WinCE und ARM zum Einsatz oder die normale Windows-Version? Die Fehlermeldung ist ja die gleiche wie bei IPS7Link und deutet auf die falsche Version hin.


----------



## ge_org (4 November 2010)

Welche Version von VB2008/Visual Studio verwendest du?
Georg


----------



## Jochen Kühner (4 November 2010)

showview_123 schrieb:


> @ Jochen:
> Kannst du mir vielleicht einen Blick auf deinen Code für iphone gewären?



Ich verwende im Iphone zum connecten die orginale libnodave library, hab mir dazu halt ein Makefile gebastelt, das wird dir aber für ein wince-gerät nicht weiterhelfen...


----------



## showview_123 (5 November 2010)

Ich habe in einen anderen Forum (VB) gelesen, dass es auch solche Probleme mit der DLL gegebene hat.

Wie Rainer schon erwähnt, liegt es sicher an der DLL.
Ich verwende die Windows DLL, nicht die CE DLL.

Das wird wahrscheinlich der Fehler sein.

Muss jetzt nur noch eine fertige CE DLL finden, oder selbst kompilieren.

@Georg
Ich verwende VB2008 Pro, bzw. habe ich auch die VB2005 Pro.


----------



## Rainer Hönle (5 November 2010)

showview_123 schrieb:


> Ich habe in einen anderen Forum (VB) gelesen, dass es auch solche Probleme mit der DLL gegebene hat.
> 
> Wie Rainer schon erwähnt, liegt es sicher an der DLL.
> Ich verwende die Windows DLL, nicht die CE DLL.
> ...


Ein native Win32-DLL funktioniert nicht unter WinCE. Dies geht nur mit .net-DLLs. Und zu dieser Kategorie gehört libnodave nicht.
Hier hilft nur für WinCE und den entsprechenden Prozessor kompilieren.


----------



## showview_123 (5 November 2010)

@ Rainer

Danke nochmals für die Info.

Kannst du mir eventuell bei der Kompilierung einer libnodave DLL
für WinCE und ARM helfen.

Wäre wahrscheinlich auch für andere im Forum interessant, wenn
es eine fertige DLL gibt. Vermute ich mal. 

Meine Programmierkenntnisse in VB sind eher bescheiden, und richten
sich in erster Linie auf bunte Fenster mit Knöpfen. 

Danke.


----------



## Rainer Hönle (5 November 2010)

Für libnodave gibt es Bessere im Forum als mich, denn ich habe libnodave selbst nicht im Einsatz. Ich kümmere mich eher um ACCON-AGLink ;-)


----------



## showview_123 (5 November 2010)

Ok.

Dann wende ich mich an alle mit der Bitte:

Kann mir jemand eventuell bei der Kompilierung einer libnodave DLL
für WinCE und ARM helfen.

Danke.


----------



## Jochen Kühner (6 November 2010)

*Mhmm*

Du brauchst das platform sdk für wince und die compiler, dann soltest du das makefile anpassen, und dann wirsts compilieren können...


----------



## showview_123 (6 November 2010)

@ Jochen.

Danke für die Info.

Ich habe VB2005 Pro mit WinCE 6.0 Platformbuilder. Habe ich vom Hersteller des
Touchpanel mitbekommen. 
Ich glaube der Platformbuilder ist für das OS.

Ich kann unter VB2005 nur folgendes auswählen
Siehe angehängte Datei.

Ich tippe auf Class Library.

Wie schon gesagt sind meine Programmierkenntnisse auf diesem Gebiet mager.

Ich hoffe du kannst mir bitte weiterhelfen.

Falls du Skype hast, schick mir bitte per PN deine Kennung, sofern erwünscht.

Danke nochmals.


----------



## Jochen Kühner (6 November 2010)

*S7*

hasst du eigendlich auch schon http://s7net.codeplex.com/ probiert, das ist nur managed code, das wäre viel. einfacher!


----------



## showview_123 (8 November 2010)

Hallo Jochen.

Danke für den Link.
Funktioniert leider auch nicht auf dem Touchpanel.

Danke.


----------



## Jochen Kühner (9 November 2010)

Was läuft damit nicht? Welche Fehlermeldung?


----------



## showview_123 (10 November 2010)

@ Jochen

Ich habe die Fehlermeldung fotografiert.


----------



## Jochen Kühner (11 November 2010)

Ich denk mal die Ping Klasse wirds im CompactFramework vielleicht nicht geben!


----------



## showview_123 (26 Dezember 2010)

*Neuer Fehler*

Habe nach langem Suchen eine Anleitun gefunden, um libnodave für CE zu erstellen.
Hat soweit auch geklappt. :-D

Jetzt habe ich neue Probleme:
Wenn ich das Programm auf dem Touchpanel ausführe, erscheint folgende Fehlermeldung:


```
Error
ExceptionCode: 0xc0000005
ExceptionAddress: 0x405e2b50
Reading: 0x000000ac
```
Jetzt bin ich wieder ratlos


----------



## Jochen Kühner (27 Dezember 2010)

showview_123 schrieb:


> Habe nach langem Suchen eine Anleitun gefunden, um libnodave für CE zu erstellen.
> Hat soweit auch geklappt. :-D
> 
> Jetzt habe ich neue Probleme:
> ...



Wo hasst du den die Anleitung gefunden, das würde anderen viel. auch helfen.

Der Fehler bedeutet "memory access violation", kann natürlich auch an deiner compilierten DLL liegen, das da noch was falsch ist!


----------



## showview_123 (27 Dezember 2010)

*Nachtrag zum neuen Fehler*

Das die Anleitung hilfreich sein wird, habe ich eh gedacht. Hatte gestern nur keine Zeit mehr (müde) den Link einzufügen und genaueres zu schreiben.

Hier der Link zur Anleitung: 
http://www.ms-mueller.ch/wp/?cat=5

Der Verfasser des Blog verlinkt selbst einem bearbeiteten Code von libnodave (download), der schon einen Code enthält, für CE.

Interessant ist die Änderung vom Aufruf:

```
fds.rfd = libnodave.openSocket(sps_port, IP_b(0))
```
In der Änderung wird nämlich opensocket nicht mit String übergeben, sondern mit
Byte. Was im ersten Moment natürlich unpraktisch ist, da die IP-Adresse zuerst in
Byte vorliegen muß.

Auch hier gibts einen fertigen Code von einer sehr hilfreichen Seite:
http://dotnet-snippets.de/dns/ip-adresse-in-bytearray-SID199.aspx
(Funktion IP (String) in Byte)).

Die Übergabe der IP als String (wie ursprünglich im Quellcode) funktioniert unter
CE anscheinend nicht. Habe das getestet. Andere Fehlermeldung (muß ich nachreichen, hab sie nicht abgeschrieben, ist aber rekonstruierbar).

Und genau hier tritt dieser Fehler auf.
Ist nicht so einfach dauernd das Programm zu ändern, kompilieren, auf SD-Karte zu spielen, im Touchpanel (nicht Siemens!) zu testen.
Die Emulatoren imVS haben keinen ARM-Prozessor und können diesen scheinbar auch nicht simulieren (meiner Meinung nach). Ich bekomme 
dort nämlich eine andere Fehlermeldung, die ich schon kenne (PInvoke ..., siehe Eintrag http://www.spsforum.com/showpost.php?p=291081&postcount=5], )


----------



## showview_123 (22 Januar 2011)

*Keine Verbindung?*

Nach langem Tüfteln habe ich die DLL soweit hinbekommen, daß ich keine Fehlermeldung beim Aufruf des Programms (vom Touchpanel) bekomme.

Die einzige Meldung, die ich abfange, ist das ich keine Verbindung zur SPS bekomme.

Wie in anderen Foren, bzw. Threads zu lesen ist, spricht CE über einen anderen Port als XP, oder Windows allgemein.
Nur habe ich noch nicht herausgefunden, welcher Port.

Bei libnodave tue ich mich etwas schwer, da dies viel komplexer ist, als S7.net



Jochen Kühner schrieb:


> hasst du eigendlich auch schon http://s7net.codeplex.com/ probiert, das ist nur managed code, das wäre viel. einfacher!



Das Problem mit der Ping-Klasse im CF habe ich mit OpenNETCF gelöst.
http://www.opennetcf.com/Products/SmartDeviceFramework/tabid/65/Default.aspx

Hier habe ich das Problem mit dem Port, bzw. dass keine Verbindung zur SPS.


----------



## showview_123 (23 Januar 2011)

*Hilfeaufruf --> Untzerstützung*

Ich vermute das bei S7net, in der Datei PLC.cs eine neue CPU anlegen muß vom Typ S7-1200.
Hier werden vom Verfasser schon TSAP für die anderen CPUs (200, 300, 400) angeführt,
für die 1200 bin ich auf der Suche.

Weiß jemand wie ich die TSAP auslesen kann, mit S7 Basic? 

Würde mir wahrscheinlich sehr weiterhelfen.

Falls der Code von PLC.cs (mit OpenNETCF) auch benötigt werden, kann ich sie beifügen.

Danke.


----------

