Autor Beitrag
death-adders
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 82

Vista
Turbo Delphi Explorer
BeitragVerfasst: So 05.02.06 20:13 
Hallo! Ich arbeite zurzeit mit einem Freund an einem Projekt, wo wir (ich stelle es einfach dar) einen PC über die COM- schnittstelle steuern wollen.

Dsa mit dem ansteuern ist kein Problem, ich kann den COM eingang analog steuern, also prüfen ob ein signal anliegt, bzw. einen ein/ausschalten.

Ich habe zwei PCs einer ist der "empfänger" der andere der "Sender"
Das heißt, es wird an den sender ein ausgangskabel angeschlossen, das ich mit AN/AUS schalten kann.
Dieses Kable leuft dann zum empfänger an einen eingang. Hier kann ich prüfen, ob ein signal ankommt, indem ich einfach mit einem Timer prüfen lasse, ob ein signal anliegt.

So, also meine Therorie sieht so aus. Wenn am sender button1 gedrückt wird, wird auf seiner ausgangsleitung ein signal gesendet, das so aussieht: "1101" also in der praxis schaltet er die leitung an, wartet 2 mal 5 ms schaltet aus wartet 5 ms schaltet wieder ein wartet 5 ms

ungefärer quelltext:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
(delay ist ne kleine pause)

procedure TForm1.FormCreate(Sender: TObject);
begin

  sendeleitung(1);
  delay(5)
  Sendeleitung(1);
  delay(5)
  sendeleitung(0)
  delay(5)
  sendeleitung(1)
  delay(5)
end;

So nun kommt dieses signal am empfänger an, und der muss das hja irgendwie auswerten. Also müssen die strom impulse ersma wieder in ne Zahl umgewandelt werden. Meine Idee ist da: ich kann mit ner .dll exakte zeitmessungen machen, das heißt, es leuft ein timer, sobald der ein signal von der leitung bekommt, fängt er an zu zählen, bis das signal aufhört. also zählt er in diesem fall bis 10 ms dass heißt, der packt ne 11 in ne variable. dann fängt er wieder bei 0 an zu zälen, bis wieder strom kommt, also kommt er in diesem fall bis 5 ms das heißt, er muss nun an die zahl in der variable ne 0 dran hängen dann zählt er wieder bis von null los und kommt bis 5 ms und packt also ne 1 an die zahl in der variable... so könnte es zustande kommen, das ich nach 20 ms 1101 in der variable stehen habe, worauf hin ja irgendein ereigniss ausgeführt werden kann...

So, ich hoffe, man konnte folgen. Ich möchte dann ja natürlich auch andere codes übermitteln, um andere ereignisse gechehen zu lassen.

Nun zum Problem:
1. Könnte das so funktionieren?
2. Wie ermittle ich eine bestimmte stelle von einer 4 stelligen zahl (Beispiel: von 1101 wäre die dritte stelle ne null 0)
3. Wie kann ich eine bestimmte ziffe einer zahl ändern? (Beisüpiel: Ich habe 1101 und damit das zu 1100 wird muss ich die 4te stelle durch ne null 0 ersetzen.

Schonmal im voraus vielen dank an alle und um euer bemühen!!!

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 06.02.06 00:54 
Moin!

Was du da bauen willst, nennt man eine serielle Datenleitung, also praktisch die COM-Schnittstelle an der COM-Schnittstelle nachbauen... :wink: aber wozu blos... :gruebel:

Jedenfalls ist das der richtige Tipp: mach dich mal über die Hardwarespec der RS232-Schnittstelle schlau, dann kannste sowas auch "von Hand" nachbauen. :wink:

cu
Narses
death-adders Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 82

Vista
Turbo Delphi Explorer
BeitragVerfasst: Mo 06.02.06 17:12 
Ne ne, es geht ja nicht darum daten zu übertragen, es geht darum, dem empfänger, was ja nict umbedingt ein zweiter pc sein muss, es könnte ja auch ein µC sein, klar zu machen, was er machen soll. Also so richtige daten sollen hier gar net übertragen werden!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 06.02.06 19:52 
Moin!

user profile icondeath-adders hat folgendes geschrieben:
Ne ne, es geht ja nicht darum daten zu übertragen, es geht darum, dem empfänger, was ja nict umbedingt ein zweiter pc sein muss, es könnte ja auch ein µC sein, klar zu machen, was er machen soll.

Klar, das ist ja auch keine Datenübertragung... :wink: ...sondern was? :D

user profile icondeath-adders hat folgendes geschrieben:
Also so richtige daten sollen hier gar net übertragen werden!

Sorry, den kann ich mir nicht verkneifen, aber wie unterscheiden sich denn "richtige Daten" von anderen? :gruebel: :wink:

Oder hast du keinen Plan von einem Protokoll und suchst da nach einem Ansatz? :gruebel:

Also sämtliche Daten, die ich so (in meiner Hardwarebastelzeit) durch die Gegend geschoben habe, liefen über RS232 oder I2C; das ist Standard, das Rad erfindet doch keiner neu.

cu
Narses
death-adders Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 82

Vista
Turbo Delphi Explorer
BeitragVerfasst: Di 07.02.06 14:32 
Also ziel ist es letzendlich, das der andere PC weiß, was er zu tun hat. Sende ich 1110, dann soll er z.B. später einen Motor vorwärtslaufen lassen und bei 1111 halt rückwärts und so gibt es nacher über 20 verschiedene befehle, die er machen soll. Wie ist das am einfachsten zu realisieren?
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 07.02.06 16:26 
Moin!

OK, ich sehe schon, es geht um ein Protokoll. Schau dir mal das hier an, ist zwar für deine Zwecke total oversized, aber der Grundgedanke ist der gleiche.

cu
Narses