openv / openv

:fire: OpenV Wiki
https://github.com/openv/openv/wiki
250 stars 28 forks source link

Gratulation #46

Open WikiSpaxe opened 7 years ago

WikiSpaxe commented 7 years ago

Hallo Terminator

Da hast du dich ja mächtig investiert!

Also, ich hab das gleich mal ausprobiert (ohne irgend welche Hinweise zu lesen, habe ich rasch herausgefunden, dass die Einstellungen auf dem zweiten Tab sind)

Leider kann ich noch keine Daten sehen, es gib immer wieder die Fehlermeldung "Achtung keine Daten vorhanden.Die Eingabezeichenfolge hat das falsche Format." Beim jedem Aufzeichnungsintervall kommt auch eine entsprechende Exception "System.FormatException: Die Eingabezeichenfolge hat das falsche Format". Der Callstack zeigt, dass im Main_Form.t1_Tick() die Methode StringToNumber versagt.

Aus meiner Erfahrung würde ich behaupten, dass es an den Ländereinstellungen liegt (resp. dass das Programm davon abhängig ist).

Bei meinen Einstellungen Deutsch(Schweiz) gilt folgendes Zahlenformat "123'456'789.00" also ein Punkt als Dezimalpunkt. Bei Deutschland ist der Dezimalpunkt ein Komma. Meistens wird der Punkt verwendet, deshalb solltest du den Code so anpassen, dass dein Programm unabhängig von den Einstellungen funktioniert (wenn du damit Probleme hast, kann ich auch mal in den Sourcecode schauen).

Ein erster Wunsch zum Programm hätte ich noch: es wäre schön, wenn ich nicht nach jedem Start das COM-Port neu einstellen müsste ;-)

Noch ein Hinweis zu deinem zip:

Übrigens ein Dump von 0..1000 hat funktioniert - sonst habe ich noch nichts getestet.

Gruss und geniesse auch die Festtage ;-) Hanspeter (der Schweizer)

WikiSpaxe commented 7 years ago

Hallo Hanspeter, zu deinem ersten Wunsch kann ich dir folgendes schreiben: den Port bekommst Du mit den Button oben links (mit der Disk) gespeichert, ebenso wie Veränderungen im Grid an den Datenpunkten. Ansonsten kannst Du auch die vito_Config.xml editieren.

Nun ja, bei mir funktioniert es mit Excel2003. Liegt wohl wirklich am Zahlenformat. Ich werde mal schauen, dass ich eine Checkbox für Komma oder Punkt als Dezimalzeichen einbaue.

Chris alias TerminatorIII

WikiSpaxe commented 7 years ago

Hallo Chris Das mit dem Speichern hat nicht funktioniert, weil vito_Config.xml nicht geschrieben wurde, da zuvor ein Fehler wegen dem Zahlenformat aufgetreten ist.

Nun habe ich in vito_DP.xml alle "," durch "." ersetzt (betrifft nur die "precision" Werte) und die bestehenden csv-Dateien gelöscht (respektive in der aktuellen csv-Datei ebenso "," durch "." ersetzt). So hat das Programm mit meiner Ländereinstellung funktioniert.

Dann habe ich folgenden Code eingebaut, damit das Programm immer die US-amerikanischen Einstellungen verwendet. Folgende Zeile in Main_Form() vor InitializeComponent(); hinzugefügt:

Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");

Damit werden alle Zahlen mit "." als Dezimalpunkt dargestellt auch wenn ich die Ländereinstellung auf Deutsch(Deutschland) umstelle.

Etwas unschön ist bei dieser Konstellation, dass man in Excel das Zahlenformat umstellen muss, damit csv-Dateien richtig interpretiert werden, wenn das Zahlenformat nicht mit den Benutzereinstellungen übereinstimmt.

Es gibt aber noch ein Problem mit der Darstellung des Datums in den csv-Dateien. Weil hier der Wochentag gespeichert wird, ist das Format sprachabhängig, was für eine Datenerfassung nicht geeignet ist. Ich würde die Datum-Zeit-Information auf jeden Fall sprachunabhängig speichern, am besten ohne Wochentag.

Die Daten-Speicherung sollte nicht pro (Kalender-)Woche eine Datei erzeugen. Das ist ebenso Benutzer spezifisch (es gibt min. drei Arten wie die erste Woche im Jahr definiert werden kann). Dein Programm hat bereits den heutigen Tag (25.12.2010) als ersten Tag der KW01 2012 interpretiert. Also ich würde entweder pro Tag eine Datei anlegen und pro Messung die Zeit abspeichern oder pro Monat eine Datei und das komplette Datum pro Messung.

