PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Diode mit Pc zum Leuchten bringen (kein Plan)



MischaMV
03.03.2005, 19:36
Hallo.Ich habe da 'ne Frage.Ich will eine Diode mit Hilfe von einem Transistor über Seriellen Port Com1 oder Com2 zum leuchten bringen. Wie kann ich sowas über Word, Excel oder Basic machen. Und welche Anschlüße muss ich da überhaupt verbinden.
Gruß Michi.

binaer
03.03.2005, 19:40
Einen Transistor brauchst du dazu nicht. Dafür einen Widerstand.
Mit Word oder Excel kannst du das ganz sicher nicht. Basic programmier ich selber nicht, müsste aber gehen. Um einzelne Pins auf High oder Low zu setzen brauchst du unter Win2k/XP aber einen Treiber (eine dll) der deine Signale durchschlauft, denn diese Windows Versionen erlauben dem Programmierer/Benutzer keinen direkten Hardwarezugriff.
lg binaer

MischaMV
03.03.2005, 19:43
Ja und wie kann ich diese einzelne Pins ansteuern?

binaer
03.03.2005, 19:56
Wie das bei basic genau läuft, kann ich dir nicht sagen, bei c/c++ könnt ich dir besser helfen.
Du hast dann eine dll, und eine header datei, die du einbinden musst und so durch einfache befehle einzelne pins steuern kannst. Bei win95/98 würde es einfacher mit Assemblerstücken gehen, die du im Code einbindest, win2k/XP lässt das leider nicht mehr zu.
lg binaer

03.03.2005, 20:28
Mit c/c++ kannst du mir eigentlich auch erklären.
Danke.

binaer
03.03.2005, 20:45
Im Anhang ist eine zip datei mit einem Beispielcode (serial bsp.cpp) und zwei header dateien zum Einbinden. Im Unterordner befinden sich alle dateien für den Treiber inkl. beschreibung zur Installation etc.
Zu beachten ist noch, dass die einzelnen bits als zweierpotenzen anzusprechen sind. d.H. das hinterste bit ist 1, das zweite 2, das dritte 4, ...
Sonst sollte es eigentlich selbsterklärend sein. Sonst einfach fragen.
lg binaer

michiE
03.03.2005, 21:07
Wieso nicht LPT ???

binaer
03.03.2005, 21:16
Kommt etwa aufs selbe raus, ausser das man eine andere dll braucht ;)
Soviel ich weiss ist der Com Port weniger empfindlich, dafür kann man beim Parallel Port mehr pins benutzen. Com kann man hingegen alle sowol als input wie auch als output nehmen.
Ich benutze um so relais zu schalten auch den Parallel port, aber nur weil an den diesen PC an den Com Port bald mal mein Roboterarm kommt, der dann meine Kaffeemaschine zu bedienen hat.
lg binaer

Blackbird
04.03.2005, 09:18
Mit C/C++ eine rote Low-Current-LED, die mit der Anode an GND (Pin 5) und mit der Kathode über einen Vorwiderstand 3,3k - 3,9k an RTS (Pin 7) angeschlossen ist, zum Leuchten zu bringen, ist ein simples Programm notwendig:


#include <windows.h>

int main (void)
{
HANDLE hPort;

hPort = CreateFile (TEXT("COM1"),
GENERIC_READ | GENERIC_WRITE,
0,
0,
OPEN_EXISTING,
0,
0);

EscapeCommFunction (hPort, SETRTS); // RTS setzten
Sleep (2000);
EscapeCommFunction (hPort, CLRRTS); // RTS rücksetzten
Sleep (2000);
EscapeCommFunction (hPort, SETRTS); // RTS setzten
Sleep (2000);

CloseHandle (hPort);

return (0);
}

Für andere LEDs ist nur der Vorwiderstand neu zu dimensionieren.

