PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zu programmierendes Softwaretool zum Platinenbohren gesucht!



Andree-HB
03.07.2008, 10:01
Diese Bitte geht an die Programmierer unter Euch :

Ich suche eine kleine Miniapplikation für eine Webcam, die auf einer kleinen Ständerbohrmaschine angebracht ist und auf eine zu bohrende Platine gerichtet ist.

Ich möchte das Videobild als Unterstützung zum Bohren benutzen, dafür möchte ich im Endeffekt ein mit dem Cursor frei zu positionierendes "Fadenkreuz" an der Stelle plazieren, an der die bestmögche Bohrung erfolgt.

Umsetzung : Kamera ausrichten, fixieren...eine Probebohrung machen, danach einmalig das Fadenkreuz anhand des Bohrloches "ausrichten", dann kann man danach problemlos die Platinen für die Folgebohrungen immer zu diesem Punkt hinschieben und dann passgenau Bohren.

...denn meine Augen werden leider auch nicht besser... ;-)


Ich habe mal ein Standbild mitgeliefert :

http://www.pixelklecks.de/pictures/bohrkreis.jpg


...das dürfte doch für einen Programmierer ein Klacks sein, oder ?

theborg
03.07.2008, 10:39
Hi nen Kollege von mir hat des mit nen OSD gemacht einfach nen kleines Einblenden und in eagel ne Bohrschablone drucken dann kann man des sehr genau ausrichten.

sihe http://www.progforum.com/showthread.php?t=8386

BastelWastel
03.07.2008, 11:20
Auf Webcamstreams noch nie gemacht, nur auf Screenshots..sprich Standbilder, aber mit paar Codeschnippsel bestimmt machbar.
Vllt. kann ich am Wochenende paar Minuten spielen und schauen was sich auf die schnelle zusammen spaxxen laesst.

mondesser
03.07.2008, 16:22
Wie umfangreich soll das denn sein?
einfach nur ein fenster das den webcam stream anzeigt und man aufs bild klicken kann um ein kreuz zu plazieren?

fhs
03.07.2008, 16:43
Hallo,

klingt wie eine gute Idee, die ich Dir auf keinen Fall madig machen will.

Trotzdem ein Gegenvorschlag: Du könntest auf SMD umsteigen und eine Kamera zur Vergrößerung beim Löten nehmen. Ich selbst verwende ein Stereo-Mikroskop zum Löten von 0402 etc. Bauteilen. Ob eine monokulare Vergrößerung ausreichend wäre, weiß ich allerdings nicht.

Gruß

Fred

Andree-HB
03.07.2008, 16:43
einfach nur ein fenster das den webcam stream anzeigt und man aufs bild klicken kann um ein kreuz zu plazieren?


..genau das - nicht mehr, nicht weniger... ;-)

Bluesmash
03.07.2008, 19:12
du könntest doch einfach nen kleinen fernseher danebenstellen auf dem das bild zu sehen ist, und dann eine folie mit aufgedrucktem fadenkreuz uf den tv kleben :) war nur gerade so ne idee ;)

gruss bluesmash

mondesser
03.07.2008, 19:27
Also, ich habe mal 2 Stunden rumprobiert:
Habe ein Fenster, in dem der webcam Stream angezeigt wird, und da drüber wird mit jedem Frame eine 2d zeichnung gelegt.

Ist bis jetzt allerdings alles in einer Klasse und sehr unsauber programmiert.

Gib mir noch 1-2 Tage, dann sollte es halbwegs benutzbar sein (mit speichern der Zielkreuz-Koordinaten etc.).

update:
So siehts im moment aus:
http://img379.imageshack.us/img379/3853/51754158ku2.th.png (http://img379.imageshack.us/my.php?image=51754158ku2.png)

BastelWastel
03.07.2008, 23:53
Uiuiui...
zwei Doofe ein Gedanke..

Hier mein Werk..
- mindestens genau so unsauber programmiert und nicht wirklich ressourcen schonend
- noch kein speichern/laden von Profilen (aber mit 2 Mouseclicks is das Ding eingestellt)
- das geplante Zoomfenster das den Bereich um das Fadenkreuz vergrössert ist noch nicht fertig
- und ich hab deutlich weniger Liebe in das Aussehen investiert..

http://img164.imageshack.us/img164/4071/crosshairyq0.th.jpg (http://img164.imageshack.us/my.php?image=crosshairyq0.jpg)