Wenn sich das Thema gerade um die "Zeit" dreht, kannst du dir mal überlegen, ob die Grafik mit den Sommerzeit-Umstellungen klarkommt. Im Frühling gibt es eine Lücke und im Herbst eine Überlappung und das Programm sollte deswegen nicht crashen.

Von mir aus muss es nicht unbedingt "en-US" sein, aber das Programm sollte ungedingt unabhängig von Benutzer- oder System-Einstellungen sein.

So können auch andere Anwender Spass daran haben.

Gruss Hanspeter

WikiSpaxe commented 7 years ago

Hallo Hanspeter, ich werde mir mal heute Gedanken zu dem Thema machen. Aber vorweg: ich habe immer noch die 52KW im Programm. Ich melde mich heute Abend noch mal.

WikiSpaxe commented 7 years ago

So ich habe mal eine neue Version. Der Button mit dem Speichern müßte es jetzt wieder bei den Schnittstellenparametern machen. Ferner habe ich einige Länderspezifische Umwandlungen eingebaut. Wenn du die Altdaten sehen willst lade über Seite "Statistik" die Datei "2011-KW43_data_CH.csv".

Schau doch mal bitte ob die Datei 2011-KW52_data.csv erzeugt wird. Die Daten müßten nun mit einem Punkt als Dezimaltrennzeichen gespeichert werden. Gruß Chris

WikiSpaxe commented 7 years ago

Hallo Terminator

Glückwunsch zu dieser gelungenen Windows Version!

Ich habe die Version gleich mal eingespielt und verprobt. Wie kann ich Dir mein Feedback am besten zukommen lassen?

eMail wäre gut, da ich Screens mitschicken möchte :)

Additiv kann ich Dir anbieten, die geplante 300 Implementierung zu testen.

Hab neben einer KW200 auch eine 300er Anlage im Zugriff ;)

Gutes Gelingen

Grüße Solarix

WikiSpaxe commented 7 years ago

Wenn Du meinst, dass sie gelungen ist - danke. Feedback bitte hier. Ich habe nicht vor das 300er Protokoll zu implementieren, da ich es nicht debuggen kann mangels Hardware. Wenn ich es implementieren soll, brauchte ich schon die Hardware, da ich die Daten ebenfalls mit einem Tool von Saleae mitschreiben kann und Fehler viel schneller finde. Und nur dann ist es effektiv. So nach Try und Error kostet es zuviel Zeit. Aber wenn Du dich versuchen willst, unterstütze ich dich gerne und zeige die die Stelle wo Du dich einklinken mußt. Wie gesagt: Das Entwicklertool C# Express gibt es von MS kostenlos ( so die Werbung). Der Source-Code liegt bei, also ran an die Tastatur ;-)

Chris

WikiSpaxe commented 7 years ago

Hallo Terminator und KingAragon u.a.

benutze seit 2010 das Programm V-CONTROL an der Anlage: VITODENS 333-F Typ WS3C mit der Fernbedienung Vitotrol 300.

Leider ist die Raumtemperaturanzeige nicht korrekt, bisher konnte mir niemand weiterhelfen, siehe Thread: http://openv.wikispaces.com/message/view/v-control/31443343

Unter folgendem Link habe ich Bilder (Screenshots) zur Veranschaulichung hinterlegt: https://www.wuala.com/wittiupload/VITODENS?key=txmTHpoogvoJ

Das Programm Viess-Data würde ich auch gerne nutzen, leider benutzt meine Anlage das Protokoll 300 und die Adressen VScotHO1 (20CB). Bin zwar kein Programmierer, aber würde gerne unter euer Anleitung mithelfen beim Implementieren des 300-Protokolls,VCS-Express ist schon installiert.

Gruß Bernd

WikiSpaxe commented 7 years ago

Hallo Bernd, ich habe gerade mal eine Anfrage gestellt, wie man die CRC berechnet. Ist mir nicht ganz klar. Die Implementierung dürfte dann kaum ein Problem sein. Nur testen kann ich es nicht. Und da wird es langatmig... Hat nicht einer noch so ein Teil als Ersatz im Keller liegen, dass er mir für 2 Wochen leihen kann?

Chris