In Basic/VB geht das über die port.dll von B. Kainka (http://www.b-kainka.de/msrwin.htm):


Attribute VB_Name = "Port"
Declare Function OPENCOM Lib "Port" (ByVal A$) As Integer
Declare Sub RTS Lib "Port" (ByVal b%)
...
i = OPENCOM("COM1,9600,N,8,1")
If i = 0 Then MsgBox ("Schnittstelle nicht verfügbar!")
RTS 1
DELAYUS (10)
RTS 0
DELAYUS (10)
RTS 1
...


Alternativ kann man auch die Port.dll in C/C++ benutzen:


typedef int (CALLBACK* LPFNDLLFUNC)(char*);
char szFuncName[] = "OPENCOM";
...
OPENCOM "COM2: baud=19200 data=8 parity=N stop=1"
...
typedef int (CALLBACK* LPFNDLLFUNC)(WORD);
char szFuncName[] = "RTS";
...
RTS "1";


Das sind aber nur code-Beispiele, einbauen in Deinen Code mußt Du schon alleine.

Blackbird
PS: Geht für W95/98/NT/2000/XP/ME. Unter W95/98 könnte man in C/C++ auch inp(...) und outp(...) (oder inport(...) und outport(...)) verwenden und direkt auf die UART-Register zugreifen. Assembler braucht man nur, wenn man interruptgesteuert einlesen will. Unter NT aufwärts braucht man keinen Assembler dazu mehr, weil das Win-Api alle Funktionen bereitstellt.

04.03.2005, 18:55
Hi.Hab alles gemacht wie du mir gesagt hast mit C/C++ copiller test.exe gemacht Diode geht nicht.
gruß Michi.

binaer
04.03.2005, 23:10
Wie wer gesagt hat?
Welche Version hast du probiert, meine oder Blackbird's?

05.03.2005, 14:43
HI. Ich habe blackbird seine ausprobiert. Bei deiner binaer fehlt mir "iostream.h". Also kann ich die Datei serial bsp.cpp nicht kompilieren.
Binaer, wo soll ich eigentlich meine Diode anschließen, auch GND Pin 5 unr RTS Pin 7

binaer
05.03.2005, 19:43
1. IOstream.h ist eine Standardbibliothek
2. Du kannst 8 LED's anschliessen. Bei dem Beispielprogramm schaltest du mit der Tastatur mit 1-8 die jeweilige LED ein oder aus.
lg binaer

Hollowman4(kein bock)
05.03.2005, 21:09
http://www.8ung.at/hollow/Elexs.rar Da hab ich mal auf die schnelle für dich geschrieben. ;)
Spricht nur com port1 An ;)
Sollte funktionieren ;) Habs selbst mit meinem Elexs board getestet !!!!!! ;) Schaltet die anderen Ports aber wieder ab wenn du einen anderen an machst ;) Und äh ja Basic projekt ist drin ;)
Dürft gerne veröffentlichen ;) Und verlinken(Was aber recht dofo ist bei 8ung wegen server ausfällen) :D Aber naja so toll ist das programm net also hät ich mir das gelabber sparen können
PS: hab kein bock mich einzulogen :D

MischaMV
05.03.2005, 22:26
Sers.Wenn das Programm starte kommt folgende Fehlermeldung raus
Run-Time Error '48':
File Not found ELEXIS
fehlt mir da 'ne Bibliothek??

hollowman4(..
05.03.2005, 23:34
UPSSSSSSSSSS Sry hatte ich vergessen mit rein zu packen ;) ist jetz drin hier nochmal der Link http://www.8ung.at/hollow/Elexs.rar
SRY :)
mfg sven

MischaMV
06.03.2005, 00:50
Guten Abend.Also Die rote Leuchtdiode habe ich erstmal GND-RTS, dann GND-DTR und anschließend GND-TXD. Sie leuchtet nicht. Übrigens wenn ich LED GND-DSR verbinde leuchtet sie und nach dem ich DTR geklickt habe nicht mehr usw.
Danke für die Bemühungen.
gruß Michi.