Etz hast du die Qual der Wahl ;)

Jaecko
04.07.2008, 06:54
Kuzre Frage meinerseits: Ist diese Art Webcam-Bildverarbeitung auch unter VB6 (schon) möglich?... glaub da muss ich mich auch mal einarbeiten...

mondesser
04.07.2008, 07:31
@Jaecko: das geht über die Windows API, also sollte auch schon in vb6 gehen.

@BastelWastel: Irgendwie sieht deins deutlich durchdachter aus :-)
Vielleicht sollten wir uns einfach zusammetun...

Andree-HB
04.07.2008, 07:31
Uiuiui...
zwei Doofe ein Gedanke..


..na super, dann bin ich mit so queren Gedanken nicht alleine... ;-)

- entspricht schon ziemlich meiner Vorstellung -

Übrigens, was benutzt Du für eine Webcam, die eine so gute Auflösung hat / Makrobereich abdeckt ?

BastelWastel
04.07.2008, 08:33
@mond: Ist leider nur n dickes codeschnippsel-flickwerk da quick&dirty und wenn die Cam streamt kann man die Zwischenablage nicht nutzen weil ich den Stream nicht einbinde sondern rein kopiere,..darum "nicht ressourcenschonend" ;)
Von daher lohnt es ned wirklich meinen code weiter zu verwerten.

@andree: Ist eine Philips SPC900, hab den Farb-CCD gegen B/W getauscht und die Cam in RAW-Mode gesetzt..sprich 3x bessere Empfindlichkeit und Bild ist nicht komprimiert.
Dann natuerlich die kleine Linse runter, die taugt nix, und bessere Optik ran.

Die Quadrate sind ca 1cm gross, aufgezeinchet wurde von 3m Distanz.
Optik ist nicht gut, sonst waer es noch schaerfer...aber is eh nur zum testen.

Aber SPC900 ist auch so sehr gut, hat nen echten CCD, keinen CMOS.

BastelWastel
04.07.2008, 09:12
Deinem Bild entnehme ich dass deine Webcam 640x480px hat?

mondesser
04.07.2008, 19:13
Habe nochmal etwas gebastelt:
Das ist eine Testversion, zum rumspielen.
Läuft zur zeit noch sehr laggy weil alles in einem Thread ist.
Das Speichern/Laden hab ich erstmal rausgenommen, da ich einige Änderungen gemacht habe und das nun nichtmehr funktioniert :D .

Einfach mal n bisschen mit rumspielen und Vorschläge machen.

Benötigt .Net 2.0 oder höher.

BastelWastel
04.07.2008, 20:13
Gleich mal anschauen und Ideen klauen :D

BastelWastel
04.07.2008, 20:31
Mh ok..
Du hast nen Fehler bei der Wahl der Videoquelle, wenn man 2 Streams öffnet hängt sich der Rechner auf.
Entweder den Auswahl-Dialog deaktivieren oder vorher der alten Stream schliessen.

Ansonsten ganz O.K.
Bin fast erleichtert dass deins genau so lagt wie meins :D
Dafür kann man bei dir die Zwischenablage noch verwenden da du den Stream nicht in eine zweite Box kopierst.
Gibt es ne alternative zum WM_CAP_EDIT_COPY?

Andree-HB
04.07.2008, 21:31
Männers - das gefällt mir Alles schon sehr gut....das reicht (mir) fast schon - Danke schon mal dafür !

...werde mal gucken, dass ich vielleicht meinen Bohrständer in der Z-Achse motorisiere und vielleicht mit `nem Fußtaster "auslöse"...dann kann man sicherlich ziemlich fix `n Platine perfekt bohren. ;-)

mondesser
04.07.2008, 21:59
Mh ok..
Du hast nen Fehler bei der Wahl der Videoquelle, wenn man 2 Streams öffnet hängt sich der Rechner auf.
Entweder den Auswahl-Dialog deaktivieren oder vorher der alten Stream schliessen.

Ansonsten ganz O.K.
Bin fast erleichtert dass deins genau so lagt wie meins :D
Dafür kann man bei dir die Zwischenablage noch verwenden da du den Stream nicht in eine zweite Box kopierst.
Gibt es ne alternative zum WM_CAP_EDIT_COPY?

hmm joa, ich schließe den stream nicht wieder, stimmt :D
Gleich mal beheben.

