INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

SNAPI DLL zur Bildaufnahme nutzen. Motorola DS3508



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

18.06.2014, 15:07 (Dieser Beitrag wurde zuletzt bearbeitet: 18.06.2014 15:09 von Rizek.)
Beitrag #1

Rizek Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Jun 2014

2013
2014
DE



SNAPI DLL zur Bildaufnahme nutzen. Motorola DS3508
Hallo zusammen,

mithilfe eines Motorola Scanners DS3508 möchte ich ein Bild aufnehmen (jpeg) und dieses für eine Bildverarbeitungssoftware nutzen. Dies soll mithilfe von LABVIEW realisiert werden. Bereits in Achimedes Thema (Achimedes Thema SNAPI DLL einbinden) wurden einige ähnliche Fragestellungen diskutiert.
Die Ansteuerung des Scanners funktioniert mit SNAPI, dazu gibt es bereits eine DLL.

0.0 .pdf  SnapiProgrammersGuide_7137001.pdf (Größe: 1,02 MB / Downloads: 9590)

0.0 .zip  SNAPI_ausUserlib.zip (Größe: 317,01 KB / Downloads: 305)


Ich habe auch bereits die vorhandenen Beispiel VI's getestet um mich in das Thema einzuarbeiten.

Die Bildaufnahme ist mir scheinbar gelungen (wenn ich den Piepton des Scanners richtig interpretiere).
Allerdings stellt sich mir jetzt die Frage wie handhabe ich die Übergabe der Bilddaten. Bei SNAPI_SetImageBuffer erhalte ich einen Pointer auf eine Adresse. Doch wie lese ich diese Adresse aus bzw. wie erhalte ich die Datenmatrix des Bildes.

Ein Rätsel ist mir auch wie das Funktioniert mit den Windows Messages. Diese benötige ich um die Signale des Sensors zu interpretieren, wo kann ich aber genaueres dazu lesen?

0.0 .zip  Windows Messaging.zip (Größe: 173,8 KB / Downloads: 267)


Ich habe hier mal ein kleines Testprogramm welches ein Bild macht, aber leider kann ich nicht darauf zugreifen. Ich habe ein paar Dinge geändert von Achimedes Programm aber die Windows Messages und die auswertung des Zeigers weiß ich nicht wie das funktioniert.
13.0 .vi  spielerei.vi (Größe: 64,19 KB / Downloads: 267)


Ich hoffe ihr könnt mir weiterhelfen!

Viele Grüße

Rizek
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.06.2014, 19:16 (Dieser Beitrag wurde zuletzt bearbeitet: 18.06.2014 19:21 von rolfk.)
Beitrag #2

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: SNAPI DLL zur Bildaufnahme nutzen. Motorola DS3508
(18.06.2014 15:07 )Rizek schrieb:  Hallo zusammen,

mithilfe eines Motorola Scanners DS3508 möchte ich ein Bild aufnehmen (jpeg) und dieses für eine Bildverarbeitungssoftware nutzen. Dies soll mithilfe von LABVIEW realisiert werden. Bereits in Achimedes Thema (Achimedes Thema SNAPI DLL einbinden) wurden einige ähnliche Fragestellungen diskutiert.
Die Ansteuerung des Scanners funktioniert mit SNAPI, dazu gibt es bereits eine DLL.


Ich habe auch bereits die vorhandenen Beispiel VI's getestet um mich in das Thema einzuarbeiten.

Die Bildaufnahme ist mir scheinbar gelungen (wenn ich den Piepton des Scanners richtig interpretiere).
Allerdings stellt sich mir jetzt die Frage wie handhabe ich die Übergabe der Bilddaten. Bei SNAPI_SetImageBuffer erhalte ich einen Pointer auf eine Adresse. Doch wie lese ich diese Adresse aus bzw. wie erhalte ich die Datenmatrix des Bildes.

Ein Rätsel ist mir auch wie das Funktioniert mit den Windows Messages. Diese benötige ich um die Signale des Sensors zu interpretieren, wo kann ich aber genaueres dazu lesen?


Ich habe hier mal ein kleines Testprogramm welches ein Bild macht, aber leider kann ich nicht darauf zugreifen. Ich habe ein paar Dinge geändert von Achimedes Programm aber die Windows Messages und die auswertung des Zeigers weiß ich nicht wie das funktioniert.

Ich hoffe ihr könnt mir weiterhelfen!

Viele Grüße

Rizek