06.03.2005, 02:01
Das muss Funktionieren ;) GND-DSR kann net gehen DSR isn eingang ? o.O kannst zwar DSR wie gnd behandeln aber anders net ?!
Also das Programm funzt 100% und es schaltet bei AN nur entsprechenden port auf 1 und bei AUS sind alle Drei aus ;) könnte für aus zwar einen button nehmen aber egal ..... :D
Kann ja vielleicht die Tage nochmal Ändern das er nur den jeweiligen port anspricht das man 3 Led,s gleichzeitig leuchten lassen kann .. ;) und irgendwann vielleicht mit den eingängen dazu .. ;) Aber naja muss mich noch in BAsic rein fuchsen :) Kannst mir ja email schreiben ... hollowman4@freenet.de ;)

binaer
06.03.2005, 10:58
GND-DSR kann net gehen DSR isn eingang ?
Soviel ich weis sind doch beim COM Port alles I/O-Ports. Er wird zwar bei der Datenübertragung nicht genutzt, aber das ist ja egal. Bei meinem Programm kann ich zumindest 8 Pins (9ter = GND) ansteuern.
lg binaer

hollowman4
06.03.2005, 14:52
mh KP :)
Mit meinem Programm kann ich die eingänge nur als eingänge und ausgang halt ausgang.
Aber wie gesagt muss mich noch in Basic reinfuchsen (ist mein erstes Basic prog) Vielleicht sollte ich mal die .dll Saugen die du angegeben hast ;)
mfg sven
PS: Ups peinlich Das ist doch die Seite durch die ich erst an Elexs gekommen bin :D

MischaMV
06.03.2005, 15:17
Also diese scheiss Diode wird nie leuchten.!!
Hab sogar die Spannung gemessen, beträgt 176 +- mV.
Echt keine Ahnung was ich noch machen kann. ;-(
Gruß Michi.

06.03.2005, 18:57
ähm entweder du machst was falsch oder ka hab bis jetz mit pc und laptop versucht geht beides selbst das laptop hat bei kritischem akku ~+/-12V

Blackbird, logout
07.03.2005, 07:22
Da scheint ja Einiges noch unbekannt zu sein?

Pin 9pol. 25pol. E/A
RI 9 22 Eingang
DCD 1 8 Eingang
DSR 6 6 Eingang
CTS 8 5 Eingang
RTS 7 4 Ausgang
DTR 4 20 Ausgang
TXD 3 2 Ausgang
RXD 2 3 Eingang
GND 5 7 Masse

Nur Ausgänge können LEDs oder andere Lasten steuern, jedoch nicht mehr als ca. 5 mA, bei Kurzschluß bis zu 10 mA.

AKTIV (oder eingeschaltet) ist ein Ausgang, wenn er gegen Masse -8,5V (bis -12V) führt. Das ist eine NEGATIVE Spannung. Polarität der LED beachten!

INAKTIV (oder ausgeschaltet) ist ein Ausgang, wenn er +8,5 (bis +12V) führt, also eine POSITIVE Spannung gegen Masse zu messen ist. Die Belastbarbeit ist genauso groß.


... Also Die rote Leuchtdiode habe ich erstmal GND-RTS, dann GND-DTR und anschließend GND-TXD. Sie leuchtet nicht. Übrigens wenn ich LED GND-DSR verbinde leuchtet sie und nach dem ich DTR geklickt habe nicht mehr usw ...

@MischaMV,
na klar leuchtet sie! weil Du ein (gekreuztes) Nullmodemkabel angeschlossen hast, bei dem DTR beim Sender und DSR beim Empfänger verbunden sind. Die Pin-Nummerierung gilt für den SENDESEITIGEN Stecker am PC!

Buchse und Stecker haben ein gespiegeltes Pin-Layout, also aufpassen und nachschauen.

Blackbird

MischaMV
07.03.2005, 19:27
Ihr habt Recht.Ich habe echt die ganze Zeit Null-Modem Leitung benutzt.Werde gleich wieder ausprobieren.
Vielen DAnk.

hollowman4
07.03.2005, 20:05
Blackbird man kann auch die eingänge prima nutzen indem man led an einen ausgang und dann mit eingang verbindet sobald man ihn schalten den eingang geht led an/aus ;) sind also mehr leds als mit ausgängen möglich :D

