
SpamBot
-
Gesamte Inhalte
12 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Beiträge von SpamBot
-
-
:upps
Gute Lösung, war bei mir genau das selbe Problem,... hab das allerdings als Feature verkaufen können, ist 'sicherer so' ;D
-
-
Ich würde mit Vektoren arbeiten, den Mittelpunkt der Strecken finden und da dann die Bezeichung hinschreiben.
mittelPunktx = 0.5 * (x1 + x2);
mittelPunkty = 0.5 * (y1 + y2);
oder so ähnlich
-
hmm...
mit reinem c# weiss ich nich wie das geht, aber die win api gibts ja auch noch
SetCursorPos
WindowFromPoint
SendMessage, handle,WM_LBUTTONDOWN,...
weiss nimmer genau, einfach mal googeln ;D
-
Meiner Meinung nach ist .Net code meistens schneller als gleichwertiger Java code. Kommt aber wie gesagt auf die Anwendung an.
.Net und Java kompilieren beide zu Bytecode, aber .Net hat den Vorteil, dass man sich den Dialekt den man schreibt (c#, vb, boo ...) aussuchen kann.
Klarer Vorteil von Java ist die Plattformvielfalt. Für .Net gibts zwar Mono aber warum .Net unter Linux programmieren?
Zusätzlich hat .Net (oder besser c#) einige Eigenheiten. Z.b. kann ein Interface hier keine statischen Mitglieder haben (geht in Java)
-
ftStatus = Mach_Irgendwas(bla);
In dem Fall führt ja Mach_Irgendwas code innerhalb der FTDI-Klasse aus
Hm... also ich hab jedenfalls noch keine Messagebox gesehn. Egal welche Funktion ausgeführt wurde.
Und wie machst du das mit den Timings?
Ich krieg keine Zeitmessung < 10 ms hin. Ist das überhaupt möglich? Ich weiss ja nämlich garnicht wann die Daten in den Buffer geschrieben werden :?
-
Prizipiell ja, aber keine Ahnung ob die Random Klasse wirklich zufällige Zahlen liefert
_Wirklich_ zufällige Zahlen sind ja nicht so einfach zu erzeugen...
-
public void sicker() { p = (double)trackBar1.Value / 100; double rand = randomiza.NextDouble(); int initCount = points.Count; for (int i=0;i< initCount ;i++ ) { if (rand < p) { points[i].X--; points[i].Y++; } rand = randomiza.NextDouble(); if (rand < p) { points[i].X++; points[i].Y++; } if(points[i].Y > panel1.Height) finish(); } }
Als Anhaltspunkt, wird so wahrscheinlich nicht out oft the box funktionieren, solls auch garnicht. Aber die Richtung stimmt.
mfg
-
Diese beiden Dinge habe ich mit je einer Combobox gelöst.
Jedoch ist mir bewusst das nicht jede Bank den gleichen Standort hat. Deshalb sollte sich das ändern.
Ok. Schau dir mal die SelectedIndexChanged Ereignisse an.
So, nun zu Frage zwei. Ich möchte, das jeder Standort, einen anderen Zinssatz hat.Ich empfehle eine kleine XML Datenbank.
Ich möchte, das wenn man z.B auf die TextBox einen Doppelklick macht, das sich da ein zweites Fenster öffnet in dem man die Zahlen auswählen kann.. also sozusagen ein Windows Taschenrechner mit einbeziehen in das Programm. Wie ginge das dann?Eine neue Form erstellen mit entsprechenden Buttons welche z.b. beim schließen ein Event rausjagt dass deine Daten enthält.
(google suche nach "vb.net events" oder so)
mfg
-
So kann man USB und Serial auf einmal erschlagen.
Benutzt du auch die Serial Port Klasse? Kannst evtl. mal ein kleines Schnipsel posten?
Zu deinem Problem:
Also ich denke da hast du was falsch verstanden, die DLL bietet lediglich keine Exceptions, aber wirft dir natürlich auch keine Messageboxen ins Gesicht
Die Fehlerbehandlung erfolgt über so ne Art Statusenum:
ftStatus = Mach_Irgendwas(bla); if ( ftStatus != FTDI.FT_STATUS.FT_OK ) { ; } else { Debug.Log("alles klar"); }
mfg
-
hi,
So wie ich das sehe, ist das kein 'regulärer' .NET event sondern eher ein 'Thread event' (keine Ahnung wie das richtig heist...).
Ich habe das folgendermaßen gelöst:
private AutoResetEvent recvDataEvent; private BackgroundWorker worker; void open() { COM.OpenByIndex(smartBoxIndex); COM.SetBaudRate(115200); COM.SetDataCharacteristics(FTDI.FT_DATA_BITS.FT_BITS_8,FTDI.FT_STOP_BITS.FT_STOP_BITS_1,FTDI.FT_PARITY.FT_PARITY_NONE); COM.SetFlowControl(FTDI.FT_FLOW_CONTROL.FT_FLOW_NONE,0,0); recvDataEvent = new AutoResetEvent(false); COM.SetEventNotification(FTDI.FT_EVENTS.FT_EVENT_RXCHAR,recvDataEvent); worker = new BackgroundWorker(); worker.DoWork += new DoWorkEventHandler(worker_DoWork); worker.RunWorkerAsync(); } void worker_DoWork(object sender, DoWorkEventArgs e) { uint bytesToRead = 0; uint bytesRead = 0; while (true) { // wait until event is fired this.recvDataEvent.WaitOne(); // try to recieve data now if(FTDI.FT_STATUS.FT_OK == this.COM.GetRxBytesAvailable(ref bytesToRead)) { byte[] buffer = new byte[bytesToRead]; if(FTDI.FT_STATUS.FT_OK == this.COM.Read(buffer,bytesToRead,ref bytesRead)) { if (bytesToRead != bytesRead) { Log("Data length error!"); } foreach (byte b in buffer) { recvBuffer.Enqueue(; } Log(ByteArrayToHexString(buffer)); } } } } [/code]
evtl nicht der eleganteste Weg, aber immerhin klappt es
Eine Frage am Rande:
Dein Projekt scheint so ähnlich zu sein wie das, was ich im Moment bearbeite. Nur habe ich ein Problem:
Gibt es eine Möglichkeit die Zeit zu bestimmen an der die Daten im Puffer ankommen (Abweichung max. 0,5 ms) ? (bezogen auf die SerialPort klasse meine ich jetzt, da ich auch beides implementiere)
Ein Event für FTDI - USB programmieren
in .NET
Geschrieben
DateTime ist leider zu ungenau,... habs jetzt mit eine Tickcount für jedes empfangene byte versucht.
Hat aber immernoch das gleiche problem, allerdings wesentlich seltener.
Messgenauigkeit liegt nun etwa im 3-5 ms bereich.
mfg