Erster Crashgrund: Bei DSNewPtr() allozierst Du einen Pointer mit 50 Byte aber erzählst SNAPI_SetImageBuffer() heiter fröhlich, dass der Buffer 5000 Byte gross ist!!!! Gute Nacht LabVIEW!!!!

Ebenfalls sinnvoll wäre es dann um die Initialize Array Node mit der selben Nummer anzurufen um ein entsprechen grosses Array anzulegen und auch bei MoveBlock() diese Nummer beim 3. Parameter zu verwenden, aber diese Nummer darf sicher nie mehr sein dann was Du in DSNewPtr() an Bytes alloziert hast. Danach sollte man am Ende auch DSDisposePtr() aufrufen, ansonsten produzierst Du ein Speicherleck.

Der Pointer den Du in DSNewPtr() alloziert hast sollte durchgehend in allen Call Library Nodes als Pointer sized Integer definiert sein. Im Momen liefert DSNewPtr() zwar einen Pointer sized Integer zurück aber alle anderen Funktionen verwenden I64. Das geht dann aber in LabVIEW 32 Bit nicht korrekt.

Die Windwos Message Queue Library verwendet momentan Pseudo Refnums für die window Handle (und auch die Message Queue Reference). Aber eine LabVIEW Refnum ist immer 32 Bit gross, ein Windows Handle aber 32 bit unter LabVIEW 32 Bit und 64 Bit unter LabVIEW 64 Bit. Mit der heutigen Windows Message Queue kannst Du also nur unter LabVIEW 32 Bit arbeiten, auch da ich nicht glaube dass die dazugehörende DLL bereits für 64 Bit kompiliert wurde. Aber selbst wenn Du eine 64 Bit DLL hättest ginge es wegen der Verwendung einer LabVIEW Refnum für diese Datentypen ohnehin falsch. Um diese für LabVIEW 64 ko,mpatibel zu machen muss man sowohl die DLL als 64 Bit DLL kompilieren als auch die Queue Reference und die window Handle im Frontpanel als 64 Bit Integer definieren, aber in allen Call Library Nodes überall als Pointer sized Integer definieren.

Zu guter letzt. Die SNAPI ist so gebaut dass sie Dir ein Windows Event schickt wenn ein Scan verfügbar ist. Erst bei Empfang dieser Message macht es Sinn um mit MoveBlock() die Daten aus dem Buffer im Pointer herauszukopieren. Davor ist durch die DLL nichts im Buffer abgelegt, liest Du also die ursrprünglichen Zufallswerte zurück die im Speicher nach Aufruf von DSNewPtr() bereits lagen.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.06.2014, 22:58 (Dieser Beitrag wurde zuletzt bearbeitet: 18.06.2014 22:59 von rolfk.)
Beitrag #3

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: SNAPI DLL zur Bildaufnahme nutzen. Motorola DS3508
Habe mal eine "etwas" überarbeitete Version hier angehängt.

Die Windows Message Library wurde etwas angepasst ist aber noch immer nur 32 Bit.
Bei der SNAPI Library habe ich alle VIs die in diesem Beispiel nicht verwendet werden rausgeschmissen. Die die drin sind sind soweit angepasst dass Sie auch mit einer 64 Bit DLL in 64 Bit LabVIEW funktionieren würden.

Dein Spielerei.vi ist aufgeräumt und soweit verbessert.

ABER: ich habe keine Hardware und kann es nicht testen. Dieses VI is ohne Gewähr, auf eigenes Risiko und blabla... Es können noch Bugs drin sein, und Dein Computer kann sich in Flammen auflösen bei Benützung davon. Big Grin

Es ist aber garantiert wesentlich besser und korrekter als das was Du hattest! Cool


0.0 .zip  SNAPI.zip (Größe: 281,16 KB / Downloads: 282)

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.06.2014, 15:10 (Dieser Beitrag wurde zuletzt bearbeitet: 19.06.2014 15:11 von Rizek.)
Beitrag #4

Rizek Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Jun 2014

2013
2014
DE



RE: SNAPI DLL zur Bildaufnahme nutzen. Motorola DS3508
(18.06.2014 22:58 )rolfk schrieb:  Habe mal eine "etwas" überarbeitete Version hier angehängt.

Die Windows Message Library wurde etwas angepasst ist aber noch immer nur 32 Bit.
Bei der SNAPI Library habe ich alle VIs die in diesem Beispiel nicht verwendet werden rausgeschmissen. Die die drin sind sind soweit angepasst dass Sie auch mit einer 64 Bit DLL in 64 Bit LabVIEW funktionieren würden.