MischaMV
07.03.2005, 20:18
Deeeeerrrrrr geeeeeehhhhttttt!!!!!!!!!!
:-) , :-)
Vielen Dank allen die mir geholfen haben.
Gruß Michi.

hollowman4
08.03.2005, 07:29
Siehste da hat sich meine Arbeit gelohnt ;)
bidde bidde ;)

Blackbird
08.03.2005, 09:13
Blackbird man kann auch die eingänge prima nutzen indem man led an einen ausgang und dann mit eingang verbindet sobald man ihn schalten den eingang geht led an/aus sind also mehr leds als mit ausgängen möglich

@hollowman4,
kannst'e das mal so schreiben, dass ich das verstehe?

Blackbird

hollowman4
08.03.2005, 14:49
oha ja kann ich(Weis selber net was ich da geschrieben hab)
Also man kann die Eingänge auch prima zum schalten nutzen
Indem man Eingang und Ausgang für die Led nutzt also Ausgang anmachen und dann über Eingang regeln ;) Eingang ist ja *gnd* ;)
So :D
mfg sven

Blackbird
09.03.2005, 08:47
@hollowman4,
ich hab's immer noch nicht kapiert. Kannst Du bitte mal ein Schaltbild malen und ein kurzes Prog (Programmiersprache ist egal) angeben, wie Du die 5 Eingänge als Ausgänge benutzt, um mehr als die schon vorhandenen 3 Ausgänge an der seriellen Schnittstelle zu erhalten?

Blackbird

MischaMV
09.03.2005, 18:40
Ja das wäre echt cool hollowman4!
Gruß Michi.

hollowman4
09.03.2005, 21:16
So Rot ist nen Ausgang ( DER MUSS AN SEIN)
Rosa/Pink ist halt die LEd oder was auch immer man schalten möchte und Blau sind die Eingänge(die man an/aus schaltet um halt die Led,s anzusteuern ;) Weil man den ausgang in dem moment als vcc nutzt ;) und der eingang gnd ^^ Also schaltet man gnd ein/aus ;) Das wars ^^ GANZ simpel :D

Blackbird
10.03.2005, 06:51
... sind die Eingänge(die man an/aus schaltet ...

Und wie machst Du das Ein-/Ausschalten der Eingänge? Gib' doch mal bitte ein Code-Schnipsel an (Programmiersprache ist egal), wie man Eingänge schaltet.


Blackbird

hollowman4
10.03.2005, 12:28
So wie man ausgänge auch schaltet RTS 1 TXT 1 u.s.w ^^ wie auch immer ;) Und das passende modul ist in der .rar datei die ich bereits gepostet hab ;)

Blackbird
10.03.2005, 12:54
@hollowman4,

in Deinem Code ist nichts zu sehen, wie Du Eingänge schaltest. Du schaltest Ausgänge (TXD, DTR und RTS), aber keine Eingänge.
Ich würde ja nicht so hartnäckig fragen, aber Du behauptest jetzt schon zum wiederholten Male, daß man Eingänge schalten kann.

Wie denn?
Das interessiert sicher nicht nur mich (und es wäre schön, wenn es ginge). Deshalb wäre es gut, wenn Du es nachweist und nicht immer nur behauptest.
Hast Du es schon mal gemacht? Hat es funktioniert? Wenn ja - dann poste den Code und die Schaltung und ich stelle es nach.


Blackbird

Pröbler
12.03.2005, 16:30
Hat jetzt jemand von euch rausbekommen wie man jetzt die Eingänge auslesen kann? Ich Habe bis jetzt nur die Ausgänge RTS und DTR mit c++ schalten können, danke für Tipps.