INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Erstellung C# List in LabVIEW



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

25.09.2015, 16:22
Beitrag #1

Svenni Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 227
Registriert seit: Mar 2005

7.1, 8.0, 8.2, 8.21, 8.5, 8.6, 2009, 2010, 2011, 2012, 2013, 2014
2000
DE

23843
Deutschland
Erstellung C# List in LabVIEW
Hallo zusammen,

ich hab evon C# leider keine Ahnung und nun habe ich folgendes Problem.

Ich hab eiene dll von einem Zulieferer bekommen, um Daten auf ein Gerät zu schreiben und Daten zu lesen.
Leider hat der Zulieferer keine Doku für die dll erstellt. Er hat mir dafür den Quellcode einer kleinen Anwendung geschickt, die er erstellt hat, um die dll zu testen.
Aus diesem Qeullcode habe ich nun auch fast alle Funktinen in LV nachgestellt und sie laufen.
Nun hänge ich bei der Erstellung einer Liste.

Der Quellcode sieht wie folgt aus:

Zitat:private void LoadXML(string _fileName)
{
string assemblyPath = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
string xmlString = File.ReadAllText(_fileName, Encoding.Default);

List<Klz.LanguageItemInput> languageList = new List<Klz.LanguageItemInput>(2);

Klz.LanguageItemInput inputItem = Klz.LanguageItemInput()
{
FontFile = assemblyPath + "\\" + "Latin1.fnt",
LangFile = assemblyPath + "\\" + "de-DE.lan",
PrinterConvFile = assemblyPath + "\\" + "iso8859cp437.bin",
Lang = "de-DE"
};

Klz.LanguageItemInput inputItem2 = new Klz.LanguageItemInput()
{
FontFile = assemblyPath + "\\" + "Latin1.fnt",
LangFile = assemblyPath + "\\" + "en-US.lan",
PrinterConvFile = assemblyPath + "\\" + "iso8859cp437.bin",
Lang = "en-US"
};

Klz.LanguageItemInput inputItem3 = new Klz.LanguageItemInput()
{
FontFile = assemblyPath + "\\" + "ru-RU.fnt",
LangFile = assemblyPath + "\\" + "ru-RU.lan",
PrinterConvFile = assemblyPath + "\\" + "iso8859cp437.bin",
Lang = "ru-RU"
};

languageList.Add(inputItem);
languageList.Add(inputItem2);
languageList.Add(inputItem3);

m_UploadProjectInput = new Klz.UploadProjectInput()
{
LogoFile = assemblyPath + "\\" + "MLogo.logo",
//XMLDoc = m_myXDocument.ToString(),

XmlString = xmlString,
Languages = languageList
};

Dies habe ich versucht in LV umzusetzen. Daraus ist Vi aus dem Anhang enstenden.

   

Nun bekomme ich eine Fehlerhmeldung bei der Methode "LIst1[[Klz.LanguageItemInput..]. Screenshot im Anhang.

   

Kann mir jemand helfen?

Danke!!!

Schöne Grüße
Sven
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
28.09.2015, 09:50 (Dieser Beitrag wurde zuletzt bearbeitet: 28.09.2015 10:08 von rolfk.)
Beitrag #2

rolfk Offline
LVF-Guru
*****


Beiträge: 2.306
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: Erstellung C# List in LabVIEW
(25.09.2015 16:22 )Svenni schrieb:  Hallo zusammen,

ich hab evon C# leider keine Ahnung und nun habe ich folgendes Problem.

Ich hab eiene dll von einem Zulieferer bekommen, um Daten auf ein Gerät zu schreiben und Daten zu lesen.
Leider hat der Zulieferer keine Doku für die dll erstellt. Er hat mir dafür den Quellcode einer kleinen Anwendung geschickt, die er erstellt hat, um die dll zu testen.
Aus diesem Qeullcode habe ich nun auch fast alle Funktinen in LV nachgestellt und sie laufen.
Nun hänge ich bei der Erstellung einer Liste.

Der Quellcode sieht wie folgt aus:

Zitat:private void LoadXML(string _fileName)
{
string assemblyPath = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
string xmlString = File.ReadAllText(_fileName, Encoding.Default);

List<Klz.LanguageItemInput> languageList = new List<Klz.LanguageItemInput>(2);

Klz.LanguageItemInput inputItem = new Klz.LanguageItemInput()
{
FontFile = assemblyPath + "\\" + "Latin1.fnt",
LangFile = assemblyPath + "\\" + "de-DE.lan",
PrinterConvFile = assemblyPath + "\\" + "iso8859cp437.bin",
Lang = "de-DE"
};

Klz.LanguageItemInput inputItem2 = new Klz.LanguageItemInput()
{
FontFile = assemblyPath + "\\" + "Latin1.fnt",
LangFile = assemblyPath + "\\" + "en-US.lan",
PrinterConvFile = assemblyPath + "\\" + "iso8859cp437.bin",
Lang = "en-US"
};

Klz.LanguageItemInput inputItem3 = new Klz.LanguageItemInput()
{
FontFile = assemblyPath + "\\" + "ru-RU.fnt",
LangFile = assemblyPath + "\\" + "ru-RU.lan",
PrinterConvFile = assemblyPath + "\\" + "iso8859cp437.bin",
Lang = "ru-RU"
};

languageList.Add(inputItem);
languageList.Add(inputItem2);
languageList.Add(inputItem3);

m_UploadProjectInput = new Klz.UploadProjectInput()
{
LogoFile = assemblyPath + "\\" + "MLogo.logo",
//XMLDoc = m_myXDocument.ToString(),

XmlString = xmlString,
Languages = languageList
};

Meiner Meinung nach fehlt im C# Code mindestens das rot geschriebene Wort. Und das hat eigentlich auch schon beinahe direkt mit einem Deiner Probleme zu tun. Du solltest den Konstruktor für LanguageItemInput ebenfalls in die Loop reinnehmen. Das ist nämlich das LabVIEW Equivalent für das "new" in C#. Du erzeugst jetzt ein Objekt und gibst das jeweils an die Add Methode aber Du solltest jeweils ein neues Objekt instantieren.

Das Hauptproblem wo Deine Fehlermeldung herkommt ist dass Du an die Add Methode ein nicht initialisiertes Objekt gibst (Deine .Net Konstante vor der Loop). Dort müsstest Du ebenfalls einen Konstruktor haben für die LanguageList. Leider ist es aber so dass LabVIEW keine generieken Datentypen unterstützt (List<something>). Wenn Deine .Net Assembly keinen expliziten Datentypen dafür bereitstellt gibt es nur zwei Möglichkeiten um es trotzdem zum Laufen zu bringen.

1) Du schreibst eine Wrapper Assembly die diesen Datentypen zur Verfügung stellt (oder bringst den Lieferanten dazu das in seine Library hineinzubauen).
2) Mit .Net Reflection kann man auch einen Datentypen generieren. Das ganze ist zwar relativ kompliziert zu begreifen und kaum zu erinnern aber mittels Vorbild einigermaßen zu tun.

Eine Suche hier auf dem Forum hätte Dich auch zu diesem Beitrag bringen können.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Wie kann ich eine .NET List erstellen? Stevie85 4 6.552 04.04.2013 10:09
Letzter Beitrag: Stevie85

Gehe zu: