Autor Beitrag
zuwanachloe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23

Win 98, Win ME, Win 2000, Win XP, Win Vista
D 7 Enterprise
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10184
Erhaltene Danke: 1259

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23

Win 98, Win ME, Win 2000, Win XP, Win Vista
D 7 Enterprise
BeitragVerfasst: Mi 19.10.05 10:22 
da gibs nur ein problem wo krieg ich jetz nen anderen pc her?!

MfG
zuwanachloe
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23

Win 98, Win ME, Win 2000, Win XP, Win Vista
D 7 Enterprise
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23

Win 98, Win ME, Win 2000, Win XP, Win Vista
D 7 Enterprise
BeitragVerfasst: 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:

ausblenden volle Höhe 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);    //Digitalen Wert DV ausgeben
var
  i: Byte;
  sPat: String;
begin
    StrobePuls;                                 //Start
    for i := 0 to 7 do                          //Bits sortieren
      begin
        if TestBit(DV,i) then
          begin
            TXD(1);            //Ausgang setzen
            sPat := sPat + '1';
          end
        else
          begin
            TXD(0);
            sPat := sPat + '0';
          end;
        ClockPuls;                              //Weiterschieben
        TXD(0);                                 //Leitung zurücksetzen
        DELAYUS(200);                           //kleine Pause
      end;
    StrobePuls;                                 //Wert ausgeben
    ShowMessage('Pattern: ' + sPat);

end;




procedure Resetinterface(); //Reset der Interface-Box
begin
    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;

procedure StrobePuls;     //Strobe-Leitung ist RTS
begin
  RTS(1);                 //StrobePuls ausgeben
  DELAYUS(200);
  RTS(0);
end;

procedure ClockPuls;      //Takt-Leitung ist DTR
begin
  DTR(1);                 //Taktpuls ausgeben
  DELAYUS(200);
  DTR(0);
end;

end.


und jetz der gleiche teil in Visual Basic:

ausblenden volle Höhe 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23

Win 98, Win ME, Win 2000, Win XP, Win Vista
D 7 Enterprise
BeitragVerfasst: 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