Hallo, ich habe den ATmega32 von Pollin. Er ist fertig programmiert und schaltet ein Licht ein, wenn ich in Hyperterminal -> "Licht" eingebe. Der µC ist über RS232 mit dem PC verbunden. Jetzt möchte ich diese Funktion über VISA in LabView realisieren, doch leider ohne Erfolg. Wenn ich dem VISA WRITE Bausteil die Konstante "Licht" gebe macht der µC nix. Müssen vieleicht noch Steuerzeichen vor und hinter "Licht"? Danke für Antworten!
Könnte es sein dass nach "Licht" noch ein <CR> oder <LF> kommen muss? Welches Pollin-Board hast du genau? Link? Sourcecode?
aus der Anleitung von AVR-NET-IO: "Die nachfolgenden Kommandos können sowohl als TCP/IP-Anfrage als auch während einer direkten Terminalverbindung verwendet werden. Jede Anfrage muss mit einem „\r\n“ abgeschlossen werden, als auch jede Antwort der AVR-NET-IO mit einem „\r\n“ terminiert wird."
Es ist das AVR-NET-IO von Pollin. Auszug aus der cmd.c
1 | COMMAND_STRUCTUR COMMAND_TABELLE[] = // Befehls-Tabelle |
2 | {
|
3 | {"licht",command_licht}, |
4 | |
5 | .
|
6 | .usw. |
7 | .
|
8 | //------------------------------------------------------------------------------
|
9 | //Commando auswerten
|
10 | unsigned char extract_cmd (char *string_pointer) |
11 | {
|
12 | //Stringzeiger;
|
13 | char *string_pointer_tmp; |
14 | unsigned char cmd_index = 0; |
15 | |
16 | string_pointer_tmp = strsep(&string_pointer," "); |
17 | |
18 | //Kommando in Tabelle suchen
|
19 | while(strcasecmp(COMMAND_TABELLE[cmd_index].cmd,string_pointer_tmp)) |
20 | {
|
21 | //Abruch Whileschleife und Unterprogramm verlassen
|
22 | if (COMMAND_TABELLE[++cmd_index].cmd == 0) return(0); |
23 | }
|
24 | |
25 | //Variablen finden und auswerten
|
26 | for (unsigned char a = 0; a<MAX_VAR;a++) |
27 | {
|
28 | string_pointer_tmp = strsep(&string_pointer,"., "); |
29 | variable[a] = strtol(string_pointer_tmp,NULL,0); |
30 | }
|
31 | |
32 | //Kommando ausführen
|
33 | COMMAND_TABELLE[cmd_index].fp(); |
34 | return(1); |
35 | }
|
36 | |
37 | //------------------------------------------------------------------------------
|
38 | .
|
39 | .usw |
40 | .
|
41 | |
42 | |
43 | void command_licht (void) |
44 | {
|
45 | //
|
46 | PORTA = 0x01; |
47 | usart_write("Licht ist an! \r\n"); |
48 | |
49 | }
|
@W123: Du könntest auf den Gedanken kommen, die Anregung von Marco zumindest auszuprobieren. Ansonsten: In Deinem Code fehlt die Empfangsroutine !
Hallo Marco, Danke für deine hilfreiche Antwort! Es funktioniert!!! Danke! Merci! ... Hat noch jemand eine Idee wie man in Labview die BOOL Anzeige-Elemente (LED-SIM) bei nochmaligem Durchlauf zurücksetzen kann? Und wie man in Labview das letzte gesendete Byte solange buffert bis ein Neues kommt, damit bei neuem Durchlauf keine Null übernommen wird?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.