Das laggen entsteht scheinbar durch die geringe framerate der webcam.
Wenn man die cam ins licht hält, oder irgendwie anders die belichtungszeit senkt, lagt die application nicht mehr.

Nächstes mal hänge ich den src code an, dann musst du nicht extra den Reflector bemühen :D

Mal eben was anderes:
gibt es einen Weg die Pen Klasse zu serialisieren?
Daran scheitert das speichern im moment, und eigentlich hab ich keine lust mir einen eigenen serializer zu schreiben.

edit: Andree du wohnst bei mir um die ecke :P

BastelWastel
04.07.2008, 23:12
Wie meinst du serialisieren?

Ich hab gerade ein anderes Problem..
Ich versuche das Bild in .Image zu schreiben ohne die Zwischenablage zu benutzen..dazu hole ich mir die Frames via WM_CAP_SET_CALLBACK_FRAME

##########################
Public Function FrameCallbackTarget(ByVal hwnd As IntPtr, ByRef lpVHdr As VIDEOHDR) As IntPtr
Dim oBMP As New Bitmap(640, 480, 640 * 3, Imaging.PixelFormat.Format24bppRgb, New System.IntPtr(lpVHdr.lpData))

'''''nur zum testen'''
Dim col As System.Drawing.Color
col = oBMP.GetPixel(10, 10)
txt1.Text = txt1.Text & col.R & vbCrLf

picCapture.Image = oBMP

End Function
################

Ich kann die Pixel auslesen, das Bitmap ist also gefüllt..aber wenn ich es der picbox zuweisen will bleibt selbige leer..
..ich steh bestimmt irgendwie aufm schlauch..

mondesser
05.07.2008, 16:25
Serialisieren = aus einem object die wichtigen properties auslesen und diese in ein bestimmtes format speichern.
Dazu hat .net mehrere Klasssen z.b. den BinaryFormatter der aus einem object einen byte stream macht. oder den XmlSerializer, der ein object in xml speichert. Leider ist die Pen klasse als "nicht serialisierbar" gekennzeichnet.
Macht aber nichts, habe einen anderen weg gefunden :)

Mit dem image kann ich dir leider nicht helfen, habe mich noch nie wirklich mit pictureboxen auseinandergesetzt.
Ich denke mal von mir wird es morgen eine neue version geben mit speichern/laden und hoffentlich mehr performance (auch wenn ich nicht weiß wo ich die her nehmen sollte^^) :D


edit:
Noch schnell ne idee: Könnte man nicht den bohrer über die software steuern?

BastelWastel
05.07.2008, 20:38
Mh...merkwürden, bring nur irgendwas von geschützter Speicher oder so..dann werd ich mein Zoom fenster wohl doch übers Clipboard machen müßen..
Kann Andree halt kein copy&paste machen wärend er bohrt ;)

Willst du Bilderkennung des Bohrlochs machen mond? :D

BastelWastel
06.07.2008, 01:56
So, nachdem ich den ganzen Tag innenausbau gemacht habe bin ich doch noch bissl zum spielen gekommen.
Das Zoom Fenster funzt nun auch.
Morgen noch schnell Save/Load für die Setting und bissl UI aufräumen dann mach ich mal nen Upload.

http://img244.imageshack.us/img244/8415/crosshairoj1.th.jpg (http://img244.imageshack.us/my.php?image=crosshairoj1.jpg)

mondesser
06.07.2008, 11:40
Ich habe nicht die geringste ahnung wie man Bilderkennung macht, aber währe doch cool :D
Habe gerade mal versucht meine DV-Cam anzuschließen, bin kläglich gescheitert, weil sie keinen wdm treiber hat. Aber windows kann einen Stream der cam anzeigen, also muss es einen weg geben. Da versuch ich mich mal drann heute. DV-Cams haben ja eine wesentlich bessere qualität als so ne olle webcam.

BastelWastel
06.07.2008, 12:36
Die Frage ist ob Andree zum Platinen bohren ne DV Cam kaufen will ;)
Und täusch dich bei Webcams mal nich..die SPC900 hat nen ganz brauchbaren CCD von Sony drin,
was die Quali kaputt macht ist die mini Plastiklinse.
Tausch die gegen ne gute Optik aus Glaslinsen und Andree kann mit der Webcam gleich noch die Oberflächenstruktur seiner Bohrung begutachten :D

Andree-HB
06.07.2008, 13:14
Die Frage ist ob Andree zum Platinen bohren ne DV Cam kaufen will