WikiSpaxe commented 7 years ago

Hallo Leute

nur zur Erinnerung, damit ihr nicht unnötigen Aufwand in das 300er Protokoll investiert: alle Steuerungen, die das 300er Protokoll unterstützten, funktionieren auch mit dem KW Protokoll.

Wenn man das KW Protokoll noch optimiert (anstatt auf 05 zu warten, kann auch nach jeder empfangenen Antwort gesendet werden), dann ist der Datendurchsatz beim KW ebenso gut wie beim 300er Protokoll. Hanspeter

WikiSpaxe commented 7 years ago

Hallo HansPeter, meine Software ist bereits optimiert. Ich warte nur einmal auf 05, danach ziehe ich alle Datenpunkte in einem Rutsch. Der Datendurchsatz ist beim KW besser, da für die selbe Information weniger übertragen werden muss ;-)

@ Bernd warum läuft dann bei dir das KW nicht? Chris

WikiSpaxe commented 7 years ago

Hi Chris und auch Hanspeter,

eigentlich glaube ich ja auch, dass VScotHO1 (20CB) das Protokoll 300 und KW benutzen kann. Mit meinem aktuellen COM-Port, der in v-control funtioniert, bekomme ich aber anscheinend keine Verbindung bei Viess-Data, siehe Screenshot in meiner Ablage: https://www.wuala.com/wittiupload/VITODENS?key=txmTHpoogvoJ

Habe ich alle Dateien in Viess-Data/bin, fehlt da nicht eine VScotHO1.xml oder so?

Gruß Bernd

WikiSpaxe commented 7 years ago

Guten Morgen, lese mal bitte den Thread http://openv.wikispaces.com/message/view/Viess-Data/50357534 durch und sage mir die Werte in My_Serial_Input_Buffer[] und M_S_I_B_Z, wenn Du nach case = 1 einen Breakpoint setzt in Zeile 746: for (z = 0; z < Device_ID_Array.Count(); z++).

Chris

WikiSpaxe commented 7 years ago

Hi Chris,

habe mal versucht mit einem Breakpoint in Zeile 746 was auszulesen. Ich bin mit C# leider nicht vertraut und weiss nicht ob ich das so richtig gemacht habe. Schau doch bitte mal in meine Ablage:

https://www.wuala.com/wittiupload/VITODENS?key=txmTHpoogvoJ vielleicht kannst Du damit was anfangen.

Es kommt nach DeBUG-Start das Fenster, wo ich dann mit dem Pfeil die Abfrage starte, oben links sehe ich dann "verbinde", das bleibt dann auch so, das gleiche auch ohne Debugging.

Im unteren Teil von C#, unter "Lokal" stehen ein paar Werte, eine 2 bei M_S_I_B_Z

Gruß Bernd

WikiSpaxe commented 7 years ago

Tja Leute, ihr müsst schon Zeit investieren und einfach mal ein bisschen rumspielen. Du kannst, wenn Du auf der Variable mit dem Mauszeiger stehst den Wert sehen, sobald das Programm gestoppt hat. Weiterhin kannst Du ich glaube mit F11 den Einzelschrittmodus machen, dann stepst Du Zeile für Zeile weiter. Ich brauche die ersten beiden Werte für das Array My_Serial_Input_Buffer[] Chris

WikiSpaxe commented 7 years ago

Hi Chris,

habe mit Deiner Hilfe folgendes ausgelesen:

My_Serial_Output_Buffer[4] [0] [1] [2] [3] [4] 1 247 0 248 2

My_Serial_Input_Buffer [0] [0] [1]
32 203 also 20CB für "VScotHO1"

M_S_I_B_Z = 2

Weiter durchsteppen kann ich erst Morgen.

Gruß Bernd

WikiSpaxe commented 7 years ago

Hi, ich habe ein Array zu klein bitte den Wert von 36 auf 50 ändern Zeile 76,77,78:

 public static string[] Device_ID_Array = new String[50];
    public static string[] Device_name_Array = new String[50];
    public static string[] Device_protocol_Array = new String[50];

und dann schau mal nach Breakpoint Zeile 751 this.toolStripLabel2.BackColor = Color.LightGreen; kommt er dahin? Chris

WikiSpaxe commented 7 years ago

Hi Chris,

erst einmal Danke für Deine Hilfe.

