Laden...

Forenbeiträge von Kleinstein11 Ingesamt 21 Beiträge

23.05.2017 - 17:18 Uhr

ok. Dann die detailliertere Variante.

Ich habe meinen zuvor geschriebenen Code direkt in Unity umgeschrieben. Dies war kein Problem da beide Code in c# sind.

Jetzt habe ich allerdings das Problem dass Unity meine Hardware Schnittstelle also eine .dll nicht einlesen kann.
Der Unity COmpiler gibt folgenden errors wieder:

Assets/Scribts/Initialize.cs(74,35): error CS0246: The type or namespace name `IDevice' could not be found. Are you missing an assembly reference?

Nach einigen Recherchieren habe ich heraus gefunden dass unity mit .dll's welche in einer anderen Sprache geschrieben wurden, nichts anfangen kann. Man muss diese zuerst in Native Plugins "verpacken".

  1. Ist das so richtig?
  2. Falls ja, gibt es dazu irgendwelche sample Projekte?

Vielen Dank im Voraus.

23.05.2017 - 10:21 Uhr

Hallo zusammen,

ich habe einen Code geschrieben, der Daten von einer Messplatte einließt und in eine

List<Tuple<int,int,double>>

schreibt.
Nun möchte ich diese Daten gerne in Unity visualisieren. Wie bekomme ich die List<> in mein Unity Code um Sie dort zu verwenden?
Hinzukommt dass unity die Live Daten darstellen soll, daher ist die List<> dynamisch und verändert sich fortlaufend.

Vielen Dank für eure Hilfe.

Schöne Grüße

11.05.2017 - 17:26 Uhr

Perfekt vielen Dank. genau dass habe ich zuvor nicht hinbekommen 😃

11.05.2017 - 17:00 Uhr

Perfekt Vielen dank. Ich dachte dass bei einer Deklaration falls nichts angegeben automatisch null gesetzt wird.

Ich muss nur < verwenden denke ich oder?

11.05.2017 - 16:55 Uhr

Hallo zusammen,

Ich habe eine ObservableCollection<Tuple<int, int, double>>data mit Messwerten.

Nun möchte ich den Maximalwert aller double Werte herausfinden und den dazu gehörigen Tuple herausbekommen.

Meine vorgehensweise:

private Tuple<int, int, double> Maxima()
        {
             GetData _getdata = new GetData(data);
             Tuple<int, int, double> _maxima;

             for(int i = 0; i <= this.data.Count; i++)
             {
                 if (data[i].Item3 > data[i - 1].Item3)
                 {
                      _maxima=data[i];
                 }
             }
            return _maxima;
        } 

Allerdings meckert der Compiler dass return_maxima sei eine nicht zugewiesene lokale variable.

ich kann das return ja nicht in die for Schleife setzten da erst alle Indexes der data Liste durchlaufen werden muss. Gibt es eine einfachere Lösung vielleicht ??

Vielen Dank im Voraus.

08.05.2017 - 13:27 Uhr

Das hat mir weiter geholfen, es klappt. vielen Dank!!!

08.05.2017 - 12:06 Uhr

Muss man die Liste erst in ein string convertieren?

Aber vorher ist ja auch schon ein Fehler da Zufallszahlen nicht dem Byte[,]array zugeordnet werden

08.05.2017 - 11:42 Uhr

Hallo zusammen,

Ich möchte in einem Testprogramm ein byte[,] array erstellen und für jedes byte ein Zufallswert zuweisen. Dieses byte[,] array möchte ich wieder abrufen und in eine Tuple Liste "stecken".
Also die Liste sollte wie folgt aus sehen:
0,0,123
0,1,23
0,2,4....

Leider bekomme ich nur nullen für das array zugewiesen(im Lokalen fenster). Auf der Console bekomme ich auch nur System.Collections.Generic.List1[System.Tuple3[System.Int32,System.Int32,System.Byte]] ausgegeben.

Wie kann ich das umsetzen?

Hier meine vorgehensweise:

            Random zufall = new Random();
            Byte[,] array = new Byte[64, 240];
            byte[] b = new byte[0];

            List<Tuple<int, int, byte>> data = new List<Tuple<int, int, byte>>();

            foreach (byte wert in array)
            {
                zufall.NextBytes(b);
            }


            for (int x = 0; x < 64; x++)
            {
                for (int y = 0; y < 240; y++)
                {
                    
                    data.Add(Tuple.Create(x, y, array[x, y]));
                    Console.WriteLine(data);
                    Console.ReadKey();
                    
                }
            }
04.05.2017 - 15:52 Uhr

Okay da muss ich gleich mal ein wenig umbauen. Leider bin ich auch Anfänger in WPF, daher könnte man das mit drei separaten Werten in einer Canvas darstellen?

04.05.2017 - 15:45 Uhr

Ja leider muss es ein Tuple sein, da ich sonst nicht weiß wie ich die x,y,value daten zusammen in den UI-Thread verschieben kann, da diese in einer Background Task erzeugt werden.

04.05.2017 - 13:53 Uhr

Hallo zusammen,

ich habe folgendes Problem:

Ich habe eine

ObservationCollection<Tuple<int,int,int>>

. Wie bereits oben beschrieben sind die Werte der Tuple wie folgt beschrieben:

ObservationCollection<Tuple<x Coordinate,y Coordinate,value>>

Nun möchte ich die values daher den dritten Wert der Tuple jeweils mit den passenden X und y Koordinaten in einem Rechteck darstellen.

z.B. x=5, y=10, value=256

Sollte in einem Grid in Reihe 5 und Spalte 10 der Wert 256 stehen.

Mit welchen Tools würde ich das am besten umsetzten?

Und leider verstehe ich auch nicht wie DataBinding für Tuple Elemente funktioniert.

Vielen Dank im Voraus.

25.04.2017 - 12:33 Uhr

Hallo Zusammen,

ich habe ein Beispielprogramm geschrieben, welches mein Problem darstellt.

Wie kann ich mir die Liste Data am einfachsten in Wpf darstellen? Ich habe noch nicht ganz verstanden wie das Datenbinden funktioniert.

Meine xaml sieht wie folgt aus:

<Window x:Class="WpfApp_howToUseTask.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp_howToUseTask"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid Margin="5" RenderTransformOrigin="0.666,0.499">
        <Grid x:Name="MeasurementPlate" Background="Black" Height="200" Margin="419,19,24,50" VerticalAlignment="Center" Width="64" HorizontalAlignment="Center"/>

        <ListView Name="listView1" Margin="0,0,284,0" SelectionChanged="listView1_SelectionChanged">
            <ListView.View>
                <GridView>
                    <GridView.Columns>
                        <GridViewColumn Header="Data" Width="Auto" DisplayMemberBinding="{Binding Path=Data}">
                            
                        </GridViewColumn>
                    </GridView.Columns>
                </GridView>
            </ListView.View>
        </ListView>
        


    </Grid>
</Window>
namespace WpfApp_howToUseTask
{
    /// <summary>
    /// Interaktionslogik für MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        Transfer tr=new Transfer();
        public MainWindow()
        {
            InitializeComponent();

            ObservableCollection<int> Data = new ObservableCollection<int>();
           
            Data=tr.GetData(Data);
            listView1.ItemsSource = tr.GetData(Data);
        }

        private void listView1_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {

        }
    }

    public class Transfer
    {
        public ObservableCollection<int> GetData(ObservableCollection<int>data)
        {
            for (int i=0 ;i < 2; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    int d = i + j;
                    data.Add(d); 
                }
            }
            return data;
        }
    }
}

13.04.2017 - 17:21 Uhr

Vielen Dank für die schnelle Antwort.

Leider bin ich Anfänger und noch ein wenig Ratlos bei einem Projekt.

Gibt es außerdem noch eine Möglichkeit die Messfläche in WPF darzustellen. Daher wenn z.B. bei Position x=54 y=138 ein wert gefunden wird diesen in WPF an der richtigen Stelle auf in dem Messbereich darzustellen?

13.04.2017 - 14:14 Uhr

Hallo Zusammen,

ich habe folgendes Problem:

ich bekomme Messdaten in einem Byte[,]. Diese Messdaten muss ich nun Chronologisch durchgehen.

z.B.

byte[,] quant = new byte[Matrix.GetSizeX(), Matrix.GetSizeY()];
Matrix.GetQuant(quantcount - 1, ref bufferMatrix); 
//Bekommt Quants und schreibt auf buffer

quant = (byte[,])bufferMatrix;

for (int x = 0; x < Matrix.GetSizeY(); x++)
    
       for (int y = 0; y < Matrix.GetSizeY(); y++)

               Wert=quant[x,y];
               Console.WriteLine(Wert);

Da es zu viele Daten sind habe ich eine große Messverzögerung.
Wie kann ich die Verschachtelten Schleifen parallel abfragen sodass es schneller geht ???

Mit der folgenden Parallel FOR Schleife wird die Reihenfolge leider nicht beachtet.

Parallel.For(1 ,Matrix.GetSize(x), i =>  //X-Achse Schleife 

 {  
   for (int y = 0; y < Matrix.GetSizeY(); y++) //Y-Achse Schleife 
      {
          Konsole(i,y);  // eine void Methode die Console.WriteLine ausführt
          force += quant[i, y];
         });
}

Vielen Dank für eure Hilfe
LG

17.03.2017 - 12:21 Uhr

Hallo zusammen,

ich versuche Daten einer messplatte live einzulesen. Die Messplatte besitzt COM IDispatch Schnittellen.

Nun habe ich mit dem Code angefangen, es werden mir auch die angeschlossenen Componente mit den zugehörigen strings ausgegeben allerdings stürzt das Programm dann ab.

Der Code ist im Anhang.
(Das Projekt besitzt eine Interop Schnittstellen verweis)

Als fehler wird> Fehlermeldung:

"Das Programm funktioniert nicht mehr
Das Programm wird aufgrund eines Problems nicht richtig ausgeführt. Das Programm wird geschlossen und Sie werden benachrichtigt wenn eine Lösung verfügbar ist.
Debuggen Programm schließen

Ich bin für jede Hilfe Dankbar.

MfG

Tim

10.03.2017 - 10:53 Uhr

Ich hatte zuvor schon versucht die dlls als Verweis hinzuzufügen. Leider erscheint dann nur

Fehlermeldung:
"Der Verweis ist ungültig oder wird nicht unterstützt."

10.03.2017 - 09:40 Uhr

Also war meine Vermutung richtig die .dll in mein C# projekt einzubinden? Wenn ja bindet man die als Verzeichnis hinzufügen ein? und kann dann einfach die Variablen abrufen oder muss noch ein befehl ausgeführt werden wie Idevice.GetComponents ?

10.03.2017 - 09:26 Uhr

Also die Messplatte ist über ein USB Anschluss verbunden. Die samples Dateien habe ich in Anhang gepackt. Die dll und lib waren leider trotz Komprimierung zu groß.

Ich bedanke mich schonmal vielmals.

LG

09.03.2017 - 20:15 Uhr

Ich schaue morgen im Labor nach. Wie könnte man denn sonst die Messdaten in C# abfragen ?
Immer noch per p/invoke oder woher soll c# wissen welche Quelle man benutzt ?

Vielen Dank und entschuldige für diese dummen Fragen , bin wie gesagt Anfänger 😄

09.03.2017 - 19:16 Uhr

Danke für die Schnelle Antwort.
Das kann gut sein dass die dll mit C/c++ erstellen wurden da ich die h. Dateien sowie c++ Beispiel Dateien habe.

Die COM Schnittstelle wurde im SDK Handbuch erwähnt aber ich gehe stark von der component Objekt Model Schnittstelle aus. Da die Messplatte mit 300Hz arbeitet und die Daten mit einer Hardware COM Schnittstelle denke ich gar nicht schnell genug übertragen werden könnten.

Leider konnte ich dann noch nicht herausfinden wohin die dll Dateien die Messdaten hinschreiben.

09.03.2017 - 18:24 Uhr

Hallo zusammen,

ich bin blutiger C# Anfänger muss aber für meine Bachelor Thesis an Messdaten heran, die ich über eine COM - Schnittstelle einer Messplatte beziehen will.

Die Daten sollen live gemessen werden und live angezeigt werden.

Ich denke, dass die SDK der Messplatte die Daten (x,y Koordinaten, gemessene Kraft, Zeit,...) in mehrere .dll Dateien schreibt.
Außerdem habe ich noch Beispiel polling Dateien in VB geschrieben in der SDK der messplatte gefunden. .lib Dateien habe ich auch gefunden allerdings gehören die ja soweit ich weiß zu den .dll Dateien.

Wie komme ich am besten an die Messdaten heran? Leider konnte mir bis jetzt noch keiner sagen wie ich (nicht selbst erstellte) .dll Dateien auslesen kann.

Vielen Dank für die Hilfe!!!