Ich habe ein AVR-NET-IO mit aktuellem Ethersex am Start, Ausgänge samt Relais schalten funzt auch einwandfrei. Jetzt wollte ich die Eingänge per Watch IO (and react) abfragen..... Ich vermute den Fehler beim compilieren (make). Dort erscheint nämlich folgende Meldung während der Compilierung: In file included from services/watchcat/watchcat.c:50:0: services/watchcat/user_config.h:14:141: Warnung: initialization from incompatible pointer type [-Wincompatible-pointer-types] { .port = 0, .pin = 0, .rising = 1, .address = { HTONS((192 << 8) | 168), HTONS((178 << 8) | 47) }, .message = watchcat_text0, .func = ecmd_sender_send_command }, ^ services/watchcat/user_config.h:14:141: Anmerkung: (nahe der Initialisierung für »ecmd_react[0].func«) services/watchcat/user_config.h:15:141: Warnung: initialization from incompatible pointer type [-Wincompatible-pointer-types] { .port = 0, .pin = 0, .rising = 0, .address = { HTONS((192 << 8) | 168), HTONS((178 << 8) | 47) }, .message = watchcat_text1, .func = ecmd_sender_send_command }, ^ services/watchcat/user_config.h:15:141: Anmerkung: (nahe der Initialisierung für »ecmd_react[1].func«) services/watchcat/user_config.h:16:141: Warnung: initialization from incompatible pointer type [-Wincompatible-pointer-types] { .port = 0, .pin = 1, .rising = 1, .address = { HTONS((192 << 8) | 168), HTONS((178 << 8) | 47) }, .message = watchcat_text2, .func = ecmd_sender_send_command }, ^ services/watchcat/user_config.h:16:141: Anmerkung: (nahe der Initialisierung für »ecmd_react[2].func«) services/watchcat/user_config.h:17:141: Warnung: initialization from incompatible pointer type [-Wincompatible-pointer-types] { .port = 0, .pin = 1, .rising = 0, .address = { HTONS((192 << 8) | 168), HTONS((178 << 8) | 47) }, .message = watchcat_text3, .func = ecmd_sender_send_command }, ^ services/watchcat/user_config.h:17:141: Anmerkung: (nahe der Initialisierung für »ecmd_react[3].func«) services/watchcat/user_config.h:18:141: Warnung: initialization from incompatible pointer type [-Wincompatible-pointer-types] { .port = 0, .pin = 2, .rising = 1, .address = { HTONS((192 << 8) | 168), HTONS((178 << 8) | 47) }, .message = watchcat_text4, .func = ecmd_sender_send_command }, ^ services/watchcat/user_config.h:18:141: Anmerkung: (nahe der Initialisierung für »ecmd_react[4].func«) services/watchcat/user_config.h:19:141: Warnung: initialization from incompatible pointer type [-Wincompatible-pointer-types] { .port = 0, .pin = 2, .rising = 0, .address = { HTONS((192 << 8) | 168), HTONS((178 << 8) | 47) }, .message = watchcat_text5, .func = ecmd_sender_send_command }, ^ services/watchcat/user_config.h:19:141: Anmerkung: (nahe der Initialisierung für »ecmd_react[5].func«) services/watchcat/user_config.h:20:141: Warnung: initialization from incompatible pointer type [-Wincompatible-pointer-types] { .port = 0, .pin = 3, .rising = 1, .address = { HTONS((192 << 8) | 168), HTONS((178 << 8) | 47) }, .message = watchcat_text6, .func = ecmd_sender_send_command }, ^ services/watchcat/user_config.h:20:141: Anmerkung: (nahe der Initialisierung für »ecmd_react[6].func«) services/watchcat/user_config.h:21:141: Warnung: initialization from incompatible pointer type [-Wincompatible-pointer-types] { .port = 0, .pin = 3, .rising = 0, .address = { HTONS((192 << 8) | 168), HTONS((178 << 8) | 47) }, .message = watchcat_text7, .func = ecmd_sender_send_command }, ^ services/watchcat/user_config.h:21:141: Anmerkung: (nahe der Initialisierung für »ecmd_react[7].func«) Ich habe das Ganze schon mit einen ATMEGA32 als auch mit einem ATMEGA644 probiert, aber immer die gleiche Fehlermeldung beim Compilieren. Würde mich sehr freuen wenn hier jemand helfen kann, stecke nicht so tief in den Compilern, dass ich diese Meldung deuten oder gar beheben kann.....
Leider geht die Formatierung der Fehlermeldung verloren. Es steht doch auch die Spalte dabei: 141 ( und das ^ darunter sollte auch die Stelle anziegen) Das ist die Zuweisung an .func Da du weder die Definition der struct noch die Deklaration der Funktion (ecmd_sender_send_command ) zeigst, kann hier schlecht geholfen werden.
Michel schrieb: > Ich vermute den Fehler beim compilieren (make). Dort erscheint nämlich > folgende Meldung während der Compilierung: Hm. Da kommt weder Fehler, Error, o.ä. vor. Da steht: Warnung: initialization from incompatible pointer type [-Wincompatible-pointer-types] und die bezieht sich (vermutlich) auf func = ecmd_sender_send_command Da weden die (Funktions)?)-pointer nicht kompatibel sein ;) Die Warnung ist sicherlich berechtigt, aber in dem Fall sag ich mal, funktionieren tut das trotzdem. Und da das nur ein Warnung ist, sollte make trotzdem durchlaufen, und das Programm erstellen. Oliver
Danke schon mal für die Hilfen. Der Compiler läuft ja auch durch (mit den Warnungen und Anmerkungen) und erstellt ein Programm. Ich habe vier Ausgänge PC1 bis PC4 per Relais mit den PA0 bis PA4 verbunden, und sehe in der Ethersex Page des AVR-Moduls das die Eingänge auch entsprechend reagieren wenn ich die Relais schalte. Nur eben senden tut der NET-IO (vermutlich) nix. TCP ist aktiviert, Port ist 2701, WatchIO and react ist auch aktiviert.... Es kommen keine Befehle in fhem an. Alles so gemacht wie hier https://forum.fhem.de/index.php/topic,26942.0/all.html beschrieben. Dort habe ich ganz hinten im Beitrag auch mal mein Problem drangehängt und man sieht die Compiler Meldungen incl Formatierung. Kann ich das noch anderswie checken ob der AVR-NET-IO sendet? Hier mal die usr_config.h wo das Problem vielleicht sein könnte? /* Autogenerated File * edit watchcat.m4 and config instead */ static const char watchcat_text0[] PROGMEM = "set PA0 on\n\n"; static const char watchcat_text1[] PROGMEM = "set PA0 off\n\n"; static const char watchcat_text2[] PROGMEM = "set PA1 on\n\n"; static const char watchcat_text3[] PROGMEM = "set PA1 off\n\n"; static const char watchcat_text4[] PROGMEM = "set PA2 on\n\n"; static const char watchcat_text5[] PROGMEM = "set PA2 off\n\n"; static const char watchcat_text6[] PROGMEM = "set PA3 on\n\n"; static const char watchcat_text7[] PROGMEM = "set PA3 off\n\n"; static const struct WatchcatReaction ecmd_react[] PROGMEM = { { .port = 0, .pin = 0, .rising = 1, .address = { HTONS((192 << 8) | 168), HTONS((178 << 8) | 47) }, .message = watchcat_text0, .func = ecmd_sender_send_command }, { .port = 0, .pin = 0, .rising = 0, .address = { HTONS((192 << 8) | 168), HTONS((178 << 8) | 47) }, .message = watchcat_text1, .func = ecmd_sender_send_command }, { .port = 0, .pin = 1, .rising = 1, .address = { HTONS((192 << 8) | 168), HTONS((178 << 8) | 47) }, .message = watchcat_text2, .func = ecmd_sender_send_command }, { .port = 0, .pin = 1, .rising = 0, .address = { HTONS((192 << 8) | 168), HTONS((178 << 8) | 47) }, .message = watchcat_text3, .func = ecmd_sender_send_command }, { .port = 0, .pin = 2, .rising = 1, .address = { HTONS((192 << 8) | 168), HTONS((178 << 8) | 47) }, .message = watchcat_text4, .func = ecmd_sender_send_command }, { .port = 0, .pin = 2, .rising = 0, .address = { HTONS((192 << 8) | 168), HTONS((178 << 8) | 47) }, .message = watchcat_text5, .func = ecmd_sender_send_command }, { .port = 0, .pin = 3, .rising = 1, .address = { HTONS((192 << 8) | 168), HTONS((178 << 8) | 47) }, .message = watchcat_text6, .func = ecmd_sender_send_command }, { .port = 0, .pin = 3, .rising = 0, .address = { HTONS((192 << 8) | 168), HTONS((178 << 8) | 47) }, .message = watchcat_text7, .func = ecmd_sender_send_command }, { .port = 255, .pin = 255, .rising = 255} }; #define watchcat_port_init() do {\ vpin[0].func = watchcat_edge; \ } while(0) Und die WatchIO and React in der make menueconfig sieht so aus: ECMDTCP(PA0, RISING, 192.168.178.47, set PA0 on\n\n) ECMDTCP(PA0, FALLING, 192.168.178.47, set PA0 off\n\n) ECMDTCP(PA1, RISING, 192.168.178.47, set PA1 on\n\n) ECMDTCP(PA1, FALLING, 192.168.178.47, set PA1 off\n\n) ECMDTCP(PA2, RISING, 192.168.178.47, set PA2 on\n\n) ECMDTCP(PA2, FALLING, 192.168.178.47, set PA2 off\n\n) ECMDTCP(PA3, RISING, 192.168.178.47, set PA3 on\n\n) ECMDTCP(PA3, FALLING, 192.168.178.47, set PA3 off\n\n) Danke schon mal für die Mühe die ich mache...;-)
Michel schrieb: > Der Compiler läuft ja auch durch (mit den Warnungen und Anmerkungen) und > erstellt ein Programm. Der Compiler versucht unter allen Umständen ein Programm zu erstellen. Er vertraut dir, dass du keine Fehler machst. Wenn ihm etwas merkwürdig vorkommt, gibt er eine Warnung aus, macht aber weiter. Meist ist das aber ein Fehler! > Nur eben senden > tut der NET-IO (vermutlich) nix. Du bekommst eine Warnung im Zusammenhang mit der Funktion ecmd_sender_send_command. Diese passt nicht zu der (in der struct WatchcatReaction bei .func erwarteten) Signatur. Da solltest du mal schauen. Wenn die Paramter nicht passen, sendet der AVR Mist oder nichts. Oder zeig doch mal bitte die Funktion ecmd_sender_send_command und auch die Definition der struct WatchcatReaction
ok.... Ich habe git clone git://github.com/ethersex/ethersex.git und git pull origin alles aktuell neu gemacht. Da sollte doch alles drin sein.... Die Fehlermeldungen deute ich auch so wie du angegeben hast. Die Funktion ecmd_sender_send_command..... kann oder muss ich die ändern? Ich rufe aber doch nur "make menuconfig" auf und erstelle dann bei "Watch IO and react" die bereits oben gezeigte Zusammenstellung der gewünschten Befehle. Mehr kann (und sollte) ich doch eigentlich gar nicht tun. Dann starte ich den Compiler mit "make" und los gehts. Was ist die "Definition der struct WatchcatReaction" und wo finde ich die? Wie gesagt, alles original Ethersex letzte Woche runtergeladen... sorry für die dummen Fragen ;-)
Ich hab noch eine Ergänzung.... bei Aufruf von menuconfig kommt auch schon eine Warnung. Hatte ich bisher übersehen weil sehr schnell das Ethersex Configuration Fenster aufgeht. Vielleicht hat das schon damit etwas zu tun. root@OptiPlex745:~/ethersex# make menuconfig make -C scripts/lxdialog all make[1]: Verzeichnis „/root/ethersex/scripts/lxdialog“ wird betreten lxtemp.c:1:1: warning: return type defaults to ‘int’ [-Wimplicit-int] main() {} ^~~~ make[1]: Verzeichnis „/root/ethersex/scripts/lxdialog“ wird verlassen /bin/bash scripts/Menuconfig config.in Using defaults found in .config Preparing scripts: functions, parsing........................................... ........................................................................ ........ ................done. Scheint ja auch irgendeine Inkompatibilität zu sein. Ich weiß nicht weiter.....
Michel schrieb: > Was ist die "Definition der struct WatchcatReaction" und wo finde ich > die? In irgendeiner Headerdatei .h wird struct WatchcatReaction stehen, wo dann auch die Member mit den Typen definiert ist. Eine Volltextsuche über alle *.h von Ethersex sollte die finden. Ebenso die Funktion ecmd_sender_send_command Das fehlende int bei main ist unschön. Da main immer ein int zurück gibt geht das implizit, ist aber in neuen C-Standards nicht mehr erlaubt.
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.