PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : com port frage



ratzy
25.01.2009, 22:03
hallo - ich hab ne frage auf die ich irgentwie keine antwort finde -

ich weis das + / - beim LPT port pin 1 / 19 sind

wie ist das bei dem 9polig (com port 1) ???

homedom
25.01.2009, 22:39
Hallo,
was hast du denn Vor? Sowas wie + und - gibt es beim Com Port nicht wirklich. Pin 5 ist zwar GND, aber ein + gibt es in dem Sinne nicht. Man kann zwar manche Pins über den PC anschalten und diese hab dann 12V, im abgeschalteten Zustand sind das dann aber -12V, da der Com-Port mit +- 12V arbeitet.
http://www.google.de/search?q=rs232

gruß, homedom

ratzy
25.01.2009, 23:07
ICH WILL NE LED ANSTEUERN

damals mit dem alten board der noch LPT hatte konnte ich das so machen:

LPT: pin2 und pin 19

_outp (0x378 , 0x00) = aus
_outp (0x387 , 0x01) = on

_____________________________________________

mein board hat nur noch com1

ich hab jetzt pin4 und pin5

_outp (0x3F8 , 0x00)

tuts irgentwie nicht meine led ist anduernt an !

homedom
25.01.2009, 23:16
Mit was für einer Programmiersprache programmierst du?
So wie du das machst, kann man glaubich nur LPT ansteuern, um Com anzusteuern taugt das nicht. Du kannst die LED mit Vorwiderstand an RTS und GND anschließen und über den PC RTS an/ausschalten.
gruß, homedom

ratzy
25.01.2009, 23:47
ich nutze DEV-CPP
und programmiere gerade mit c#

das programm soll einfach nur die COM schnittstelle ausschalten


#include <stdio.h>
#include <stdlib.h>

int main()
{

_outp(0x3f8,0x00);

return 0;
}


aber die led ist immer noch an - WARUM ???

Ceos
26.01.2009, 07:59
weil der com port eine serielle schnittstelle ist und keine parallele, da gibts kein register dass jeden pin einzeln ansteuert! du wirst wohl entweder ne passende LPT karte für den PC suchen müssen, oder den umweg über einen AVR machen müssen .... PS bis jetzt ist das aber noch reines C kein C#, ausserdem würde ich dir eine andere entwicklungsumgebung als DevCpp ans herz legen, gerade wenn du mit C# arbeiten möchtest

PPS:
seit mir bitte bitte nicht böse

aber ich hab kein plan davon wie man chips programmiert
wenn du schon C kannst, ist es nur eine Frage der Ausrüstung, des Englischverständnisses und des Willens !

ersteres wirst du unter der Forensuche und im RN-Wiki (!!!) genügend infos zu finden, zweiteres kann man zur not ein wenig helfen(wenn man nett fragt), letzteres musst du schon selber aufbringen ;P

PPPS: mit ein wenig googeln hätte man auch lesen können, dass der RS232 vorsieht mit invertiertem signal zu arbeiten, also 1 = -12V 0 = +12V.

ratzy
26.01.2009, 09:31
:-k also sind die pins nicht einzelnd anzusprechen
:-s warum hat dann fast jedes roberter board ein com1 anschluss?

naja soll mir auch egal sein - ich glaub ich hohle mir dan mal eine LPT- karte

aber ich find den anschnluss so riesig
hab schon überlegt mit USB zu arbeiten aber beim USB muss man irgentwie ein treiber ansprechen - das soll sehr schwer sein mit C/C++

Ceos
26.01.2009, 10:00
also sind die pins nicht einzelnd anzusprechen eher unwahrscheinlich bis garnicht

warum hat dann fast jedes roberter board ein com1 anschluss? ok, ich interpretiere die frage mal soweit wie ich sie verstehe und sage: Controller-PORT != COM Port, ansonsten verstehe ich die frage vielleicht nicht richtig.

der Controller braucht für UART (RS232 in 5V TTL) nur 2 leitungen, RS232 hat aber auch noch handshakeleitungen und und und...

