Jump to content

FlyingDoc

Members
  • Gesamte Inhalte

    459
  • Benutzer seit

  • Letzter Besuch

Alle erstellten Inhalte von FlyingDoc

  1. Nach dem ich nun ja mit QT mein Projekt umsetzen kann, ahb ich jetzt folgendes Problem. Ich frage mit der IPCON_CALLBACK_ENUMERATE Funktion meine Hardware ab. Im Callback für die Variable device_identifier immer eine 0 als Wert zurück. Im Visualstudio mit QT Plugin bekomme ich aber den device_identifier zurück der den Brick oder Bricklet identifiziert. Alle anderen Werte kommen. Gerade nochmal getestet. Aufruf ipcon_register_callback(ipcon,IPCON_CALLBACK_ENUMERATE,(void *)cb_enumerate,NULL);
  2. Sag doch mal an was du eigentlich vor hast und wo es rein soll.
  3. Das glaube ich in diesem Fall nicht. Wo soll der Mini-Miniaturmotor denn die Milliampere lassen? Ich lasse mich gerne ueberzeugen und probiere es erstmal mit einer externen Batterie, aber dann ... Was muss ich denn bei Minimum-/Output-voltage einstellen? Der Loetkolben Du wirst dich wundern wieviel mA so ein kleiner Moter ziehen kann. Die mA werden da schnell zu wenig. Rechne dir doch mal aus was eine CPU sich für Stromstärken genehmigt. Da fallen die die Augen raus. Tante Edit sagt: Schau mal Hier! Ist zwar etwas älter aber mit dem Programm zeigt kannst du mal sehen welche Ströme welches Servo hat. Ist eine Datenbank. Von einem Franzossen.
  4. Du kannst einen 2. Master aufstecken. Der untere übernimmt dann so zu sagen die Führung und der 2.stellt nur seine Anschlüsse zur Verfügung.
  5. Ein USB Anschluss kann max 500mA liefern. Beim Pi ist es weniger. Das hat nix damit zu tun wieviel du dem Pi zur Verfügung stellst.
  6. Vielleicht wäre es angebracht auch für QT eine Beschreibung zu machen. Die jetzige ist ja für Visual Studio.
  7. - Zeigt das Projekt in der TreeView auch die CPP-Dateien an? (ich musste die manuell neu aufnehmen nach dem Umbenennen) Ja werden angezeigt - Die Projekt-Datei hast Du angepasst bzw. hat nur noch die CPPs? Ja - Wie sieht die Compiler-Ausgabe aus, wenn Du erst alles bereinigst und dann neu bauen lässt. Ich habe nochmal einen Screenshot des Compilers angehängt: hier sieht man, dass erst alle Sourcen mit g++ übersetzt werden und ganz am Ende kommt der Link-Schritt. Siehe oben
  8. Sorry das ich erst heute antworte. Es hat mich niedergeschnupft. Hab zwar reingeschaut aber nichts gemacht. Hier mal ein Ausdruck der Ausgabe meines Testprogrammes. #------------------------------------------------- # # Project created by QtCreator 2013-04-29T22:43:39 # #------------------------------------------------- QT += core QT -= gui TARGET = HUDTest2 CONFIG += console CONFIG -= app_bundle TEMPLATE = app SOURCES += main.cpp \ ip_connection.cpp HEADERS += \ ip_connection.h #include <QCoreApplication> #include <stdio.h> #include <math.h> #include <string.h> #include <mbstring.h> #include <malloc.h> #include <stdint.h> #include "ip_connection.h" IPConnection* ipcon = NULL; #define MAX_STRING 255 struct coordinates { float x; float y; float z; float w; }COORDINATES; struct Quaternion { double w, x, y, z; }; struct Euler { double yaw,pitch,roll; }; int16_t pitch = 0; int16_t roll = 0; int16_t yaw = 0; int16_t heading = 0; coordinates *base_coordinates; float base_x = 0; float base_y = 0; float base_z = 0; float base_w = 0; char* Programmpath= NULL; char* HOST = NULL; int PORT = 4223; // Demon Standardport int Periode = 100; int IMUPeriode = 250; int GPSPeriode = 1000; char* UID = NULL; char AI_Speed; char* AI_Speed_con_uid = NULL; char AI2_Voltage; char* AI2_Voltage_con_uid = NULL; float pi = M_PI; int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); Programmpath = (char *)malloc((MAX_STRING) * sizeof(char)); strcpy(Programmpath, argv[0]); base_coordinates = new coordinates(); base_coordinates->x = 55; base_coordinates->y = 0; base_coordinates->z = 0; base_coordinates->w = 0; HOST = (char *)malloc((MAX_STRING) * sizeof(char)); // strcpy(HOST, "localhost"); // strcpy(HOST, "programm64"); strcpy(HOST, "nbruppelt"); AI_Speed_con_uid = (char *)malloc((MAX_STRING) * sizeof(char)); strcpy(AI_Speed_con_uid, "5WpMpP"); AI_Speed = 'a'; AI2_Voltage_con_uid = (char *)malloc((MAX_STRING) * sizeof(char)); strcpy(AI2_Voltage_con_uid, "5WpMpP"); AI2_Voltage = 'd'; if( argc > 1 ) { for( int i = 1; i < argc; i++ ) { _strlwr( argv[i] ); unsigned char* Test1; Test1 = (unsigned char*)argv[i]; unsigned char* Test2 = (unsigned char*)"?"; if(_mbsnbcmp(Test1,Test2,1)==0) { fprintf(stderr, "\nTest.exe -Host Hostname -Port XXX -Periode XXX\"\n\n\t-Host Hostname\tIP or computername on that of the BRICK Demaon runs ( Default localhost )\n\t-Port XXX\tPort with that of the BRICK Demaon runs ( Default 4223 )\n\t-Periode XXX\tCycle period ( Default 100 )\n"); // exit( 1 ); } Test2 = (unsigned char*)"-host"; if(_mbsnbcmp(Test1,Test2,5)==0) { strcpy(HOST, argv[i+1]); } Test2 = (unsigned char*)"-port"; if(_mbsnbcmp(Test1,Test2,5)==0) { PORT = atoi(argv[i+1]); } Test2 = (unsigned char*)"-period"; if(_mbsnbcmp(Test1,Test2,5)==0) { Periode = atoi(argv[i+1]); } } } /****************************************************************************/ /* IPConnection erstellen */ /****************************************************************************/ if(!ipcon) { ipcon = new IPConnection(); } // ipcon_create(ipcon); if(ipcon) { if(ipcon_connect(ipcon, HOST, PORT) < 0) { fprintf(stderr, "Could not create connection\n"); } // exit(1); } // printf("Test %s\t %d\n",HOST, PORT); /****************************************************************************/ /* Komponenten (Bricks,Bricklets) abfragen */ /****************************************************************************/ // ipcon_register_callback(ipcon,IPCON_CALLBACK_ENUMERATE,(void *)cb_enumerate,NULL); // ipcon_enumerate(ipcon); return a.exec(); } 20:57:16: Führe Schritte für Projekt HUDTest2 aus... 20:57:16: Unveränderte Konfiguration, qmake-Schritt wird übersprungen. 20:57:17: Starte "C:\Software\Qt\Qt5.0.1\Tools\MinGW\bin\mingw32-make.exe" C:/Software/Qt/Qt5.0.1/Tools/MinGW/bin/mingw32-make -f Makefile.Debug mingw32-make[1]: Entering directory 'C:/Software/QT Projekte/HUDTest2-build-Desktop_Qt_5_0_1_MinGW_32bit-Debug' g++ -Wl,-subsystem,console -mthreads -o debug\HUDTest2.exe debug/main.o debug/ip_connection.o -LC:\Software\Qt\Qt5.0.1\5.0.1\mingw47_32\lib -lQt5Cored debug/ip_connection.o: In function `socket_create': C:\Software\QT Projekte\HUDTest2-build-Desktop_Qt_5_0_1_MinGW_32bit-Debug/../HUDTest2/ip_connection.cpp:155: undefined reference to `_imp__socket@12' C:\Software\QT Projekte\HUDTest2-build-Desktop_Qt_5_0_1_MinGW_32bit-Debug/../HUDTest2/ip_connection.cpp:162: undefined reference to `_imp__setsockopt@20' C:\Software\QT Projekte\HUDTest2-build-Desktop_Qt_5_0_1_MinGW_32bit-Debug/../HUDTest2/ip_connection.cpp:163: undefined reference to `_imp__closesocket@4' debug/ip_connection.o: In function `socket_destroy': C:\Software\QT Projekte\HUDTest2-build-Desktop_Qt_5_0_1_MinGW_32bit-Debug/../HUDTest2/ip_connection.cpp:172: undefined reference to `_imp__closesocket@4' debug/ip_connection.o: In function `socket_connect': C:\Software\QT Projekte\HUDTest2-build-Desktop_Qt_5_0_1_MinGW_32bit-Debug/../HUDTest2/ip_connection.cpp:176: undefined reference to `_imp__connect@12' debug/ip_connection.o: In function `socket_shutdown': C:\Software\QT Projekte\HUDTest2-build-Desktop_Qt_5_0_1_MinGW_32bit-Debug/../HUDTest2/ip_connection.cpp:180: undefined reference to `_imp__shutdown@8' debug/ip_connection.o: In function `socket_receive': C:\Software\QT Projekte\HUDTest2-build-Desktop_Qt_5_0_1_MinGW_32bit-Debug/../HUDTest2/ip_connection.cpp:184: undefined reference to `_imp__recv@16' C:\Software\QT Projekte\HUDTest2-build-Desktop_Qt_5_0_1_MinGW_32bit-Debug/../HUDTest2/ip_connection.cpp:189: undefined reference to `_imp__WSAGetLastError@0' debug/ip_connection.o: In function `socket_send': C:\Software\QT Projekte\HUDTest2-build-Desktop_Qt_5_0_1_MinGW_32bit-Debug/../HUDTest2/ip_connection.cpp:200: undefined reference to `_imp__send@16' debug/ip_connection.o: In function `ipcon_connect_unlocked': C:\Software\QT Projekte\HUDTest2-build-Desktop_Qt_5_0_1_MinGW_32bit-Debug/../HUDTest2/ip_connection.cpp:1312: undefined reference to `_imp__gethostbyname@4' C:\Software\QT Projekte\HUDTest2-build-Desktop_Qt_5_0_1_MinGW_32bit-Debug/../HUDTest2/ip_connection.cpp:1322: undefined reference to `_imp__htons@4' debug/ip_connection.o: In function `Z13ipcon_connectP13_IPConnectionPKct': C:\Software\QT Projekte\HUDTest2-build-Desktop_Qt_5_0_1_MinGW_32bit-Debug/../HUDTest2/ip_connection.cpp:1564: undefined reference to `_imp__WSAStartup@820:57:31: Der Prozess "C:\Software\Qt\Qt5.0.1\Tools\MinGW\bin\mingw32-make.exe" wurde mit dem Rückgabewert 2 beendet. Error while building/deploying project HUDTest2 (kit: Desktop Qt 5.0.1 MinGW 32bit) Bei der Ausführung von Schritt 'Make'
  9. FlyingDoc

    MasterBrickControl?

    Soweit ich es verstanden hab möchte er einen programmierbaren Brick auf dem er ein Programm ausführen kann um zum Bleistift Daten zu sammeln oder irgendwelche Aktionen auszulösen. Zum Bleistift ist Temp < 10°C Setze RelaisBricklet Relais 1 auf Ein (Heizung an). Also sozusagen eine Mini SPS wenn man es genau nimmt.
  10. Also ich habe die Binding Dateien jetzt mal in cpp umbenannt. Ergebnic. Der dusselige Fehler kommt jetzt bei genau diesen Dateien beim Compilieren. Und wenn ich sie aus der Liste rauslasse und nur den Inlude aufrufe kommt der alte Fehler wieder. Übrigends ist das Projet als QT mit GUI deklariert.
  11. Ich habe es so oder so probiert. DIe Klasse kann ich einbinden. Nur wenn ich dann eine Funktion daraus aufrufen will kommt halt dieser Fehler. Im Editor zeigt er mir ja sogar die Funktionsaufrufparameter mit an. Nur der Compiler eben spielt Mimose.
  12. Wo kann ich das einstellen welche Datein mit was compiliert wird? Hab im QT noch nichts gefunden.
  13. Mein Projekt habe ich bis jetzt ja mit QTPlugin zum Visual Studio geschrieben. Da funktioniert ja auch alles. Da ich es ja aber auf dem PI laufen lassen will habe ich mir das Komplette QT mit Creator geladen und will das Projekt jetzt portieren. Leider bringt es mir beim Compilieren Fehler sobald ich die Includes von TF einbringe. Der Fehler ist immer gleich. C:\Software\QT Projekte\HUD\main.cpp:147: Fehler:undefined reference to `ipcon_connect(_IPConnection*, char const*, unsigned short)' Vielleicht kann mir jemand einen Tipp geben.
  14. Über einen USB Anschluß können laut USB Spezifikation maximal 500mA geliefert werden. Die ganzen Module zusammen werden da wohl etwas viel. Ausserdem weiß ich jetzt nicht ob der Pi das überhaupt liefern kann.
  15. Einen kleinen Tipp noch. Vergiss nicht vorher das Ende des Kabels was du in den Stecker schiebst abzuisolieren. Du wärst nicht der erste der so etwas vergisst und sich dann wundert.
  16. Ich würde aus der Hüfte dir einen Fahrtregler aus dem Modellbau vorschlagen. Die müssten solche Leistung steuern können.
  17. Mann nimmt einen sehr lichtempfindlichen Sensor. Wenn es dunkel ist wird die Blende geöffnet. Je heller um so mehr ist sie geschlossen. Würde aber der Messung entgegewirken. Da wäre eine Schaltbare Blende in 2 Stufen oder mehr erforderlich. Wenn ein bestimmter Wert über oder unterschritten wird , wird die Blende geschaltet. Einfacher wären 2 Sensoren auf dem Bricklet.
  18. Für so etwas brauchst mann eine Blende und keine Linse. Oder 2 verschiedene Fotosensoren mit unterscilhiedlichen Messbereich.
  19. Könnt ihr schon etwas zur Preislage sagen wo die sich ungefähr ansiedeln wird?
  20. Den PI gibt es jetzt bei Conrad Elektronik zu kaufen. Nur ewas teuer finde ich.
  21. @remotecontrol So würde man die Leiterplatte sehr schnell zerstören. Wenn die Lötpunkte mit Lötzinn gefüllt sind, entweder eine Entlötpumpe ( mit Lötkolben den Lötpunkt erhitzen und dann mit der Entlötpumpe das heiße flüssige Lot "Lötzinn" aus dem Lötpunkt absaugen) benutzen oder mit Lötkolben den Lötpunkt erhitzen und dann durch Entlötlitze das Lot entfernen. Als Entlötlitze kann man auch einen dicken Kupferlitzedraht benutzen.
  22. Ich finde diese Idee spitze. Das könnte zum Beispiel für Unterrichtsklassen zum Lernen eingesetzt werden. Abgesehen von den privaten Bastlern.
  23. Hier mal einen Ausschnitt aus meinem Programm. Da erfrage ich bei Programmstart alle Komponenten. Mal erweitert um den Dualbricklet. #include "ip_connection.h" #include "bricklet_dual_relay.h" #include "bricklet_temperature.h" char* Programmpath= NULL; char* HOST = NULL; int PORT = 4223; // Demon Standardport int Periode = 100; IPConnection* ipcon = NULL; Temperature* Temp = NULL; DualRelay* dual_relay = NULL; Master* master = NULL; IMU* imu = NULL; GPS* gps = NULL; AnalogIn* ai_Speed = NULL; AnalogIn* ai_Altitude = NULL; AnalogIn* ai_Voltage = NULL; RotaryPoti* Rotary = NULL; Temperature* Temp = NULL; Barometer* Baro = NULL; IO16* Io16_Brick = NULL; void Create_Temperature(const char* device_uid, uint8_t device_identifier, const char *connected_uid,char position, bool is_new) { /****************************************************************************/ /* Temperature Bricklet einbinden */ /****************************************************************************/ UID = (char *)malloc((strlen(device_uid)) * sizeof(char)); size_t n = (strlen(device_uid)) * sizeof(char); if(UID) { _strset( UID, 0 ); strncpy_s(UID,strlen(device_uid), device_uid, strlen(device_uid)-1); /****************************************************************************/ /* Temperature Bricklet erstellen */ /****************************************************************************/ if(!Temp) { Temp = new Temperature(); } temperature_create(Temp, device_uid,ipcon); /****************************************************************************/ /* Temperature Bricklet zur IP Connection hinzufügen */ /****************************************************************************/ int16_t temperature; if(temperature_get_temperature(Temp, &temperature) > -1) { window->Set_Temperature(temperature); } /****************************************************************************/ /* Ausgabegeschwindigkeit einstellen in ms */ /****************************************************************************/ // printf("Periode %d\n",Periode); temperature_set_temperature_callback_period(Temp, Periode); /****************************************************************************/ /* Temperature Bricklet Callback erstellen */ /****************************************************************************/ temperature_register_callback(Temp,TEMPERATURE_CALLBACK_TEMPERATURE , cb_temperature,Temp); } } void Create_DUAL_RELAY(const char* device_uid, uint8_t device_identifier, const char *connected_uid,char position, bool is_new) { /****************************************************************************/ /* Dual Relay Bricklet einbinden */ /****************************************************************************/ UID = (char *)malloc((strlen(device_uid)) * sizeof(char)); size_t n = (strlen(device_uid)) * sizeof(char); if(UID) { _strset( UID, 0 ); strncpy_s(UID,strlen(device_uid), device_uid, strlen(device_uid)-1); /****************************************************************************/ /* Dual Relay Bricklet erstellen */ /****************************************************************************/ if(!dual_relay) { dual_relay= new DualRelay(); } temperature_create(dual_relay, device_uid,ipcon); /****************************************************************************/ /* Dual Relay Bricklet zur IP Connection hinzufügen */ /****************************************************************************/ /****************************************************************************/ /* Ausgabegeschwindigkeit einstellen in ms */ /****************************************************************************/ // printf("Periode %d\n",Periode); temperature_set_temperature_callback_period(Temp, Periode); /****************************************************************************/ /* Temperature Bricklet Callback erstellen */ /****************************************************************************/ temperature_register_callback(Temp,TEMPERATURE_CALLBACK_TEMPERATURE , cb_temperature,Temp); } } void cb_enumerate(const char *device_uid, const char *connected_uid,char position,uint8_t hardware_version[3],uint8_t firmware_version[3],uint16_t device_identifier,uint8_t enumeration_type,void *user_data) { /****************************************************************************/ /* Antwort auf Komponentenabfrage (Bricks,Bricklets) */ /****************************************************************************/ // printf("device_uid: %s\tdevice_name: %s\tdevice_stack_id: %d\t is_new: %d\n\n", device_uid, device_name, device_stack_id,is_new); if(device_identifier==MASTER_DEVICE_IDENTIFIER) { // printf("Temperature gefunden\n"); // Create_Master(device_uid,device_identifier, connected_uid, position,true); } if(device_identifier==IMU_DEVICE_IDENTIFIER) { // printf("IMU gefunden\n"); // Create_IMU(device_uid,device_identifier, connected_uid, position,true); } if(device_identifier==ANALOG_IN_DEVICE_IDENTIFIER) { // printf("IMU gefunden\n"); // Create_AnalogIn(device_uid,device_identifier, connected_uid, position,true); } if(device_identifier==ROTARY_POTI_DEVICE_IDENTIFIER) { // printf("Rotary gefunden\n"); // Create_RotaryPoti(device_uid,device_identifier, connected_uid, position,true); } if(device_identifier==TEMPERATURE_DEVICE_IDENTIFIER) { // printf("Temperature gefunden\n"); Create_Temperature(device_uid,device_identifier, connected_uid, position,true); } if(device_identifier==BAROMETER_DEVICE_IDENTIFIER) { // printf("Barometer gefunden\n"); // Create_Barometer(device_uid,device_identifier, connected_uid, position,true); } if(device_identifier==IO16_DEVICE_IDENTIFIER) { // printf("Temperature gefunden\n"); // Create_IO16(device_uid,device_identifier, connected_uid, position,true); } if(device_identifier==GPS_DEVICE_IDENTIFIER) { // printf("Temperature gefunden\n"); // Create_GPS(device_uid,device_identifier, connected_uid, position,true); } if(device_identifier==DUAL_RELAY_DEVICE_IDENTIFIER) { // printf("Dual Relay gefunden\n"); Create_DUAL_RELAY(device_uid,device_identifier, connected_uid, position,true); } } int main(int argc, char *argv[]) { Programmpath = (char *)malloc((MAX_STRING) * sizeof(char)); strcpy(Programmpath, argv[0]); HOST = (char *)malloc((MAX_STRING) * sizeof(char)); strcpy(HOST, "localhost"); if( argc > 1 ) { for( int i = 1; i < argc; i++ ) { _strlwr( argv[i] ); unsigned char* Test1; Test1 = (unsigned char*)argv[i]; unsigned char* Test2 = (unsigned char*)"?"; if(_mbsnbcmp(Test1,Test2,1)==0) { fprintf(stderr, "\nTest.exe -Host Hostname -Port XXX -Periode XXX\"\n\n\t-Host Hostname\tIP or computername on that of the BRICK Demaon runs ( Default localhost )\n\t-Port XXX\tPort with that of the BRICK Demaon runs ( Default 4223 )\n\t-Periode XXX\tCycle period ( Default 100 )\n"); // exit( 1 ); } Test2 = (unsigned char*)"-host"; if(_mbsnbcmp(Test1,Test2,5)==0) { strcpy(HOST, argv[i+1]); } Test2 = (unsigned char*)"-port"; if(_mbsnbcmp(Test1,Test2,5)==0) { PORT = atoi(argv[i+1]); } Test2 = (unsigned char*)"-period"; if(_mbsnbcmp(Test1,Test2,5)==0) { Periode = atoi(argv[i+1]); } } } if(!ipcon) { ipcon = new IPConnection(); } ipcon_create(ipcon); if(ipcon) { if(ipcon_connect(ipcon, HOST, PORT) < 0) { fprintf(stderr, "Could not create connection\n"); } // exit(1); } ipcon_register_callback(ipcon, IPCON_CALLBACK_ENUMERATE, (void *)cb_enumerate, NULL); ipcon_enumerate(ipcon); }
×
×
  • Neu erstellen...