Entwickler-Ecke
Sonstiges (Delphi) - Signalleuchte über seriellen Port
zuwanachloe - Mi 19.10.05 09:59
Titel: Signalleuchte über seriellen Port
guten tag alle zusammen
ich hab da eine komponente geschrieben mit dem man über den seriellen port auf eine signalleuchte von werma zugreifen kann und finde keinen fehler, aber das programm funktioniert trotzdem nicht...
hat einer eine idee wie ich überprüfen kann ob überhaupt ein signal über den port gesendet wird?
vielen dank für eure hilfe
zuwanachloe
Narses - Mi 19.10.05 10:16
Moin!
Häng statt dem Gerät einen anderen PC dran und mach ein Terminalprog auf, dann siehst du, was da gesendet wird. :wink:
cu
Narses
zuwanachloe - Mi 19.10.05 10:22
da gibs nur ein problem wo krieg ich jetz nen anderen pc her?!
MfG
zuwanachloe
zuwanachloe - Mi 19.10.05 11:05
ah danke für den tip werd mir das programm ma angucken
meld mich dann später nochma
MfG
zuwanachloe
zuwanachloe - Mi 19.10.05 13:35
so also hab das jetz mit dem programm ncih getestet aba hab was anderes schönes gefunden um zu überprüfen welcher kanal wann auf high steht... naja wie auch imma ich hab das programm ja von Visual Basic nach Delphi "übersetzt" damit ich das als komponente benutzen kann. is ja auch weiter kein problem aba jetz wo ich eigentlich fertig bin funktioniert das unter delphi nich. hab das dann mit nem "QuickTester" mal getestet um zu sehen welcher kanal wann benutzt wird und da gibbet einen unterschied zwischen visual basic und delphi... hab aba keine ahnung woran das liegen könnte.
hier ma nen teil vom Quelltext:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67:
| function TestBit(ByteToTest, BitNr: Byte): Boolean; var i: Integer; begin Result:=False; if BitNr>8 then Exit; i:=ByteToTest shl BitNr; Result:=(128 and i)=128; end;
procedure SetDValue(DV: Byte); var i: Byte; sPat: String; begin StrobePuls; for i := 0 to 7 do begin if TestBit(DV,i) then begin TXD(1); sPat := sPat + '1'; end else begin TXD(0); sPat := sPat + '0'; end; ClockPuls; TXD(0); DELAYUS(200); end; StrobePuls; ShowMessage('Pattern: ' + sPat);
end;
procedure Resetinterface(); begin RTS(1); TXD(1); DTR(1); DELAYUS(5000); RTS(0); TXD(0); DTR(0); DELAYUS(1000); end;
procedure StrobePuls; begin RTS(1); DELAYUS(200); RTS(0); end;
procedure ClockPuls; begin DTR(1); DELAYUS(200); DTR(0); end;
end. |
und jetz der gleiche teil in Visual Basic:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48:
| Public Sub SetDValue(DV As Byte) 'Digitalen Wert DV ausgeben Dim Bits As Variant Bits = Array(False, False, False, False, False, False, False, False) For i = 0 To 7 'Bits initialisieren Bits(i) = False Next i StrobePuls 'Start teiler = 1 For i = 0 To 7 'Bits sortieren hilfe = DV hilfe2 = hilfe And teiler 'Bits maskieren If hilfe2 > 0 Then Bits(i) = True 'Werte eintragen teiler = teiler * 2 'nächstes Bit Next i For i = 0 To 7 'Bits ausgeben If Bits(i) = True Then TXD 1 'Ausgang setzen If Bits(i) = False Then TXD 0 ClockPuls 'Weiterschieben TXD 0 'Leitung zurücksetzen DELAYUS 200 'kleine Pause Next i StrobePuls 'Wert ausgeben End Sub
Public Sub StrobePuls() 'Strobe-Leitung ist RTS RTS 1 'StrobePuls ausgeben DELAYUS 200 RTS 0 End Sub
Public Sub ClockPuls() 'Takt-Leitung ist DTR DTR 1 'Taktpuls ausgeben DELAYUS 200 DTR 0 End Sub
Public Sub Resetinterface() 'Reset der Interface-Box RTS 1 'Alle Leitungen HIGH TXD 1 'bewirkt Initialisierung und DTR 1 'Freigabe der Ausgänge DELAYUS 5000 RTS 0 TXD 0 DTR 0 DELAYUS 1000 'nochmal Pause End Sub |
könnt ihr euch ja mal angucken
vielen dank für eure hilfe
zuwanachloe
digi_c - Mi 19.10.05 14:38
Mir ist so als ob du keine XP kompatibele COM Zugriffs DLL benutzt, das DelayUs weckt bei mir komsiche Erinnerungen :?
zuwanachloe - Mi 19.10.05 15:08
ja ne ich verwende die port dll und hab auch grad rausgefunden warum die lichter nich angegangen sind hab das was mit der bitsortierung falsch gemacht, sodass das programm mit dem falschen bit an gefangen hat
trotzdem danke
MfG
zuwanachloe
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!