Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
22.08.2003, 18:07
Spike



hat da jemand gute tuts für ? bei google finde ich immer nur foren, wo welche die frage stellen und auf google verwiesen werden (ein teufelskreis :)

--

Kill? Box? Killbox!
Die Intelligenz ist eine Konstante, nur die Bevölkerung wächst.

zum Seitenanfang zum Seitenende Profil || Suche
001
22.08.2003, 18:15
Leviathan



Suche einmal nach den Funktionen _outp und _inp (bzw. outp und inp), die sind zwar nicht Teil des C++-Standarts, aber beim Microsoft-Compiler (bzw. bei GCC) vorhanden. Diese Funktionen geben Daten an einen Port aus, in deinem Fall an 0x3F8 (Com1) oder 0x2F8 (Com2) oder folgende. Ausgaben auf den Druckerport (0x378) sind mir schon gelungen.

--

Entities: HL | HL²
Kompilierfehler
r_speeds | mehr über r_speeds

zum Seitenanfang zum Seitenende Profil || Suche
002
22.08.2003, 21:44
Spike



gut danke. teilweise hab was gefunden. (in der msdn)
aber ich suche immernoch nen beispielcode, bzw. beschreibung was ich wie sende.

Quellcode:#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
  _outp(0x3F8, ?);
  
  
  system("PAUSE");    
  return 0;
}
bei dev-cpp kommt ein error, dass _outp nicht deklariert ist.
bei visualc++ hab ich mal 0 beim ? eingesetzt -> absturz des programms.
da dev-cpp ja den compiler gcc bzw g++ benutzt, müsste das programm doch auch starten und abstürtzen ;)
oder muss ich noch was einbinden. (hab nur die beiden includes und standart-conf von dev-cpp)

hast du evtl. noch nen link wo beschrieben wird was ich an daten senden kann ?
btw. was eignet sich zum testen obs funktioniert ? ne alte maus mit serial anschluss ?

und den iput hol ich mir mit ner schleife oder ?
also bis ich ne taste drücke cout << _inp(0x3F8) << "\n";

--

Kill? Box? Killbox!
Die Intelligenz ist eine Konstante, nur die Bevölkerung wächst.

zum Seitenanfang zum Seitenende Profil || Suche
003
22.08.2003, 23:05
Leviathan



Von der seriellen Schnitstelle habe ich nicht so viel Ahnung, ich habe bisher nur etwas mit dem Druckerport gemacht. Da hatte ich als Gerät ein Interface (Eigenbau meines Vaters). Das konnte ich auch ansteuern und abfragen.

Was die Funktionen angeht habe ich mich vielleicht mißverständlich ausgedrückt:
Microsoft-Compiler: _outp();_inp();
GCC und Derivate: outp();inp();

Du solltest dich übrigends auch einmal etwas mit der Hardware der seriellen Schnittstelle (und dem jeweiligen Anschlussgerät) auseinandersetzten, zumindest beim Druckerport hat die doch eine gewisse Rolle gespielt.

Wofür brauchst du das eigentlich noch? Die serielle Schnitstelle ist ja doch schon einige Jahre alt, und der Druckerport und jetzt auch der USB und IEEE1394/Firewire sollten ihr weit überlegen sein (vor allem, was Geschwindigkeit angeht).

--

Entities: HL | HL²
Kompilierfehler
r_speeds | mehr über r_speeds

zum Seitenanfang zum Seitenende Profil || Suche
004
23.08.2003, 00:21
Spike



