Hallo,
ich bin gerade dabei mich ein wenig mit dem ZVT Protokoll und Delphi auseinander zu setzen nur leider bekomme ich es nicht ganz hin.
Ich kann mir ja das Log von APRO angucken ober da steht nur das ich was gesendet habe also gehe ich mal davon aus dass das EC-Terminal nicht geantwortet hat, oder?
hier ein offizielles Log für die Anmeldung am Terminal:
Quelltext
1: 2: 3: 4: 5: 6:
| Anmeldung: Send: 10 02 06 00 06 12 34 56 BA 09 78 10 03 24 C3 ---- ......4V..x..$. Recv: 06 ---- . Recv: 10 02 80 00 00 10 03 F5 ---- ........ Recv: 1F ---- . Send: 06 ---- . |
und hier mein Log:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| Port geöffnet durch Vorgang "Project1.exe" (PID: 3440)
Answer: 25.09.2009 10:04:42.38864 (+308.5000 seconds)
00 .
Request: 25.09.2009 10:04:43.18564 (+0.7969 seconds)
10 02 06 00 06 12 34 56 BA 09 78 10 03 24 C3 ......4Vº.x..$Ã |
Wenn ich die beiden jetzt vergleiche sehe ich keinen Unterschied:
Quelltext
1: 2:
| 10 02 06 00 06 12 34 56 BA 09 78 10 03 24 C3 <-- orig 10 02 06 00 06 12 34 56 BA 09 78 10 03 24 C3 <-- meiner |
und sogar wenn er falsch ist müsste ich doch ein NAK bekommen?!?
Hier noch das Log von APRO:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| APRO v4.06 Compiler : Delphi 7 Operating System : Windows XP 5.1 Service Pack 2 Device: COM1 Date/time: 25.09.09, 10:06:43 Time Type SubType Data OtherData -------- -------- ------------ -------- --------- 0000.004 TrDatChg Avail 00000001 0000.004 TrgHdAlc Window 0001059E 0000.006 Dispatch ReadCom 00000001 [00] 0000.006 Trigger Avail 00000001 0000.774 Dispatch WriteCom 0000000F [10][02][06][00][06][12]4V[BA] [09]x[10][03]$[C3] |
Mein dazugehöriger Delphicode sieht so aus:
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:
| function TForm1.ECOeffnen: Boolean; begin try com_ec.ComNumber := 1; com_ec.InitPort; Result := True; except Result := False; Raise Exception.Create ('HP-(1) ' + Exception(ExceptObject).Message); end; end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin if com_ec.Open then com_ec.Open := False; end;
procedure TForm1.btnSendClick(Sender: TObject); var daten, strBefehl: String; begin daten := Chr(6) + Chr(0) + Chr(6) + Chr(18) + Chr(52) + Chr(86) + Chr(186) + Chr(9) + Chr(120); strBefehl := Chr(16) + Chr(2) + daten + Chr(16) + Chr(3) + Chr(36) + Chr(195);
try com_ec.PutString(strBefehl); Application.ProcessMessages; except Raise; end; end; |
Also einfach öffnen und dann den Befehl übergeben.
mfg Chris