MODDING-FAQ FORUM

LCDs und -Software => LCDs Allgemein => Thema gestartet von: Mr.Vercetti am Juni 22, 2009, 15:30:29



Titel: LCD Ansteuerung
Beitrag von: Mr.Vercetti am Juni 22, 2009, 15:30:29
Ich mach gerade in der Schule mit einem Freund ein Projekt und zwar eine Software um LCD´s anzusteuern.
Das ganze in C#
Jetzt würde ich gerne auch das USB-Low-Cost Interface ansteuern.

Das Problem ist das ich nicht weiß wie ich die USB-LCD.dll in C# umsetzte.
Kann mir vll jemand dabei helfen?


Titel: Re: LCD Ansteuerung
Beitrag von: hackspider am Juni 22, 2009, 16:22:59
Hi,

http://sourceforge.net/projects/libusbdotnet/

damit kannst du auf den USB-Port zugreifen, allerdings müsste man dann die Methoden der USB-DLL neu implementieren.

Besser ist aber glaube ich wenn du die Methoden der USB-LCD.dll mittels DLLImport läds so wie hier:
http://msdn.microsoft.com/de-de/library/cc431203.aspx

Gruß hackspider


Titel: Re: LCD Ansteuerung
Beitrag von: Mr.Vercetti am Juni 22, 2009, 22:13:22
ich habs versucht zu importieren aber es kommt dieser fehler:
"Das DllImport-Attribut ist für diesen Deklarationstyp ungültig. Es ist nur für method-Deklarationen gültig."
Was muss da genau hin?


Titel: Re: LCD Ansteuerung
Beitrag von: hackspider am Juni 22, 2009, 23:03:56
Hi,

hatte grad en paar Probleme um das nachzuvollziehen (x64 x86 Problematik).

Aber nachdem ich mir eine x64 USB-LCD.dll kompiliert hatte ging das ohne Probleme:
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace DLLImport
{
    class Program
    {
        [DllImport("USB_LCD.dll")]
        private static extern short USB_LCD_Connect();


        static void Main(string[] args)
        {
            int x = USB_LCD_Connect();
            Console.WriteLine(x.ToString());
            Console.ReadKey();
        }
    }
}


Gruß hackspider


Titel: Re: LCD Ansteuerung
Beitrag von: Mr.Vercetti am Juni 23, 2009, 08:17:59
thx jetzt gehts, habs ausserhalb der Klasse gehabt deshalb ging es nicht.

Jetzt noch ne frage zu den einzellnen Methoden.

Das ist klar.
short _stdcall USB_LCD_Connect (void)

Was muss hie genau übergeben werden?
short _stdcall USB_LCD_Init
und
short _stdcall USB_LCD_Command
und
short _stdcall USB_LCD_Data

was macht die variable short LCD genau?

Und ich hab diese Problem
Der Typ USB_Test.Form1 der Assembly USB_Test, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null konnte nicht geladen werden, da die Methode USB_LCD_Data keine Implementierung (keine RVA) hat.

Sorry raffs ncoh net so ganz (will ich aber  ;D ;D )




Titel: Re: LCD Ansteuerung
Beitrag von: hackspider am Juni 23, 2009, 18:49:41
Hi,

erstmal zu deiner Frage wegen dem LCD Parameter, das steht doch ziehmlich deutlich in der Readme datei drinn:

Code:
The argument "LCD" represents the controller-number;
For one-controller-LCDs it can be set to 0 or 1.

Es gibt nur wenige LCDs die mehr als einen Controller haben, es gab mal ein 4x27 CLCD bei Pollin, bei dem obere und untere Hälfte getrennt angesteuert wurden. Aber ansonsten tauchen 2 Controller nur bei sehr großen (4x40) LCDs auf. --> Kannste für "normale" LCDs auf 0 setzten.

So jetzt mal zu den Parametern der Init Funktion:
Um das wirklich zu verstehen solltest du dir Seite 5 (Control and Display Command) und Seite 7 (Initializing by Instruction) die von Peter Fleury (http://www.reichelt.de/?;ACTION=7;LA=6;OPEN=0;INDEX=0;FILENAME=A500%252FLCD164A%2523DIS.pdf;SID=28xUM27awQARwAAEYV1gsa5c7a564c10e0275164a1de8cfd17271]dieses PDFs[/url] mal genauer anschauen.

Kurz zusammengefasst:

lines = 1 Zeiliges oder Mehrzeiliges LCD (mit N im PDF gekennzeichnet)
font = 5x7 Zeichensatz (F im PDF)
increase = afair ob der Curser von Hand oder automatisch erhöht wird (I/D im PDF)
shift = shift off/on (S im PDF)

mit C_on und B_on kann man den Den Cursor und das Blinking de/aktivieren (DISPLAY ON/OFF Command)

mit D_shift und R_Shift werden die Bits S/C und R/L im SHIFT Command gesetzt.

um diese ganzen Settings zu verstehen, würde ich dir dringest empfehlen die Datenblätter genauer zu studieren, dann verstehst du auch was LCD_Command und LCD_Data macht.
Wenn du allerdings, das ganze nur benutzen möchtest, würde ich dir Vorschlagen mal nachzuschauen was die fertigen Libraries (z.B. [url=http://homepage.hispeed.ch/peterfleury/avr-software.html)) an Attributen übergeben.

Was den Fehler angeht, den du bekommst: scheint so als wäre da irgendwas bei der Definition/Aufruf der USB_LCD_Data Funktion schief gegangen.

Gruß hackspider


Titel: Re: LCD Ansteuerung
Beitrag von: Mr.Vercetti am Juni 23, 2009, 20:18:43
thx
dann geh ich mal ans lesen


© 2001-2022 MODDING-FAQ FORUM | SMF
Alle Rechte vorbehalten.