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:
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
Christian S.: Delphi-Tags hinzugefügt