Jump to content

Nic

Members
  • Gesamte Inhalte

    1.425
  • Benutzer seit

  • Letzter Besuch

Posts erstellt von Nic

  1. @Paul

     

    Also ich arbeite auch an einer Kamerasteuerung durch Bricks/Bricklets und habe über die Funk-Erweiterung keine Probleme. Durch die WLAN-Extension soll die direkte Steuerung ohne BrickD möglich sein. Allerdings brauchst Du auch hier ein Hardware-Gerät das das Interval steuert und die Kamera auslöst.

     

    Soll der Zeitraffer über Std. oder gar Tage dauern ?

     

    Welche Schnittstelle zur Kamera nutzt Du ? Proprietäre Treiber des Kameraherstellers über Windows, oder gPhoto unter Linux ? Auch so, sollen die Bilder auf der Kamera verbleiben oder sofort auf ein Notebook übertragen werden ?

  2. Interessant, geht es hier um Hochgeschwindigkeitsaufnahmen, z.B. von einem fallenden Wassertropfen ?

    http://www.cognisys-inc.com/stopshot/stopshot.php

     

    Ich bezweifel, dass die derzeitige Brick-Hardware und Design in der Lage ist µs genaue Steuerung zuzulassen. Wobei das Timing-Problem Echtzeitfähigkeit des Betriebssystems voraussetzt.

     

    Ev. sieht das anders aus wenn die OnDevice-Programmierung möglich ist: http://www.tinkerforge.com/doc/Programming_Interfaces.html#pi-hlpi

  3. Da i.d.R. das Konstruieren und Programmieren doch weit mehr Zeit verschlingt, habe ich kein Problem, 1-3 Tage -in Ausnahmen auch mal 1 Woche oder länger- zu warten. Wenn es u.a. auch der Qualität dient, um so besser.

     

    Um Missverständnisse vorzubeugen, würde ich den Kunden ein Feedback geben, falls mal die Lieferung etwas länger als geplant dauert. Also z.b. als Message hier im Forum, Hint im Shop "Zur Zeit ist mir einer Wartezeit von x Tagen zu rechnen..." oder im Blog. Ich schätze zuverlässige, rechtzeitige Infos und die damit result. Planbarkeit mehr.

  4. SVN und Jira Erfahrungen.

     

    Gab es oder gibt es hier im TF-Portal jemals eine kurze Einweisung wie wir Github im Hinblick auf Mitarbeit beim Source-Code für TF-Produkte zu benutzen haben ?

     

    Sicher kann ich mir die Online-Hilfe reinziehen, aber das klärt nur die techn. Benutzung von Github, aber wie soll z.B. die Source-Code Formatierung aussehen, welche Ansprüche hat man zwecks Organisation und Handhabung der Sourcen für die TF-Produkte etc...

     

    Und wenns dann mal mehr Aufklärung gegeben hat, welchen der Account-Arten von Github habe ich zu wählen um für die TF-Gemeinde "produktiv" zu sein ?

    Reicht der kostenlose OpenSource Acc ? Oder sind damit Einschränkungen im TF-Repos zu rechnen ?

     

    Wäre es gar möglich zwecks guten Kundenservice die TF-Accounts gleich auch autom. bei Github anzulegen ? Sozusagen Github transparent im TF-Portal ist.

     

  5. Nur so ein Gedanke warum steht vor und nach dem enumerate ein usleep ?

    Du schreibst der Slave steht im Nachbarzimmer... also ich hatte Empfangsprobleme wenn ne dicke Betonwand und der Durchgang nur im die Ecke war, obwohl Luftline höchstens 2m.

  6. Dann würde das etwa so aussehen:

    begin
        result := false;
        writeLock.Acquire;
        job:=CreateEvent(nil,false,false,nil);
        try
          try
            tick:=GetTickCount + DWord(timeout);
            while (true) do begin
    
              writeLock.Acquire;
              if (Count > 0) then
                break;
              state := MsgWaitForMultipleObjects(1,job,false,timeout,QS_ALLINPUT);
              writeLock.Release;
    
              if (closing) or (timeout < Timeout_Infinite) or (state=WAIT_TIMEOUT) then begin
               result := false;
               exit;
              end;
              timeout := tick-GetTickCount;
            end;
    
            p:=queue.Pop;
            item := p^;
            dispose(p);
    
            result := true;
          except on E: Exception do
            raise Exception.Create('TBlockingQueue.TryDequeue:' + e.Message);
          end
        finally
          CloseHandle(job);
          writeLock.Release;
        end;
    end;

    Was ist aber mit dem WriteLock zu Proc-Begin bzw. Ende ?

  7. Anfangs hatte ich die CriticalSection (WriteLock) zu Beginn und Ende von TryDequeue eingetragen, aber das führte dazu, dass der HauptThread, der nur dort reinläuft, das Enqueue vom Recv-Thread aber solange blockiert, bis die 2.5 sec abgelaufen sind. Das führte dazu, adss nie ein Device geadded wurde.

     

    Deshalb der Lock erst später wenn von der Queue gepoppt wird. Innerhalb der Zeitschleife wird aber auf das geblockte Count geprüft und zur Laufzeit wird dort die Count = 1 aber festgestellt.

     

    Das lock(writeLock) in C# entspricht m.W. den Acquire und Release in Delphi

    writeLock.Acquire;
    try
    ...
    finally
      writeLock.Release;
    end;

     

    Das Monitoring wird in Delphi 7 noch nicht unterstützt, mir ist allerdings noch ist ganz klar wie man das durch D7 Bordmittel alternativ lösen könnte. Aber ich schaue mir mal Deinen Ansatz heute abend genauer an. Danke fürs Code Review.

     

    Hmmh, ich sehe gerade das die Funktion Count in den C#Bindings überhaupt nicht benutzt wird, es wird immerzu das Property queue.count abgefragt, hat das ev. mit der o.g. Situation zutun ?

  8. Ich werfe mal in die Arena einen Entwurf (Delphi7 Prof., seit 2002) zumindest der kompletten Haupt-Klasse IPConnection, ohne die nix geht und die Komponenten BrickStepper(unvollständig) und BrickletIO4 (vollständig).

     

    Basierend auf der C#-Implementation, wurde versucht die Struktur weitgehends ähnlich umzusetzen. (Ausnahme z.B. die Delegates in C#). Hinzugefügt habe ich einige Basis-Klassen bzw. Typen oder Records, wo es sich u.U. anbietet den Code zu vereinfachen, um z.B. Redundanzen zu vermeiden.

     

    Ob das implem. threadsichere FIFO-Pattern (BlockingQueue) so zuverlässig ist wie in C# oder Java sollte als erstes begutachtet werden.

     

    Die Units lassen sich prima zu einer x32-Exe compil. und zumindest auf einem i5,Win7x64 ausführen.

    Ob es mit älteren bzw. jüngeren Delphi-Versionen als D7 compilierbar ist, muss geprüft werden.

     

    Es wird kein Anspruch auf Vollständigkeit erhoben noch die lehrbuchmässige Umsetzung von Delphi-Code.

    Das alles hat experimentellen Charakter und sollte erstmal nur von erfahrenen Delphi-Entw. in einem Code-Review gesichtet und getestet werden. Verwendung des Source-Codes also auf eigenes Risiko !

    entwurf.zip

  9. @photron

    Die Delphi-Bindings sind von Hand strukturell auf Basis der C#-Bindings erstellt. Auf Code-Generator ist soweit also nur indirekt Rücksicht genommen. Die Brick-Hauptklasse der IPConnection ist quantitativ komplett, Brick-Stepper erstmal nur die wichtigsten Fkt. wie DriveFor, Backw, Enable/Disable etc.

     

    Ich schlage vor, ich lasse mein Ergebnis zuerst mit Hilfe der Delphi-Experten - ev. hat haentschman

    Interesse - in einem Code-Review Korrektur lesen. Und stellen anschließend dann eine erste Beta ins Wiki, bzw. Forum oder wo auch immer.

     

    Die Arbeit für Dich würde sich erstmal dann nur noch darauf beschränken, die Bindings der übrigen Bricks und Bricklets hinzuzufügen, und das in den Code-Generator einzubinden. Wenn ich mit den Delphi-Bindings also wie o.g. Unterstützung von Userseite bekommen könnte, wäre eine Beta nach dem WE möglich.

     

    Es wäre vorteilhaft, wenn wir auch eine Übersicht hier im Forum hätten, die Hinweise auf Programmierkenntnisse der User zeigt. Ev. innerhalb im Profil festlegbar !?

×
×
  • Neu erstellen...