morius: danke, die Lösung kannte ich auch noch nicht.
Hi,
müsste das nicht dann klappen, wenn du das Gateway des Netzwerkadapters auf 0.0.0.0 setzt?
Intranet müsstest du weiterhin ansprechen können.
Wegen Maus & Tastatur. Die Maus könntest Du mittels
System.Windows.Forms.Cursor.Position = new Point(this.Size.Height,this.Size.Width);
An einer bestimmten Pos in einem Form festhalten, wenn der Befehl in einer While ist.
Hallo Tom,
im Grunde habe ich auch einen MPEG2-TS (von DVB).
Ich hatte gedacht, dass ein einfaches weiterleiten als UDP-Multicast möglich wäre.
Aber scheinbar gehen wohl zuviele Informationen verloren/durcheinander.
Ich hätte nicht gedacht, dass innerhalb eines kleinen Heimnetzwerkes soviele Daten durcheinander geraten.
Da mir die Zeit derzeit fehlt komplexere Routinen zu schreiben wie einen Clienten, der fehlende UDP Daten neu anfordert, werde ich mich erstmal mit VLC begnügen.
Danke für eure Tipps, haben mich aufjedenfall weitergebracht.
Unfug
Das der Rechner und das Netzwerk "fähig" sind, zeigt der Test mit VLC als UDP Streamserver.
nein. das zeigt nur, das die etwas richtig machen, was du falsch machst.
wenn du mir nicht glauben magst, kann ich dir nciht helfen.
????
@ujr:
Hab ich grad gemacht. Bin da noch nicht ganz durchgestiegen, aber ich glaube es entspricht dem was FZelle sagt. Die scheinen das irgendwie zu "komprimieren".
Hi Jack30lena,
ich habe jetzt testweise mal ein
Thread.Sleep(5);
eingefügt
multicastSender.Send(buffer, SocketFlags.None);
System.Threading.Thread.Sleep(5);
Die Artefakte werden weniger, aber es treten Bildfehler in Form von "Wiederholungen" auf.
Das der Rechner und das Netzwerk "fähig" sind, zeigt der Test mit VLC als UDP Streamserver.
Hallo Community,
Ich sitze an einem Problemchen und sehe den Wald vor lauter Bäumen nicht.
Folgendes einfaches Szenario:
Datei (xy.mpg) soll als Udp Multicast ins Netzwerk und zwar an die Multicast Adresse (224.0.0.42:1234) gesendet werden.
Jeder der Lust hat kann dann mittels VLC (udp://224.0.0.42:1234) sich diesen Stream angucken.
//Die xy.mpg Datei als Stream
FileStream file = new FileStream("xy.mpg",FileMode.Open);
//DER UDP SERVER
Socket multicastSender = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
multicastSender.Bind(new IPEndPoint(IPAddress.Any, 0));
multicastSender.Connect(new IPEndPoint(IPAddress.Parse("224.0.0.42"), 1234));
//ein paar zusätzliche Lokale Variablen
byte[] buffer = new byte[8000]; //Den Wert 8000 habe ich schon von 500 bis 60000 ersetzt. Keinerlei besserung.
int chunk = 0;
//Es folgt die Schleife, die für das Auslesen der Datei sowie das sofortige Senden zuständig ist
while (true)
{
//Der buffer wird nicht bei jedem Lesevorgang vollständig gefüllt, weshalb diese //If-Abfrage rein muss. Erst bei vollem Buffer, wird auch gesendet.
if (chunk < buffer.Length)
{
chunk += file.Read(buffer, chunk, buffer.Length - chunk);
}
else
{
chunk = 0;
multicastSender.Send(buffer,SocketFlags.None);
}
}
Problem ist, dass ich über VLC jede Menge Artefakte bekomme und auch abgeharkten Ton.
Mir ist bewusst, dass Udp kein verbindungsorientiertes Protokol ist und somit die Daten auch "durcheinander" ankommen können. Aber ich habe nicht ein Bild was ordentlich ist. Das kann doch nicht richtig sein oder?
Wieso das Ganze: Das Ganze hat einen rein "messtechnischen" Zweck. Ich benötige eine Code, der mir einen Stream (egal ob von einer Datei oder anderswo her) lokal ins Netzwerk als Mutlicast sendet.
Hat jemand eine Idee?r
P.S.: Der VLC als StreamServer und als Client funktioniert einwandfrei.
Man kann also Mithilfe VLC eine Datei als UDP Multicast streamen, was funktioniert. Ich brauche jedoch eine "eigene Lösung".
Hallo,
scheint ja in der Tat keinen echten Standard dann zu geben.
Also die Klasse in der diese Properties sind ist eine Geräteklasse und hat nichts mit einer GUI zu tun. Daher war der letzte Einwand von herbivore soweit korrekt.
talla, korrekter Einwand. Werde die Daten direkt aus dem Gerät auslesen.
Ich werde jetzt, auch wegen Übungszwecken die Methoden für Eigenschaften auch direkt in den set und get machen.
Danach werde ich ja sehen, ob ich damit besser klar komme als auszulagern.
Nachdem ich dein Beitrag gelesen habe, ist mir noch was eingefallen.
Und zwar kann m_Device.Write eine Exceptions werfen. (Beispielsweise wurde das Gerät vom Rechner abgezogen oder ist einfach kaputt).
Üblicherweise mache ich das mit
try{...
}catch (Exception error)
{
throw new Exception("irgendwas"+error.message);
}
In der Property würde es dann so aussehen:
set {
if (value)
{
m_Device.Write("EN");
}
else
{
try
{
m_Device.Write("DIS");
}
catch (Exception error)
{
throw new Exception("Konnte Output nicht deaktivieren" + error.Message);
}
}
this.m_OutputOn = value;
}
Wäre das im Sinne der .NET Convention?
Ich tendiere derzeit auch stark daran, dass ganze wieder in eine private Methode auszulagern. Würde mich aber auch damit zufrieden geben, sofern es dem Standard entspricht.
Hallo,
ich habe eine Frage zur Ästhetik.
Ich möchte derzeit einige Properties erstellen. Ein Beispiel wäre das hier:
public bool OutputOn
{
get { return m_OutputOn;}
set {
if (value)
{
m_Device.Write("EN");
}
else
{
m_Device.Write("DIS");
}
this.m_OutputOn = value;}
}
Ich führe eine kleine Methode aus. m_Device ist ein Gerät, was über eine Serielle Schnittstelle kommuniziert. Die Frage ist, ist dass korrekt so für Properties? Und was macht man, wenn man größere komplexe Ausführungen machen müsste, sobald ein Property geändert wurde? Soll man dann auf eine private Methode weisen oder alles in set { ... } programmieren, so dass man gar keine Methoden mehr benötigt?
Danke
Hi,
Ich habe auch nochmal ein Kollegen gefragt. Der bentutz VB.NET und meinte auch, dass es nicht geht. Ich saß nur ganz kurz vor Eclipse letzte Woche. Kann doch nicht sein, dass ich mich an diese Methode nur gewöhnt habe und die gar nicht in VS vorkommt.
So wie Eclipse (Java) war schon die richtige Richtung.
Ich bin grad echt paff, denn ich bin eigentlich zu 100% überzeugt gewesen, dass das VS auch kann.
Hallo,
ich habe derzeit ein Problemchen mit meiner IDE. Ich benutze
VS 2008 Professional V 9.0.30729.1 SP mit .NET Framework 3.5 SP1.
Heute wollte ich mal wieder etwas programmieren und diesmal werden mir diese netten Hilfen nicht mehr angeboten.
VS2008 unterstützt ansonsten den Entwickler, indem man bei möglichen Exceptions vorsorge treffen muss/kann, damit die Warnungen verschwinden.
also bei
File.Open("irgendwas")
würde VS eigentlich meckern und sagen, dass man zumindest Try and Catch einfügen sollte.
Das tut es nicht mehr. Er sagt ist alles Prima und meckert (keine Warnung) nicht, dass ich keine Fehlerbehandlung drin habe.
Wo schaltet man diese Funktion wieder ein? Danke schön.
Moin,
Bezüglich runterziehen: Ist das in VS so? Ich hatte noch im Kopf, dass man weiterhin im Eigenschaftsfenster die Tabs auswählen kann. Wenn man aber das Design ständig verschieben muss ist das natürlich nichts.
Jetzt mal ganz blöd:
Wieso das Tabcontrol nicht einfach soweit nach oben verschieben, bis die Reiter nicht mehr sichtbar sind? 😁
Datenbanksystem: Access 2003 (Office 2003)
Hallo mycsharp User,
nach langer Zeit brauch ich eure Erfahrung. Es geht darum, dass ich ein Access DB Filter bauen will.
Es ist eine gefüllte DB vorhanden. Über 100.000 Datensätze sind in der DB vorhanden und es werden täglich ~300 mehr. Eine Anzahl von Datensätzen soll nun mittels dem Filter herausgefiltert werden.
Ich habe mir auch schon einen Filter in Access zusammengeklickt, der auch funktioniert. Jedoch bin ich nicht sehr erfreut über die Einschränkungen, wenn man das mittels Access/VBA realisiert. Allein das erstellen von Charts oder einer angenehmen Oberfläche. Irgendwie werde ich mit VBA nicht warm.
Daher hatte ich gedacht C# zu verwenden.
Wie ist eure Erfahrung mit C# und Access?
Wie sollte man solch einen Filter in C# erstellen?
Sind Listboxen,Drop-Down Boxen dafür geeignet?
Einfach mal so bissel plaudern über Vor- Nachteile bezüglich C# und Access wäre gut.
Cucu
Ok. Ich habe ClickAndOnce doch verworfen, nachdem ich
K-Updater von EvilMM hier gefunden habe.
Link.
Ein Super Teil zum Aktualisieren.
Hallo,
ich teste derzeit ClickOnce und bin schon auf einige Hürden gestoßen.
Das größte war bisher: das mitsenden ganzer externer Ordner. Dies erfordert, dass jede einzelne Datei markiert und in VS als Inhalt deklariert wird.
Jetzt habe ich das Problem, dass das Programm während der Laufzeit Dateien in einen Ordner im Hauptordner erzeugt. Der Ordner selbst wird ebenfalls zur Laufzeit generiert. Bei einem Update wird dieser nicht mitgenommen.
Das heisst ClickOnce erzeugt bei jedem Update eine komplett neue Struktur der Anwendung. Was einerseits dazu führt, dass die erzeugten Daten weg sind und zusätzlich der ClickOnce Cache eine extreme Größe hat, da das Programm nicht klein ist.
Meine Frage: Gibt es eine Lösung, dass ClickOnce das alte Verzeichnis einfach überschreibt?
Sollte ich mich lieber nach einer Alternative umschauen? Wichtig wäre mir hauptsächlich die Aktualisierungsfunktion. Verteilen könnte ich auch über eine Setup Datei.
Vielen Dank.
Hallo,
vielen Dank.
Ich habe mir die Mühe gemacht und die *.csproj Datei geöffnet mit einem Editor. Dort habe ich gesehen, dass die Configuration für Release nicht vorhanden ist. Das Problem scheint an Blend2 zu liegen. Sobald ich mit Blend2 ein Projekt erstelle, kann ich es nicht "releasen", sondern nur debuggen.
Das Nachtragen hat den Fehler behoben.
Danke
Hallo,
es sind jetzt ein paar Stunden vergangen 😁 und habe direkt eine Frage zum "Releasen" von WPF Anwendungen.
Ich habe nun mittels Blend2 und VS2008 eine GUI erstellt und auch alles angepasst. Es funktioniert soweit alles einwandfrei. Problem habe ich nun, dass ich nur "Debuggen" kann. Also sprich, die EXE die erzeugt wird ist keine Release Datei.
Sobald ich Release in VS2008 auswähle wird der grüne Pfeil daneben ausgegraut und im Menu Erstellen bringt das anklicken nichts. Es geschieht nichts.
Meine Frage ist also iinzwischen. Wie krieg ich es hin das ich das Programm nun auch Releasen kann?
Danke.
Hallo,
vielen Dank erstmal für die Antworten.
Das Projekt wurde so programmiert, dass die GUI ganz zum Schluss kam.
Die GUI befindet sich in einem eigenen Namespace und wurde halt nur zum Schluß eingefügt, nachdem sämtliche Funktionen vorhanden und fertig waren.
Das ein oder andere wurde jedoch in die GUI Klasse geschrieben.
Also es wird bei einem Klick auf einen Button etwas noch umgewandelt, damit es gut nutzbar ist für die GUI.
Das erlernen von WPF hoffe ich fällt mir nicht ganz so schwer. Kentnisse in XML sind vorhanden und die WebCast von Microsoft für Microsoft Blend auch schon runtergeladen.
Aber dank euren Antworten bin ich zuversichtlich, dass das Ganze klappt. Wichtig wäre mir nur, dass ich das alte Form löschen kann und gegen das neue WPF tausche.
Gestartet wurde das Projekt zwar als "Windows Application" und somit wird in VS ja automatisch ein Form generiert, aber man kann das doch sicherlich dann trotzdem austauschen.
Was ich mich noch frage ist, dass ich mehrere Buttons, ListBoxen,Webbrowser auf der GUI habe. Wenn ich nun in Blend das alles neu erstelle, dann muss ich entsprechend die ganzen Event Methoden für die Buttons etc. neu schreiben. Na ich hoffe, dass das klappt.
Über weitere Webcast würde ich mich freuen. Oder Erfahrungen wie ihr ein altes Win.Form ersetzt habt.
Guten morgen,
ich wollte mal fragen ob olgendes schonmal jemand erledigt hat.
Es ist ein Projekt vorhanden, dessen GUI ein Window Form ist. Grafisch nicht das Beste und daher soll nun Blend eingesetzt werden. Ist es möglich und vor allendingen ohne weiteres möglich ein WPF in das Projekt hinzuzufügen? Kann man das alte Form komplett ersetzen? Wie geht ihr dabei vor(grob)?
Ich bedanke mich.
Das Ganze funktioniert, wenn Du es nicht direkt im Form_Load hast.
Habs grad getestet indem ich noch ein Button draufgeklatscht habe und wenn dieser gedrckt wird, wird
this.webBrowser1.Document.DocumentElement.InnerHtml = @"<html><head></head><body>mycsharp.de</body></html>";
ausgeführt. Klappt wunderbar.
Gruß
Hallo,
angenommen man hat ein Konsolenprogramm welches einen ständig verränderten Wert ausgeben soll. Jetzt möchte ich, daß die Konsole nicht
1
2
3
4
5, sondern jeweils die Zahl in der Konsole ersetzt. Also als Beispiel wäre da ein Downloadmanager, der anzeigt wieviel Speed (kb/s) man gerade hat.
Datei:test.rar Speed:3kb/s
Hier möchte ich dann nur die 3kb/s aktualisieren. Und nicht
Datei:test.rar Speed:3kb/s
Datei:test.rar Speed:2kb/s
Datei:test.rar Speed:3kb/s
stehen haben.
Danke
p.S.: Selbst würde ich das so machen, daß ich jedes mal die Konsole komplett lösche und einfach alles neu schreibe. Aber es muss auch anders gehen. Viele Programme (lame, wget ,...) können das auch 😁
Ok das klingt einleuchtend.
Mal sehen was ich heute noch dazu schaffe.
Hallo,
folgende Methode verursacht bei mir 100% (Pentium M 1.4GHz) volle CPU Auslastung:
//EinStream = Eine Datei kommt als Stream an.
//fileStream = Die Datei wird auf die Festplatte geschrieben.
while ((i = EinStream.ReadByte()) != -1)
{
fileStream.WriteByte((byte)i);
}
Ich vermute einfach mal stark, daß die HDD zu sehr in Anspruch genommen wird , da jedes einzelne byte nach und nach geschrieben wird. Welche "Möglichkeiten" hat man denn dabei? Erst immer 1MB in ein Array schreiben und dann auf die HDD schreiben? Oder lieg ich mit meiner Vermutung vielleicht komplett falsch?
Danke
Kurz nachdem ich hier gepostet habe, habe ich eine Antwort erhalten. Da liest wohl jemand mit 😉
Bei mir hat sich alles geregelt.
Hi,
ich habe heute die erste Zeitschrift erhalten. Es ist die aktuelle Ausgabe.
In der letzten Mail stand allerdings noch ein falscher Preis für das Abo drin. Ich habe auch schon 2 Emails versendet , bisher aber noch keine Antwort.
Scheinen wohl organisatorische Schwierigkeiten zu haben.
Heute ging der Rabattcode immer noch nicht.
Ich hab denen heute morgen auch schon eine Email geschrieben, wie man vorgehen sollte. Bisher leiderk eine Antwort.
Noch hab ich ja ein paar Tage bis das Jubiläumsabo ausläuft
So nochmal eine Antwort von mir selbst.
Ich habe es also geschafft mithilfe dieser stream.write() Methode Daten zu übergeben ohne das die Verbindung abgebrochen werden muss.
Problem was ich jetzt habe ist, daß ich eine Datei übertragen möchte.
Der Server überträgt die Datei Mithilfe von:
for (int i = _filestream.ReadByte(); i != -1; i = _filestream.ReadByte())
{
_stream.WriteByte((byte)i);
}
[color][PLATZHALTER][/COLOR]
_filestream.Close();
Der Client empfängt mittels:
i = _stream.Read(b, 0, b.Length);
while (i!= 0)
{
foreach (byte breit in b)
{
_filestream.WriteByte(breit);
}
i = _stream.Read(b, 0, b.Length);
}
_filestream.Close();
Von der Uneffizients, daß ich das alles byte Weise und nicht blockweise mache ist mal egal(das kann man ja schnell ändern). Worum es geht ist, daß der Client niemals ein i=0 erhält, da der Server niemals ein _stream.close() sendet, welche sin dein [PLATZHALTER] müsste. Aber dann ist der Stream weg und ich müsste eine komplett neue Verbindung aufbauen (also TcpClient...blablal).
Ist das denn korrekt so? Oder wie kann ich den Stream aufrechterhalten für weiter spätere Übertragungen?
Danke
UPDATE: Lösung unten
Guten morgen,
ich hätte da mal eine Frage bezüglich NetworkStreams.
Wie könnte man vom Server aus ein -1 senden, so daß der Client denkt, daß der Stream keine Daten mehr hat?
Folgende Sachlage:
Client:
schliefe1() //Die Schleife wartet auf Dateinamen.
schleife2() //2te Schleife wartet auf Datei.
Server:
schleife1() //sendet Dateinamen
schleife2() //sendet die eigentliche Datei
Das Problem: Schleife2 folgt direkt nach Schleife1, also muß ich am besten vom Server aus ein -1 senden (also der Stream hat keine Daten mehr), so daß der Client in die 2te schleife geht und dann der Server.
Danke.
UPDATE: Der Gedanke, es mittels STREAM.WRITE(buffer,0,buffer.length) zu machen hat auch nicht geklappt. Es wird kein "-1" gesendet.
__________________________________________________
Ich habe die Schleife1 in Client durch folgendes ersetzt:
byte[] b = new byte[256];
int n=_stream.Read(b, 0, b.Length);
String sData = Encoding.ASCII.GetString(b,0,n);
Der Rest kann so bleiben.
Gruß
Ja da hast Du recht.
Ich hab grad gesehen, daß man über "Verweise" sogar Projekte importieren kann.
Das ist eine feine Sache. Man kann die einzelnen Projekte "abschließen" und direkt verwenden ohne DLL daraus zu machen oder kopieren.
Danke nochmal
Ok vielen Dank.
Dachte es gibt vielleicht eine spezielles Feature von VS , daß man sowas machen könnte.
Aber ich werde es mal mit den DLLs probieren. Ich denke es hilft auch beim "sauberen" Programmieren. So kommt man dann nicht auf die dumme Idee ständig in die fertigen Klassen zu schreiben.
IDE: Visual Studio 2005 Prof.
Grüß Gott,
ich arbeite grad ein wenig an TCP (Server/Client) . Dabei fällt es mir deutlich leichter erstmal nur die Serverseite zu betrachten um dann hinterher noch in einem anderen Projekt die Clientseite zu programmieren.
Beide Seiten sind eigenständig lauffähig und nun möchte ich dise beiden Projekte gerne als eines zusammenfassen. Also eine schöne GUI basteln wo man sich Server oder Client aussuchen kann.
Kann ich mittels VS diese Projekte direkt zusammenführen?
Oder wie geht ihr da vor? Klassen einfach rüberkopieren?
Gruß