Forum: PC-Programmierung C Programm für Relaiskarte über RS232


von Marco T. (Firma: keine) (gandalf13)


Lesenswert?

Hallo!

Ich bin relativer Anfänger in Sachen C und habe legentlich die 
Grundkenntnisse von der Schule.

Ich möchte eine Relaiskarte des Typs "C-Control 8fach-Relaiskarte 230 
V/AC 16 A Baustein 8 Relaisausgänge -  Conrad"
über die RS 232 Schnittstelle austomatisch nach PC start ansteuern.

Es soll legentlich ein Relais nach Windowsstart eingeschaltet werden.

Programmieren möchte ich das ganze in C mit dem National Instruments 
CVI.

Warum gerade das Progremm? Weil wir damit in der Schule gearbeitet haben 
und mir der Umstieg auf Virtual Basic oder Virtual C zu umständlich ist.

Nun meine Frage: Meine Kenntnisse reichen bis zu einem Zahlenratespiel 
Programm.

An schnittstellen haben wir allerdings noch nie was ausgegeben.

Könnt ihr mir ungefähr den Prozessablauf beschreiben? Wie spreche ich 
die Serielle Schnittstelle an?

: Verschoben durch User
von Karl H. (kbuchegg)


Lesenswert?

Marco Mustermann schrieb:

> Könnt ihr mir ungefähr den Prozessablauf beschreiben? Wie spreche ich
> die Serielle Schnittstelle an?

In Windows wird die serielle Schnittstelle wie eine Datei angesprochen. 
D.h. du öffnest einfach ein File, welches einen bestimmten Namen haben 
muss. Und alles was du dann auf diese 'Datei' schreibst, wird an die 
Serielle Schnittstelle geschickt.


> Programmieren möchte ich das ganze in C mit dem National
> Instruments CVI.
>
> Warum gerade das Progremm? Weil wir damit in der Schule gearbeitet
> haben und mir der Umstieg auf Virtual Basic oder Virtual C zu
> umständlich ist.

Gerade wenn man nicht viel Ahnung hat, ist es nie eine gute Idee, ein 
System zu verwenden, welches ausser einem selber kaum ein Mensch 
benutzt. Such dir ein paar Visual Basic Tutorials und arbeite dich ein. 
Auf lange Sicht gesehen hast du da mehr davon und so groß ist der 
Aufwand dann auch wieder nicht. Tutorials für VB gibt es da draussen wie 
Sand am Meer.

Denn
> Nun meine Frage: Meine Kenntnisse reichen bis zu einem
> Zahlenratespiel Programm.
so wie ich das sehe, reichen deine Kentnisse sowieso nicht besonders 
weit. Da kannst du auch gleich auf VB umsatteln und hast den Vorteil, 
dass du im Web jede Menge Hilfen findest.

von Jürgen S. (jurs)


Lesenswert?

Marco Mustermann schrieb:
> Ich möchte eine Relaiskarte des Typs "C-Control 8fach-Relaiskarte 230
> V/AC 16 A Baustein 8 Relaisausgänge -  Conrad"
> über die RS 232 Schnittstelle austomatisch nach PC start ansteuern.
>
> Es soll legentlich ein Relais nach Windowsstart eingeschaltet werden.

"PC-Start" oder "Windows-Start"?
Wie definierst Du den "Start" genau?

Weil wenn Du mit dem Einschalten des PCs einfach ein Relais schalten 
möchtest, brauchst Du nur ein 5-Volt Relais, das Du an die 5 Volt eines 
USB-Kabels hängst.

PC wird eingeschaltet ==> USB bekommt Spannung ==> Relais schaltet ein
So simpel, so einfach, ganz ohne uC und ohne Programmierung.

Das reicht Dir nicht, Du möchtest auf irgendwas anderes schalten?

von Marco T. (Firma: keine) (gandalf13)


Lesenswert?

Nun ich möchte sicherstellen das der PC samt Windows erfolgreich 
gestartet ist. Ein hängenbleiben beim Starten soll ja nicht angezeigt 
werden.

Im Prinzip soll die Netzwerkverbindung stehen.

Danke, ich weis das meine Kentnisse nicht weit reichen, hab ja auch 
einen anderen beruflichen Schwerpunkt, aber ich denke mir gerade in 
Zeiten wie heute kann man sich durch Eigenstudium vieles selber 
beibringen.

Ich dachte mir so ein kleines C Programm geht schneller als bei Visual 
Basic tolle Benutzeroberflächen usw zu erstellen.

von Karl H. (kbuchegg)


Lesenswert?

Marco Mustermann schrieb:

> Ich dachte mir so ein kleines C Programm geht schneller als bei Visual
> Basic tolle Benutzeroberflächen usw zu erstellen.