jein, du kannst dir eines von den RN-Boards bestellen, da sind passende controler drauf und auch manchmal eine RS232 schnittstelle integriert, dann nimmst du das kabel, steckst es an deinen computer, sprichst ganz normal (dafür müsst ich mich schon fast selber schlagen) den COM-Port an (schau dass du die serial bibliothek für C findest sonst wirds schwer mmit comport) und überträgst daten an den controller, der die daten dann an einem seiner ports umsetzt, oder wenn das programm eher einfach gestrickt ist, reicht es schon das programm direkt im controller so zu speichern (falls du immernoch nach der timerlösung suchst)

ratzy
26.01.2009, 10:21
mein momentan einzigstes problem ist:

warum die led nicht aussgeht -

0x00 ist doch der befehl für : off !

meine led ist an pin 4 und pin 5 gesteckt

ich habs schon an 3, 5 versucht aber die bleibt immer AN !

ich hab schon gegoogelt und nichts gefunden , welchen pin man ansprechen kann (über pc - an / aus stellen )

Ceos
26.01.2009, 11:44
0x00 ist kein befehl, sondern die hexadezimale darstellung eines 8bit wert 0b00000000 der com port arbeitet mit invertiertem signal, ausserdem hat er kein "an" und "aus" sondern nur +12V bzw. -12V ausserdem lässt er sich meines wissens nach nicht pinweise ansteuern!
versuchs besser mit dir bekannten methoden (LPT karte) eh du dir noch deine serielle Schnittstelle zerschiesst!
ich habe es eigentlich recht ausführlich erklärt, falls du meine postings zuende liesst

falls dir nicht klar ist was parallel und seriell bedeutet so sage es bitte ich dachte du kennst dich mit der materie wenigstens ein bisschen aus, tut mir leid wenn ich da ein wenig zu viel verlangt hatte

Jaecko
26.01.2009, 12:15
Das Pinweise ansteuern geht nur mit den Steuerleitungen CTS, etc. Und da - wie gesagt - nur -12V / +12V.
Also ne LED mit Vorwiderstand an eine der Leitungen gegen Masse sollte gehen, sofern:
- du dann die Steuerleitung schalten kannst, was aber mit _outp(0x3f8,0x00) evtl nicht geht bzw. nur auf ner anderen Adresse (rausfinden...). Die 0x3F8 ist die Adresse für das, was seriell (nacheinander) die Schnittstelle über den Tx-Pin verlässt.

- die LED auch nix gegen 12V in Sperrrichtung hat.

Aber ich würd auch lieber den Weg über den AVR gehen, v.a. da man z.B. mit nem ATMega8 dann schon mit einem relativ kleinen Programm die gleiche Funktion erreicht, wie am Druckerport.
(Also im Programm 1 Wert setzen und gleichzeitig bis zu 8 LEDs schalten)
Zudem besteht hier die Gefahr nicht, dass ich den Port durch ne "falsche" LED oder nen Kurzschluss zerstör. Ein AVR ist gleich gewechselt; der RS232-Treiber aufm Mainboard eher weniger.

error41
26.01.2009, 12:44
Immer wenn ein Threadersteller sich die geposteten Antworten offensichtlich nicht durchlesen will :roll: vermute ich, seit ich diesen Beitrag gelesen habe:
http://www.mikrocontroller.net/topic/119737#new
einen Soziologie-Studenten der die Leute als Versuchskaninchen für seine Diplomarbeit mißbraucht.

Gruß

homedom
26.01.2009, 13:58
Also nochmal kurz:
Wenn du nur EINE Led ansteuern willst, einfach eine LED mit Vorwiderstand an RTS und GND. Dann Programm suchen, welches die RTS Leitung ansteuern kann, dies ist mit VB 2 Befehle. Mit C wird das wohl komplizierter sein. Wenn der eine Befehl den du dauernd benutzen willst aber alles ist, was du in C kannst, solltest du evtl eine andere Programmiersprache benutzen oder dich weiterbilden, denn so kann man auch kein AVR Programmieren.
gruß, homedom