Laden...

Datagridview filtern und gefilterte Daten an COM-Port senden

Erstellt von insky vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.409 Views
I
insky Themenstarter:in
4 Beiträge seit 2019
vor 4 Jahren
Datagridview filtern und gefilterte Daten an COM-Port senden

Hallo bin der Markus und habe ein Problem,

ich Filter eine Datagridview , nun möchte ich die angezeigten daten vom Filter an einen COM Port senden.

Hat da jemand eine idee wie ich das anstellen könnte , habe es mit array versucht leider ohne erfolg.

Danke schon mal

1.029 Beiträge seit 2010
vor 4 Jahren

Hallo Markus,

deine Frage kann in dieser Form eigentlich nicht beantwortet werden.

Grundlegend arbeiten COM-Ports mit Binärdaten - C#-Objekte sind an der Stelle somit erst mal nutzlos. Grundsätzlich kannst du dir zwar im nachfolgenden Beispiel ansehen, wie man mit der SerialPort-Klasse arbeitet (diese kann Daten über COM-Ports senden und empfangen).
Template SerialPort

Allerdings hilft dir das im Prinzip nicht weiter - denn am anderen Ende des COM-Ports wird ja eine Komponente sein, welche deine Daten in einer bestimmten Form erwartet - an diese wirst du dich letztendlich halten müssen. Und du dazu nichts gesagt hast...

LG

I
insky Themenstarter:in
4 Beiträge seit 2019
vor 4 Jahren

Erstmal vielen Dank für deine antwort.

die daten die empfangen werden müssen sind bytes. ( Arduino )

FastLED.show();
if (rx_byte == '0'){ <--- diese nummer geht bis 100 , 100 Leds
leds[0] = CRGB::Red;
FastLED.show();

Die nummern die ich gefiltert habe sind auch nur nummer , nur bekomme es halt nicht hin zu sagen sende gefiltert 1 als serialPort1.Write("1");

1.029 Beiträge seit 2010
vor 4 Jahren

Hi,

tut mir leid - aber ich glaube dafür solltest du dir erst mal ein paar Beispiele anschauen - du scheinst es ja noch nicht mal probiert zu haben. (Zumindest lässt dein Arduino-Code das nicht vermuten)

In folgendem Link haben die Leute auch Daten von C# gesendet und auch vom Arduino empfangen - ich denke das wäre ein guter Start für dich:
https://forum.arduino.cc/index.php?topic=39811.0

LG

I
insky Themenstarter:in
4 Beiträge seit 2019
vor 4 Jahren

Sorry dann habe ich es vieleicht nicht richtig formuliert.

Ich kann alles schon ansteuern das funktioniert alles .

Wollte nur wissen ob jemand weis wenn ich was filtere , dann das angezeigte von der grid view ich sofort verarbeiten und senden kann.

16.842 Beiträge seit 2008
vor 4 Jahren

Die Sache ist, dass es eigentlich keine gute Idee ist, in der UI zu filtern.
Prinzipiell gleiches Thema wie In einer DataGridView suchen

Man sollte die Daten selbst filtern und dann an die UI binden.
Dann hast Du entsprechend auch die Kontrolle und die Elemente, die gefiltert wurde bzw. Elemente des Filterresultats.
Das sind Basics bzgl -> [Artikel] Drei-Schichten-Architektur

Ich bin mir nicht mal sicher, ob man an das gefilterte ResultSet beim DGV ran kommt.
Wie dem auch sei: sauber umsetzen, dann gäbe es die Situation gar nicht 😃

1.029 Beiträge seit 2010
vor 4 Jahren

Hi,

nun - wie genau filterst du denn? Das Thema ist: Das DataGridView filterst du (wahrscheinlich/hoffentlich) nicht direkt - in vielen Fällen hat man beim DataGridView eine DataTable, deren DataView an das DataGridView gebunden wird. Diese DataView implementiert glücklicherweise IBindingListView und unterstützt dadurch eine Filterfunktion (an deren Daten man auch sehr leicht dran kommt).

Also: Wie filterst du denn? Zeig mal langsam etwas Code 😉

LG

I
insky Themenstarter:in
4 Beiträge seit 2019
vor 4 Jahren


 private void searchbox_KeyUp(object sender, KeyEventArgs e)
            {
            if (searchboxTxt.Text.Length == 8) {
                BindingSource bs = new BindingSource();
                bs.DataSource = dataGridView1.DataSource;
                bs.Filter = "artikelnummer like '%" + searchboxTxt.Text + "%'";
                dataGridView1.DataSource = bs;
                searchboxTxt.Focus();

1.029 Beiträge seit 2010
vor 4 Jahren

Hi,

da ich davon ausgehe, dass deine DataSource eine DataView ist (kenne nur diese Implementierung, die per Default auf diese Art filtern kann) sollte folgendes möglich sein:


void GetData()
{
var view = dataGrindView1.DataSource as DataView;
if (view != null)
{
// hier kommt der Code nur rein, wenn meine Vermutung, dass es sich um eine DataView handelt korrekt ist, falls nicht musst du mal den Code zeigen, der dem DataGridView seine DataSource zuweist
for(int i = 0; i<view.Count;i++)
        {
            // hier iterierst du über die Zeilen, das sollten DataRow's sein, deren Daten du ja dann ganz leicht abgreifen kannst
        }
}
}

LG