Wenn man C bereits kann, dann schon.
Wenn nicht - bist du mit VB durch den hohen Grad an 'Vorfertigung' von 
Seiten Mikrosofts deutlich schneller.

von Jürgen S. (jurs)


Lesenswert?

Marco Mustermann schrieb:
> Im Prinzip soll die Netzwerkverbindung stehen.

Dann ist das eine Aufgabe für reine PC-Programmierung.

Das wäre ein anderer Bereich hier im Forum.

Du mußt Dir ein PC-Programm machen, das das Bestehen einer 
Netzwerkverbindung prüft, z.B. ob der PC als Gatewayadresse die Adresse 
des Routers eingetragen hat, was bei einer dynamischen 
Netzwerkkonfiguration passiert, wenn der PC über DHCP seine Adressen vom 
Router bezieht. Dann schaltet das PC-Programm direkt die Relaiskarte.

Ein USB-RS232 Adapter zum Anschluß zwischen Relaiskarte und PC wird 
benötigt.

Ein zusätzlicher programmierter Mikrocontroller wird nicht benötigt.

von Uwe (Gast)


Lesenswert?

Ohne WinAPI geht da nix ob nun VB oder VC++. Denn unter Windows hast du 
keinen Hardwarezugriff mehr wie man ihn unter DOS früher hatte und die 
Serielle über IO-Register konfiguriren und bedienen konnte. Eventuel 
kann dir WInIO da helfen. Wenn du aber auch noch Netzwerk brauchst bzw. 
Informationen über dieses dann brauchst du schon wieder die WinAPI denn 
über IO-Register wist du da nicht glücklich.
Wenn du schon C kannst dann Nimm Visual C++. Es bleibt dir frei sowas 
wie ++ operationen zu nutzen oder nicht. Du brauchst auch keine 
Vererbung und son Zeug benutzen. C ist eine Untermenge von C++. Mit der 
WinAPI wirsdt du dich aber auseinander setzen müssen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Uwe schrieb:
> Eventuel
> kann dir WInIO da helfen

Nein, bloß nicht.
Serielle Schnittstellen sollte man damit auf gar keinen Fall 
ansteuern.

Wozu auch, die API ist keine Raketenwissenschaft, und es gibt zig 
abstrahierende Libraries/Komponenten/etc., so daß man das Rad gar nicht 
von vorne erfinden muss.

von Marco T. (Firma: keine) (gandalf13)


Lesenswert?

Wenn windows ordenlich gestartet ist dann reicht  mir das vollkommen als 
Bestätigung das dann auch die Netzwerkverbindung steht.


also werd ich mir Visual c vornehmen?

schade, könnt ihr mir ansatzweise sagen wie das Programm in C aussehen 
würde oder hänngt der Code zu stark von dem Kompiler ab den ich verwende 
den ja sonst niemand verwendet?

von Steini (Gast)


Lesenswert?

Zwar nicht in C und auch schon fertig, aber mit Quelltext:

http://www.franksteinberg.de/Kramkiste.htm

... "Relaiser" ganz unten.

von Rainer Zufall (Gast)


Lesenswert?

Und was ist wenn mal keine Netztwerkverbindung besteht? Leg dein 
Programm doch einfach in den Autostart Ordner. Ich denke mal das dürfte 
reichen als "Windows-Start".

von Marco T. (Firma: keine) (gandalf13)


Lesenswert?

Hallo!

Wenn keine Verbindung steht muss ich eben runter gehn und nach sehen was 
los ist. zu 99% baut Windows eine Netzwerkverbindung auf.

Es ist mehr oder weniger eine Spielerei.

PC1 Steht im Wohnzimmer
PC2 Steht draussen in der Werkstätte das ein seperates Gebäude ist.

PC2 kann ich mittels Kupferkabelverbindung über die Logo per Taster im 
Wohnzimmer bequem ein/ausschalten. Dabei wird auch die Schuko an der der 
PC hängt ein und ausgeschaltet.

Im Prinzip ist es ein zusätzlicher Speicherplatz auf dem ich Daten 
auslagern/ sichern kann, und dann bequem vom PC1 abrufen kann ohne dass 
der PC2 ständig laufen muss bzw kann ich diesen vollständig vom 
Stromnetz trennen.


Und weil der PC2 nicht in Sichtweite ist, bracuhe ich eben eine 
"Bestätigung" in welchen Zustand der PC2 sich gerade befindet. Zur Zeit 
mache ich das mit einer LEd die von der Logo geschatet wird.

Natürlich kann ich mit der Relaiskarte alles mögliche anstellen. Ich 
habe sie ja auch als experimentierboard gekauft.

von krippendorf (Gast)


Lesenswert?

Auch nicht in C, aber ein weiteres Beispiel für die C-Control 8fach 
Relaiskarte: https://github.com/krippendorf/RelayCard

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.