...sicherlich nicht, denn es wäre schon eine da ! ;-)
Bekomme da aber auch keinen WDM-Treiber drüber angebunden.

mondesser
06.07.2008, 16:25
Soo, habe nun nach zig stunden rumprobieren einen weg gefunden auch DV cams anzuzeigen.
Leider hat sich der code so weit geändert, das nichtmal mehr das zielkreuz funktioniert :D

BastelWastel
06.07.2008, 17:08
Soo, habe nun nach zig stunden rumprobieren einen weg gefunden auch DV cams anzuzeigen.
Leider hat sich der code so weit geändert, das nichtmal mehr das zielkreutz funktioniert :D
:Haue

@Andree
Hier mal zum antesten mein Tool. .NET Framework haste eh drauf, sag bescheid wenn er noch Files vermisst.

Änderungen:
- Im ZoomFenster wird das Fadenkreuzes nicht mehr einfach mitvergrößert sondern neu gezeichnet.
- Settings können in XML Files gespeichert/geladen werden.
- Im UI herrscht nun Zucht und Ordnung ;)

mondesser
06.07.2008, 17:36
wow, schick schick :)
Um längen besser als meins.
Aber wart nur ab, wenn ich das mit dem DV stream hinbekomme... ^_^

Wobei ich son bisschen verzweifle gerade, es scheint keinen weg zu geben aus einem IVideoWindow ein handle zu bekommen.... Und ohne handle kann ich nicht drauf zeichnen :(

BastelWastel
06.07.2008, 17:45
Danke :)

Da kann ich dir mangels DV Cam leider nicht helfen.
Jetzt gibt es erst mal was an die Kauleiste, sonst sterb ich hier ;)

Andree-HB
06.07.2008, 18:37
Hier mal zum antesten mein Tool. .NET Framework haste eh drauf, sag bescheid wenn er noch Files vermisst.


...grande cool - klappt Bestens...und entspricht perfekt meinem Wunsch !!!


http://www.pixelklecks.de/pictures/crosshair.jpg


!!! Dankeschön !!!

BastelWastel
06.07.2008, 18:58
Nichts zu danken, das kann ich bestimmt weiterverwerten..falls ich mal nen Bot bewaffne muß ich ja auch ziehlen können ;)

Freut mich dass es dir gefällt :)

Andree-HB
11.07.2008, 19:10
Hier übrigens mal ein paar Bilder vom Versuchsaufbau :

http://www.pixelklecks.de/pictures/crosshair_1.jpg

http://www.pixelklecks.de/pictures/crosshair_2.jpg

http://www.pixelklecks.de/pictures/crosshair_3.jpg

http://www.pixelklecks.de/pictures/crosshair_4.jpg


...wie man sieht, ich muss unbedingt die Späne wegblasen ! ;-)

BastelWastel
12.07.2008, 10:59
mh..reicht deine LED vllt um durch die PCB von unten zu beleuchten?
Vllt kannste dir noch ein kleines Tele-Objektiv bauen ;)

Bekommst du keinen ärger von der Hausherrin wenn du in der Küche deine Boards bohrst? :-b

BastelWastel
17.11.2010, 10:18
Da immer mal wieder Anfragen kommen..
Ja, das Programm darf gerne jeder der dafuer Verwendung hat kostenlos benutzen.
Falls sich jemand moralisch genoetigt fuehlt mich dafuer zu entlohnen moechte ich auf die Beerware Lizenz (http://de.wikipedia.org/wiki/Beerware) verweisen ;)

Aenderungen kann ich leider nicht mehr vornehmen da der Quellcode wohl der letzten Formatierung zum Opfer fiel.

Gruss, Andreas

Slowly
25.01.2017, 07:17
Guten Morgen Gemeinde,
ich müsste diesen Thread noch mal herausholen.
Hat jemand eine Idee ob es inzwischen so ein Tool gibt bei dem man die Box größer ziehen kann?
Das Programm von BastelWastel ist super klasse aber für eine Positionierungsaufgabe benötige ich
eine Postionierbox haben, die größer skalierbar ist. Von DNT habe ich fälschlicherweise die Digimicro Profi gekauft da die Software den Anschein gemacht hat das es gehen würde. Leider hat es in der Live Ansicht nur ein Fadenkreuz und ein grafisches Overlay lässt sich nicht machen.