Habe die Arrays auf Wert 50 geändert und BP auf 751: Im Display geht die Anzeige dann auf "Verbunden mit ..." und die LED wird grün! siehe wieder meine Ablage https://www.wuala.com/wittiupload/VITODENS/Viess-Data/?key=txmTHpoogvoJ

Wenn ich dann weiter durchsteppe landet das Programm in Zeile 1075-1082 und bleibt da.

Habe das Programm auch mal on DEBUGGEN gestartet, das Display ist dann gleich, endet aber mit einem "Unhandled UI-Thread-Error" und weist auf Zeile 836 hin, siehe Ablage.

Gruß Bernd

WikiSpaxe commented 7 years ago

Also mimm bitte mal die Version aus dem Internet, und ändere NUR die Arraygröße in den 3 Zeilen. Danach ohne Breakponts starten. Du kann nicht so gut debuggen wenn Du im Hintergrund mit Zeichen und damit verbundenen Intterrupts totgeschmissen wirst. Die kaskadieren sich und das Programm schmiert ab.

Chris

WikiSpaxe commented 7 years ago

Hi Chris,

hatte schon selber weitergeforscht und mich an den Thread mit der Zeile 836 erinnert. Nachdem ich die SysTime-Adresse auf 0AE0 geändert hatte, lief das Programm normal durch. Habe die besagte Adresse danach auf 088E eingestellt, weil ich diesen Wert irgendwo in einem VScotHO1-Beitrag gefunden habe. Nun kann man das Datum und die Uhrzeit unter Einstellungen auslesen, allerdings im HEX-Feld als Normaltext.

Leider kann ich z.Z nicht weitermachen, ich habe zu neuen Updates "JA" gesagt, der CP ist erst bei 2 von 10, kann länger dauern. Melde mich dann wieder.

Gruß Bernd

WikiSpaxe commented 7 years ago

Na dann wir es ja bei Dir auch laufern :) Ich muss mal schauen, ob ich das Datum/Uhrzeit fehlertolleranter mache. Kannst dich ja noch mal melden.

Chris

WikiSpaxe commented 7 years ago

Hallo Chris und Hanspeter,

habe mal ein paar Snapshots gemacht vom bisherigen Display und den Einstellungen. Nachdem die Daten eigelaufen waren, hab ich sie dann in eine WORD-DOC gepackt. https://www.wuala.com/wittiupload/VITODENS?key=txmTHpoogvoJ

Man kann hier besser erkennen, an welchen Adressen welcher Wert steht. Im Display sieht man noch rote Felder, die aber grün sein sollten (z.B. Brenner EIN etc.). Wie kann man denn die Adressen von VScotHO1 anpassen? Habe als Vergleich ein Display von V-CONTROL zur fast gleichen Zeit beigefügt.

@Hanspeter: Wie sehen denn Deine Daten mit VScotHO1 in diesem Programm aus?

Gruß Bernd

WikiSpaxe commented 7 years ago

Hallo Bernd

ich habe keine VScotHO1 Steuerung, kann die Frage also nicht beantworten. Die Liste mit den VScotHO1 Adressen habe ich aufgrund der Analyse der Daten in der Viessmann Vitosoft zusammengestellt. Hanspeter

WikiSpaxe commented 7 years ago

Hallo Bernd, programmtechnisch mußt Du 2 Stellen pro Datenpunkt ändern.

  1. Zeile 1327 folgend: switch (mydataGridView1["addr", e.RowIndex].Value.ToString()) * Welche Adresse? Hier wird die Datenpunktadresse eingetragen und was dann passieren soll, wenn sich der Wert ändert!
  2. Die Änderung in der Vito_dp.xml immer unter xxxx.

Wenn Du die Adressen nicht hast, mache es z.T. wie ich und erstelle 2 Dumps wenn der Ofen an ist und wenn er aus ist. Dann bekommst Du z.B. das "Einschaltbyte" heraus und veränderte Temperaturwerte. Ich habe auch durch die offizielle Bedienungsanleitung vom Hersteller folgendes herausgefunden Beispiel: A7:0 | Ohne Mischersparfunktion | A7:1 bla bla Durch vergleichen der Speicherinhalte nach dem Umstellen der Mischersparfunktion habe ich herausgefunden das es sich hier um die Adresse 0x37A7 handelt. So habe ich die "offizielle Dokumentation" der Datenpunkte sogar vom Hersteller herleiten können ;-) Ansonsten ist jetzt Pionierarbeit von deiner Seite gefragt. Chris