serielle Komunikation
-
Hallo.
Kann man über eine serielle Schnittstelle Ordner auf einem anderen Rechner auslesen?
Wie muß ich ran gehen bzw. ansetzen?
Habe noch nie eine Kommunikation zwischen 2 Rechnern programmiert.Wäre super, wenn mir jemand helfen könnte.
Oli
-
Zunächst musst du mal festlegen, wie genau das Aufnehmen einer Verbindung ablaufen soll. Wenn du das festgelegt hast, solltest du festlegen, wie die Unterhaltung ablaufne soll. Also sozusagen ein Protokoll festlegen nach welchem die Kommunikation abläuft.
Das wären mal so die ersten beiden Schritte mit denen ich anfangen würde...
-junix
-
Hallo.
Danke für Deine Antwort.
Muß man das wirklich so kompliziert machen?
Ich will auf meinem Rechner ja nur einen Ordnerinhalt anzeigen und je nach Auswahl halt in diesen Ordner eine Datei kopieren,eine Datei aus diesem Ordner kopieren oder eine Datei aus diesem Ordner löschen.Dazu fehlen mir leider die Befehle. Auf den anderen Rechner habe ich weiter keinen Einfluß.
Anfangen wollte ich erstmal so:
HANDLE hKommunikation; HANDLE hFile; DCB dcb; DWORD dwRead; DWORD bytes; char Command[]="S \r\n"; // Befehlsstring char buffer[32]={0}; // Empfangspuffer ////////////////////////////////////////////////////// // Öffnen der Kommunikation ///////////////////////////////////////////////////// hKommunikation = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, 0); GetCommState(hKommunikation, &dcb); /* Datenstruktur mit den aktuellen Werten fuellen (WICHTIG!!) */ // Spezielle Werte Initialisieren dcb.BaudRate = CBR_9600; dcb.ByteSize = 8; dcb.Parity = 0; dcb.StopBits = ONESTOPBIT; dcb.fDtrControl = DTR_CONTROL_DISABLE; dcb.fInX = FALSE; SetCommState(hKommunikation, &dcb); // Initialisieren mit den geaenderten Werten for(int i=0; i<5; ++i) /* Polling der Schnittstelle */ { Sleep(1000); // Programmablauf fuer eine Sekunde anhalten buf[]={0}; // Leert den Puffer WriteFile(hKommunikation, Command, 19, &dwRead, 0); // Schreibt auf die Schnittstelle ReadFile(hKommunikation, buf, 32, &dwRead, NULL); // Liest von der Schnittstelle } CloseHandle(hKommunikation);
Oli
-
Oli_1977 schrieb:
Muß man das wirklich so kompliziert machen?
Ich verstehe nicht... was ist kompliziert? Vielleicht haben wir uns nicht ganz richtig verstanden.
-junix
[EDIT]Was auf jedenfall sicher ist, ist die Tatsache, dass ohne eine Gegenstelle du nicht einfach den 2. Rechner über RS232 "manipulieren" kannst... Wie stellst du dir denn das vor?[/EDIT]
-
Ich kann dem anderen PC nicht sagen, wie lang bzw. wie die Daten aussehn.
Wie kann ich den Ordner auslesen und bearbeiten?
Oli
-
Es gibt dafür keine fertigen Befehle. DU musst ein Programm schreiben, das auf dem anderen Rechner die Befehle von der seriellen Schnittstelle entgegennimmt und ausführt. Und dafür musst DU ein Protokoll entwickeln.
-
Wäre es eigentlich möglich eine serielle Verbindung aufzubauen und dann mit den Funktionen einer FTP-Verbindung daruf zu zugreifen?
Oli
-
Willst du es nicht verstehen? Es gibt keine allgegenwärtige Fernsteuerungs-Gegenstelle auf der seriellen Schnittstelle. Etwas, was es nicht gibt, kann auch nicht FTP verstehen.
Du musst die Gegenstelle selbst schreiben. Und dann kannst du ihr meinetwegen beibringen, FTP zu verstehen.
-
Es gibt doch die Möglichkeit , wie Bsp. beim Windows Commander, erst eine DFÜ-Verbindung (Direkt Verbindung) zu erstellen.
Dann kann man mit FTP direct zu greifen. Für FTP haben ich schon ein Programm bekommen (Quellcode) um Ordner auszulesen.Oli
-
Oli_1977 schrieb:
Es gibt doch die Möglichkeit , wie Bsp. beim Windows Commander, erst eine DFÜ-Verbindung (Direkt Verbindung) zu erstellen.
...ja, und wer nimmt bei der Gegenstelle diese Direktverbindung entgegen?
-
Kann ich Dir leider nicht sagen.
Habe ich keine Infos drüber.
-
Ich schätze mal da muß auch ein Windows-Commander laufen, der auf einen DFÜ-Anruf wartet.
Eine Verbindung zwischen 2 PC's ist genauso, als wenn Du bei jemandem Anrufst per Telefon: Es muß jemand da sein, der das Telefon abnimmt. Einfach aufs Blaue hin anrufen obwohl niemand da ist wird nix...
-
Beim FTP werden einem schon die Klassen CFtpFileFind geboten.
Ich wollte praktisch die FTP-Verbindung über die serielle Schnittstelle laufen lassen.
Beim Windows Commander kann man solche sachen machen. Läuft dann aber langsamer. Man muß halt nur vorher von Hand eine Direkte Verbindung einrichten.
Oli
-
äh schnalls endlich: Es ist absolut egal wie du später deine Files findest. Das Problem ist, dass du zunächst überhaupt mal mit dem anderen Rechner plaudern kannst!! Also löse dieses Problem mal endlich. Die Zeit die du hier an Problemen rumdenkst und rummoserst die noch gar keine Sind hättest du besser in die Lösung des elementarsten Problems investiert.
-junix
-
Wie alle vorher schon mehrmals erwähnt haben brauchst du ein Protokoll.
In dem du die befhele für deine Komunikation festlegst. Überleg dir mal wie ein Befehl aussehen soll.Beispiel:
PC1 - > PC2 : Komando (0x00,0x01,0x00 <-unsigned char)
PC2 Verarbeitet das Comando und Antwortet dann
PC2 -> PC1 : Antwort (............ 0x00,0x01,0x00 letzten 3. z.b. als Quitung)
PC1 verarbeitet