Hallo, ich habe eine Frage zur vorgehensweise zur seriellen Kommunikation. Die Initialisierung und Datenübertragung funktioniert soweit. Ablauf: Tastaturabfrage (4x4)matrix in der Main Schleife. Bei einer Tastendruck wird eine Befehlskette(max 16 Zeichen) über die serielle schnittstelle an eine PTZ Kamera (SONY) übertragen. Dies geschieht mit 9600 Baud 1 Stopp Bit. Soweit funktioniert auch alles. Nach dem Empfang sendet die Kamera ein "Befehl empfangen" und ein "Befehl ausgeführt" String zurück. Dies muss innerhalb von 20mS geschehen. Der Empfang erfolgt per Interrupt. Jetzt zum Problem. Manche Tastenbefehle (inquiries) bekommen dann in der Antwort Werte zurück. Woher weiss ich zu welchem Tastendruck der Empfangene String gehört? Eine Idee wäre die seriellen Strings per Timer in einem zb, 30mS Zeitraster zu senden. Vielen Dank im Voraus Gruß Oliver
Gast
#3741329
Dein Programm sollte auf die Antwort des Inquiries warten, bevor es ein neues abschickt. Ansonsten liefert die Kamera ja auch die Adresse des jeweiligen Eingangspuffers bei der Antwort, wenn sie einen Befehl erfolgreich empfangen hat.
Wenn die Kommunikation immer auf der Reihenfolge "Sende Befehl - Empfange Antwort" basiert, wo ist da das Problem? Die empfangene Antwort gehört zum vorher gesendete Befehl, und bevor die Antwort nicht empfangen wurde, wird auch kein neuer Befehl gesendet. Oliver
Hallo, vielen Dank für die Antworten. HAbe das jetzt erst mal in Pseudo code geschrieben:
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 | |
68 | |
69 | |
Werde es morgen mal probieren da ich zu Hause keinen Zugriff auf die Kamera habe. Gruß Oliver
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.