Dein Spielerei.vi ist aufgeräumt und soweit verbessert.

ABER: ich habe keine Hardware und kann es nicht testen. Dieses VI is ohne Gewähr, auf eigenes Risiko und blabla... Es können noch Bugs drin sein, und Dein Computer kann sich in Flammen auflösen bei Benützung davon. Big Grin

Es ist aber garantiert wesentlich besser und korrekter als das was Du hattest! Cool

Hallo Rolf,

vielen vielen Dank für deine Tipps und natürlich auch für die Verbesserungen!! Ich werde es morgen durcharbeiten, versuchen alles nachzuvollziehen und natürlich testen. Ich hoffe ich kann mich weiterhin mit Fragen an dich wenden, falls ich manches nicht so ganz verstehe.


Mit größtem Dank!!!!,

Beste Grüße

Rizek
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.06.2014, 11:08
Beitrag #5

Rizek Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Jun 2014

2013
2014
DE



RE: SNAPI DLL zur Bildaufnahme nutzen. Motorola DS3508
Beim Ausführen der überarbeiteten Fassung der spielerei tritt folgender Fehler in meiner 32 bit LabView 2013 Version auf

   

Woran könnte dieser Fehler liegen? Ich hab mal als Test die alte Wait Windows Message eingefügt. Allerdings mit dem selben Ergebnis/Fehler.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.06.2014, 16:29 (Dieser Beitrag wurde zuletzt bearbeitet: 20.06.2014 16:34 von rolfk.)
Beitrag #6

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: SNAPI DLL zur Bildaufnahme nutzen. Motorola DS3508
(20.06.2014 11:08 )Rizek schrieb:  Beim Ausführen der überarbeiteten Fassung der spielerei tritt folgender Fehler in meiner 32 bit LabView 2013 Version auf

Woran könnte dieser Fehler liegen? Ich hab mal als Test die alte Wait Windows Message eingefügt. Allerdings mit dem selben Ergebnis/Fehler.

Also ganz sicher bin ich nicht, aber da war noch ein kleiner Fehler in Create Windows Message Queue.vi so dass das window handle nicht richtig übergeben wurde. Ich gehe da mal schauen. Habe die Windows Message Queue DLL neu kompiliert und angepasst dass es sowohl mit 32 bit als auch 64 laufen sollte, hatte aber noch keinerlei Zeit um das zu testen. Das möchte ich noch tun um zumindest sicher zu sein, dass die Windows Message Queue sicher läuft. Die SNAPI Interface kann ich nicht testen, aber da ich die Windows Message Queue DLL angepasst habe, will ich erst sicher sein, dass die zumindest noch läuft, ansonsten kommst Du eh keinen Millimeter weiter.

Du kannst die neue Version der Message Library (vom vorigen Post von mir) insoweit anpassen, dass Du in Create Windows Message Queue.vi bei der Call Library Node den zweiten Parameter (hWnd) für das window handle dahingehend konfigurierst, dass dieser Parameter nicht by Value sondern by Reference übergeben wird (Pass: Value => Pass: Pointer to Value). Später folgt noch eine überarbeitete Version von mir.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
23.06.2014, 19:54 (Dieser Beitrag wurde zuletzt bearbeitet: 23.06.2014 19:55 von rolfk.)
Beitrag #7

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: SNAPI DLL zur Bildaufnahme nutzen. Motorola DS3508
Hier ist eine Version mit angepasster Windows Message Queue library. Diese funktioniert sowohl für 32 Bit und 64 Bit. Aber die SNAPI DLL habe ich nicht in 64 Bit.


0.0 .zip  SNAPI.zip (Größe: 371,82 KB / Downloads: 310)

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Java JAR-Bibliothek in Labview nutzen A_Bachmann 2 7.368 16.05.2014 14:28
Letzter Beitrag: A_Bachmann
  LabView DLL in C# nutzen arphex 3 8.956 24.08.2011 07:45
Letzter Beitrag: M@rRy
  SNAPI DLL einbinden. Scanner MS4407 Achimedes 12 15.805 22.06.2010 07:34
Letzter Beitrag: Achimedes
  7zip dll in LabVIEW nutzen theumi 3 8.274 13.03.2009 10:26
Letzter Beitrag: RoLe

Gehe zu: