Laden...

Forenbeiträge von BackPacker Ingesamt 10 Beiträge

27.04.2017 - 20:04 Uhr

Hallo, ich habe wieder ein kleines Problem:

Die Entwicklungsumgebung ist MonoDevelop und GTK#.

Ich habe eine Haupt Klasse und von der aus, möchte ich bei einem bestimmten Ereignis auf die eine Methode im Widget zugreifen. Hier ist mal ein vereinfachter Quelltext:


public partial class MainWindow: Gtk.Window
	{
		WidgetTest test = new WidgetTest();

		public MainWindow () : base (Gtk.WindowType.Toplevel)
		{
			Build ();
			test.Clear ();
		}
	}

	[System.ComponentModel.ToolboxItem (true)]
	public partial class WidgetTest : Gtk.Bin
	{
		public void Clear()
		{
			textview1.Buffer.Text = " ";
		}
	}

im Texview steht Text, den ich gerne löschen würde. Ich denke der fehler ist , dass der Textview nach dem Funktionsaufruf nicht mehr aktualisiert wird. Denn andere Befehle in dieser Methode werden ausgeführt.
Wie kann ich daher den Textview aktualisieren oder habt ihr eine andere Idee?

Danke für eure Hilfe!
BP

01.04.2017 - 18:57 Uhr

PS. du könntest das auch mit libusb machen. Da musst du nur auf die vendor bzw. product id abprüfen und dann direkt per usb Transfers in den virtuellen Comport reinschreiben 😉

Hey, danke!

Ich habe mir das mit dem Querverweis nochmal angeschaut, und kam dann auf eine Lösung.


UsbRegDeviceList allDevices = UsbDevice.AllDevices;
   foreach (UsbRegistry usbRegistry  in allDevices) {
       if (usbRegistry.Vid == 1133 && usbRegistry.Pid == 3139) {
               Console.WriteLine ("gefunden");
               var name = new SerialPort();
               Console.WriteLine(name.PortName);
                }

Jetzt schaue ich mir das nochmal mit den udev-rules an, vllt geht es damit eleganter. Aber für das erste reicht das erstmal.
8)

01.04.2017 - 11:01 Uhr

Genau. Ich möchte dann erkennen, ob ein Arduino eingesteckt worden ist und wie der Serielle Port heißt. Also ttyACMx.

Das Problem ist die Verknüpfung zwischen der LibUSB und dem SerialPort Namen.


var serialport = SerialPort.GetPortNames() ;

So bekomme ich alle verwendeten SerialPorts.
Mit meinem ersten Ansatz weiß ich nur, das einer der SerialPorts ein Ardunio ist. Ich weiß aber nicht welcher das ist.
Kann ich diese Liste noch mal mit der VendorID durchsuchen?

31.03.2017 - 21:37 Uhr

Hallo 🙂
Ich will mit einen Programm erkennen, wenn ein bestimmtes Usb-Gerät eingesteckt wurde.
Meine erste Idee war die LibUsbDotNet: Damit funktioniert die abfrage, aber ich bekomme nicht den jeweiligen Portnamen angezeigt, an dem das Gerät steckt.
Habt ihr noch Anregungen wie ich das vielleicht realisieren könnte?


UsbRegDeviceList allDevices = UsbDevice.AllDevices;

			foreach (UsbRegistry usbRegistry  in allDevices) {
				if (usbRegistry.Vid == 1133 && usbRegistry.Pid == 3139) {	
					Console.WriteLine ("gefunden");

				}

15.03.2017 - 20:20 Uhr

Die Doku habe ich mir ja schon angeschaut, da geht das leider nicht hervor.

Den code habe ich mir noch nicht angeschaut, wenn das jemand auf anhiebt wusste, wäre das einfacher 8)

15.03.2017 - 18:15 Uhr

Hallo,

Ich habe ein kleines Problem. Ich wollte mit Hilfe von OxyPlot Grafiken darstellen. Das Darstellen an sich, funktioniert ganz gut.
Das Problem ist, dass ich gerne eine Achsenbeschriftung hätte... Hat jemand schon einmal damit gearbeitet? Es gibt eine Doku, die ist mehr schlecht als recht...


public PlotModel plotmodel;
...
plotmodel.Axes.Add(new OxyPlot.Axes.LinearAxis (){
     Position = OxyPlot.Axes.AxisPosition.Left,
     Title = "asd",
});


Der Achsentitel erscheint leider nur nicht..

Grüße,
🙂

11.03.2017 - 17:28 Uhr

Jetzt erst sehe ich daß du anscheinend GTK-Sharp (GTK#) verwendest - warum postest du dann hier in "Windows Forms" (bzw. erwähnst es nicht einmal)?

sorry, ich habe das leider ins falsche Unterforum gepostet.

Danke dir aber für den Link, bzw den Quelltest damit funktioniert es!

11.03.2017 - 11:24 Uhr

Ich möchte mit dem geklickten Event dann andere Varibeln setzen. So dass ich damit einige Einstellungen vornehmen kann.
Den Menünamen in einem entspechenenden String zu verwalten, wäre das Ziel.

Also so:


Ergebnis="übergebenerName"; 

Aus das Ergebnis möchte ich dann mit anderen Methoden wieder zugreifen. Nur bekomme ich es nicht hin, etwas eindeutiges, wie zum bsp den MenüItem Namen oder den MenüItem Index abzufangen.

Die "Console-Ausgabe" soll nur als Hilfe dienen, um zu sehen, welches Objekt gesendet hat. Wenn ich das Objekt caste, wenn ich das so mache, wie im Quelltext, kommt in der Console immernoch "Gtk.MenuItem"

Was mache ich denn nur falsch ?(


public void itemClick(object sender, EventArgs e)
{
    MenuItem m = (MenuItem)sender;
    Console.WriteLine (m.ToString());
 }

Ein solcher Quellttext funktioniert nicht, da eine Fehlermeldung erscheint:


Console.WriteLine(m.Text);

10.03.2017 - 20:31 Uhr

Ich glaube, dass habe ich nicht richtig verstanden.
Wenn ich das so mache, dann erscheint in der Console in beiden Fällen ein "Gtk.MenuItem"

public void itemClick(object sender, EventArgs e)
{
	MenuItem m = (MenuItem)sender;
	Console.WriteLine (m);
	Console.WriteLine (sender);
}
10.03.2017 - 19:10 Uhr

Hallo,
ich wollte ein Menü erstellen und jeden Menüpunkt mit einen Event verknüpfen.

Das Problem ist jetzt nur, dass ich nicht weiß welcher Menüpunkt angeklickt wurde. Wenn ich den Sender auslese, kommt jedesmal nur "MenuItem".

Hier ist mal der Code:
Was sollte ich daran ändern?

MenuBar auswahlMenu = new MenuBar(); 
Menu file_menu = new Menu ();  

for(int a=0; a<stringMitNamen.Count; a++)
 {
 	MenuItem item = new MenuItem(stringMitNamen[a]);
 	item.Activated += MyEventstart;
 	file_menu.Append(item);
}  

 public static void MyEventstart( object objSender, EventArgs e)
 {  
}

[Hinweis] Bitte schau in die SDK-/MSDN-Doku