die sache ist folgende: bei meinem informatikunterricht in der schule hat der lehrer vorgeschlagen pascal oder delphi zu machen (es ist nicht vorgeschrieben was er lehren muss).
aber wir (nen paar freunde und ich) konnten ihn überzeugen, das man man mit dem c-syntax mehr anfangen kann (c, c++, c#, php, java, ...). der lehrer selbst kann auch etwas c++ nur halt comports nicht. das wollte er gegen ende des schuljahres mit uns machen (dann in delphi oder pascal :( ).
und da die schule ja kein geld für compiler hat, würde nur freeware wie z.b dev-cpp in frage kommen.
ein paar leute im informatikkurs können c oder c++. die anderen können höchstens html.

vieleicht kann uns unser informatik lehrer jetzt schon was zu comports sagen, das wir uns da schlau machen und der unterricht in c++ stattfindet. (damit kann man später nach der schule auch was anfangen)

also um mich in comports fit zu machen habe ich noch nen halbes jahr zeit. wenn wir das hinbekommen (meine freunde und ich), ihn dann zu unterstützten, macht er mit uns c++.

so nun nochmal zu meinem problem
ich habs nun als outp(0x3F8,0);
probiert (noch ist mir egal was die 0 macht hauptsache es lässt sich erstmal kompilieren)
aber immer noch:
8 C:\Dokumente und Einstellungen\$pike\Eigene Dateien\dev-cpp\comtest\main.cpp
`outp' undeclared (first use this function)

brauch ich noch ne header-datei oder muss ich noch was anderes einbinden ?

--

Kill? Box? Killbox!
Die Intelligenz ist eine Konstante, nur die Bevölkerung wächst.

zum Seitenanfang zum Seitenende Profil || Suche
005
23.08.2003, 15:05
K-Putt



Vielleicht geht folgendes, vielleicht is es auch nur kompletter blödsinn ;)

Quellcode:#include <pc.h>

//void outp(unsigned short _port, unsigned char  _data);
Quelle: http://www.delorie.com/djgpp/doc/libc/libc_566.html

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database


Dieser Beitrag wurde am 23.08.2003 um 15:06 von K-Putt bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
006
23.08.2003, 16:05
Spike



hm also eine pc.h gibs bei mir nicht.

nach stundenlangersuche hab was gefunde wie daten gesendet werden. ka ob ich das richtig verstanden habe.

das soll so ähnlich funktionieren wie das binärsystem

o o o o o
o o o o

die sind ja durchnummeriert. einer oder mehrere sind wohl masse (muss ich noch suchen welche)
die anderen sind dann die daten ports

pin ... status
1 ..... Strom an
2 ..... Strom an
3 ..... Strom aus
4 ..... Strom an
5 ..... Strom aus

müsste also den wert 11 sein (nach dem binärsystem)

kann sein das das jetzt falsch ist.
aber warum stürzt folgendes programm unter vc++ ab ?
Quellcode:#include <iostream>
#include <conio.h>

#define COM1 0x3F8

using namespace std;

int main()
{
    while (!kbhit())
    {
        cout << _inp(COM1) << "\n";
    }
  
   return 0;
}
_inp liefert ja einen int zurück.
das programm stürzt mit der meldung unknown software exeption ab.

--

Kill? Box? Killbox!
Die Intelligenz ist eine Konstante, nur die Bevölkerung wächst.

zum Seitenanfang zum Seitenende Profil || Suche
007
23.08.2003, 20:11
Mazze



Seid ihr euch sicher, dass das auch unter den neueren Windows Versionen funktioniert?
Ich hab gehört, dass es nur unter 16bittern laufen soll.

Allerdings hab ich damit noch nie was gemacht, kann auch falsch sein.

Ich dachte, dass man nun nur durch einen Treiber auf sowas zugreifen kann.
Also braucht man das DDK.

cu
Matze

--

BattleTech-MOD:
http://bthl.unitedgaming.net/

zum Seitenanfang zum Seitenende Profil || Suche
008
23.08.2003, 20:49
Spike



afaik brauchst du für win9x nen treiber. unter dos oder nt/2k/xp soll es ohne funktionieren.

edit:
@Leviathan hast du noch den source von deinem printerport-prog ?

--

Kill? Box? Killbox!
Die Intelligenz ist eine Konstante, nur die Bevölkerung wächst.


Dieser Beitrag wurde am 23.08.2003 um 20:54 von Spike_900 bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
009
23.08.2003, 20:54
Leviathan



Im resourcecode-Forum wird gerade die gleiche Frage diskutiert, da hat jemand einen Artikel dazu gepostet. Sieh' dir das hier einmal an:
http://www.resourcecode.de/showtopic.php?threadid=1455

--

Entities: HL | HL²
Kompilierfehler
r_speeds | mehr über r_speeds

zum Seitenanfang zum Seitenende Profil || Suche
010
23.08.2003, 21:47
Spike



cool. ich denke das hilft mir weiter.

edit.
ich kann unter dev-c++ erfolgreich kompilieren. dann hab ich folgendes programm nach dem bespiel erstellt:
Quellcode:#include <iostream>
#include <conio.h>
#include "ComTools.h"
using namespace std;

int main()
{
  int com;
  int byte;
  cin >> com;
  cin >> byte;
  char cData[16]="Hallo";
  while(!kbhit())
  {
    ComInit ();           // Initialisierung
    ComOpen (com,19200);    // COM2 öffnen
    // ComWrite(com,cData,5);  // 5 Byte schreiben
    cout << ComRead (com,cData,byte); // 16 Byte lesen
    ComClose(com);          // COM2 schließen
    ComExit ();
  
    // cout << cData << "\n";
  }
  system("PAUSE");
  
  return 0;
}
Wenn ich ne daran angeschlossene Maus bewege passiert nix. (spuckt nur Nullen aus)
was mir aufgefallen ist: wenn ich 0 und 1 bei com angebe läuft die console lansamer (die Nullen erscheinen langesamer). das heißt, denke ich mal, dass diese ports erkannt werden.

Leider hab ich kein Nullmodemkabel hier (muss mir wohl eins bauen), um zu sehen ob 2 pcs miteinander komunizieren.

--

Kill? Box? Killbox!
Die Intelligenz ist eine Konstante, nur die Bevölkerung wächst.


Dieser Beitrag wurde am 23.08.2003 um 22:29 von Spike_900 bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
011
26.08.2003, 22:25
Spike



hmm wie es aussieht machen wir nur delphi (juhu klick-bunti) :((((((
arg wenn ich den pascalsyntax schon wieder sehe AAAHHHHHH.

das ist nur weil wir solche volldeppen in der klasse haben, die ja unbedigt informatik machen müssen (nur wegen pc und so).

wir haben solche deppen in der klasse (12.) die meisten von denen hatten nur 5en und 6en auf dem zeugniss -> sitzengeblieben (übrigens 17 sitztenbleiber und 12 normale in userer klasse).
in mathe machen wir addition :/ ?????? und die kriegen es nochnichtmal hin 1 1/5 * 5 zu rechnen.

also wenn ihr noch infos dazu habt wie man ne schnittstelle programmiert dann interessiert es mich noch. muss aber nicht sein, da das ja nur für den informatikkurs sein sollte.

MfG Spike_900

--

Kill? Box? Killbox!
Die Intelligenz ist eine Konstante, nur die Bevölkerung wächst.

zum Seitenanfang zum Seitenende Profil || Suche
012
27.08.2003, 15:43
Leviathan



Mit Pascal/Delphi hast du zwar nicht das "große Los" gezogen, aber so schlecht ist Pascal auch wieder nicht. Die wirklich interessanten Sachen von C gibt es da zwar nicht (konsequentes Design von Ausdrücken und Ausdrucksauswertung, Flexibilität der for-Schleife), aber Pascal hat auch seine Vorzüge. Es ist z.B. wesentlich leichter zu Erlernen als C.

An deiner Stelle würde ich mir ein Nullmodemkabel löten (kaufen würde ich es nicht, die sind ziemlich überteuert) und einfach mal die Tutorials (zu denen es hier Links gab) durchgehen.

Deine Erfahrungen mit Mitschülern kann ich bestätigen, meine Quellcodes haben sich im Informatikunterricht über das Netzwerk immer recht schnell verbreitet. Die Meisten kamen aber in Erklärungsnot, als der Lehrer sie nach der Funktionsweise gefragt hat, mein Stil ist nämlich nicht immer so direkt verständlich (einige Leute hier aus dem Forum werden dir das sofort bestätigen). In Java sind die for-Schleife ja fast genau so flexibel wie in C und C++...

--

Entities: HL | HL²
Kompilierfehler
r_speeds | mehr über r_speeds

zum Seitenanfang zum Seitenende Profil || Suche
013
27.08.2003, 17:23
Spike



die lötanweisung habe ich schon gefunden. wennn ich zeit hab mach ich das mal (freitag vieleicht).

wir haben jetzt auch noch ein fach namens technische kommunikation. da lernen wir den umgang mit pcs (wo ich das gehört hab, hab ich geglotzt wie nen auto)
untericht:
45 min vorlesen der nutzungsbedingungen und ausgabe der loginnamen an die schüler
12 min anschauen was hat der pc so. (meine maus war kaputt und die teile sind angelötet. mir machts aber kaum was, da ich nen pc auch mit tastatur ziemlich gut bedienen kann.)
3 min vorlesung der aufgabe (verunstaltetes worddokument formatieren :o )
45 min erklärung wie man word 97 bedient *arg* *heul* so dumm sind nun auch wieder nicht.
am ende kam dann nur noch der satz: "den PC nicht einfach ausschalten, sonder mit der linken maustaste auf start zeigen und klicken, dann beenden mit der linken maustaste auswählen. wenn herunterfahren angewählt ist auf ok klicken"
dann ging ich extrem beleidigt aus dem informatikraum.

aber dem leehrer werd ichs zeigen. (in delphi ne fehlermeldung zusammen klicken. muahahaha ;)

back to topic: wenn ich das dann gebastelt hab kann ich ja bericht erstatten, da diese frage in vielen foren auftritt und wäre schön wenn sie irgentwie (z.B. hier) mal restlos beantwortet wäre :)

--

Kill? Box? Killbox!
Die Intelligenz ist eine Konstante, nur die Bevölkerung wächst.

zum Seitenanfang zum Seitenende Profil || Suche
014
28.08.2003, 10:42
WareWolf



@spike, das was du da in #006 mit dem Datensenden zusammenfaselst ist absoluter Blödsinn =)
Ganz wichtig ist das Protokoll des anderen Gerätes, also ob Hardwarehandshake verwendet wird, oder eben nicht. Meistens ist das nicht der Fall, also musst du schon aus diesem Grund das Protokoll unbedingt kennen.

Im Prinzip reichen 3 Leitungen für die Übertragung aus:
die Stecker: SUB-D-9polig female
Pin2 an Pin3 (RxD)
Pin3 an Pin2 (TxD)
Pin5 an Pin5 (Masse)
über diese Drähte kommen die Daten angehoppelt, und zwar Bit für Bit, schön nacheinander, einmal über Pin2 zum lesen und einmal über Pin3 zum Senden. Logisch ist dann auch, dass dein Sende-Pin mit dem Empfangs-Pin des anderen Teilnehmers verbunden ist. Deshalb sind die Leitungen gekreuzt.

In C++ gibt es doch jede Menge fertiger Funktionen, die man nur entsprechend beschalten muss.

--

Sig as a brick ┴┬┴┬┴┬┴┬┴┬┴┬┴
WW

zum Seitenanfang zum Seitenende Profil || Suche
015
28.08.2003, 12:59
Spike



ja ich weiß. das tut hab ich auch gelesen, aber es wurde nach #006 gepostet.
von daher ist es mir klar wofür die einzelnen leitungen sind :)

--

Kill? Box? Killbox!
Die Intelligenz ist eine Konstante, nur die Bevölkerung wächst.

zum Seitenanfang zum Seitenende Profil || Suche