| Autor |
Beitrag |
zuwanachloe
      
Beiträge: 23
Win 98, Win ME, Win 2000, Win XP, Win Vista
D 7 Enterprise
|
Verfasst: Mi 19.10.05 09:59
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
      

Beiträge: 10184
Erhaltene Danke: 1259
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: 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.
cu
Narses
|
|
zuwanachloe 
      
Beiträge: 23
Win 98, Win ME, Win 2000, Win XP, Win Vista
D 7 Enterprise
|
Verfasst: Mi 19.10.05 10:22
da gibs nur ein problem wo krieg ich jetz nen anderen pc her?!
MfG
zuwanachloe
|
|
digi_c
      
Beiträge: 1905
W98, XP
D7 PE, Lazarus, WinAVR
|
Verfasst: Mi 19.10.05 10:31
Kommt da eine Befehlssequenz raus oder werden nur einzelne PINs hoch/runter gezogen?
Bei ersterem könnt man n Modem/PC ranhängen bei letzterem einfach ne Low Current LED.
Wenn das per WinAPI angesprochen wird hilft dir sicherlich der Free Serial Port Monitor weiter.
|
|
zuwanachloe 
      
Beiträge: 23
Win 98, Win ME, Win 2000, Win XP, Win Vista
D 7 Enterprise
|
Verfasst: 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 
      
Beiträge: 23
Win 98, Win ME, Win 2000, Win XP, Win Vista
D 7 Enterprise
|
Verfasst: 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:
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:
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
      
Beiträge: 1905
W98, XP
D7 PE, Lazarus, WinAVR
|
Verfasst: 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 
      
Beiträge: 23
Win 98, Win ME, Win 2000, Win XP, Win Vista
D 7 Enterprise
|
Verfasst: 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
|
|