Forum: PC Hard- und Software 3,5" TFT an PC anschließen


von grundschüler (Gast)


Angehängte Dateien:

Lesenswert?

hallo,

ich möchte meinen thin-client-media-PC mit einem kleinen (Raspberry-) 
LCD ausstatten. Das Teil soll im Prinzip wie ein normales Radio 
funktionieren und die jeweils relevanten Parameter auf einem kleinen LCD 
anzeigen.

Wie kann der PC das LCD ansteuern? Grafikkarte mit VGA/DVI-Anschluss 
wird direkt nicht gehen?
Also einen Arm oder AVR als Controller und Signale per USB oder Com an 
den Controller?

Gibts dafür brauchbaren Code oder muss ich das selbst zusammenstoppeln? 
Müsste es eigentlich ja aus dem Raspberry-Pi-Bereich geben.

Danke für jeden Hinweis.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Möglicherweise bringt Dir ja das hier schon was:

https://www.heise.de/ct/artikel/Maeusekino-290316.html

von Marcus W. (marcusaw)


Lesenswert?

Oder einfach per SPI. Nicht super von den zu erreichenden FPS, aber 
"good enough" für das meiste.

http://www.ebay.de/itm/152289941365
https://youtu.be/QwUiBNCmBho?t=725
EDIT: angeblich isses sogar schon im Raspbian Images direkt drinnen, 
habs aber noch nicht probiert.

: Bearbeitet durch User
von grundschüler (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> Möglicherweise bringt Dir ja das hier schon was:

Das ist in etwa das, was ich suche. Leider vom Aufbau her nicht ganz 
einfach. usb-to-usart-Adapter an AVR/ARM. Wie das auf mcu-Seite 
funktioniert ist mir relativ klar. Jetzt bräuchte ich code für die 
Auswertung per vb.net.


Marcus W. schrieb:
> Oder einfach per SPI.

Wenn der PC einen Spi-Ausgang hätte. Problem ist ja die Schnittstelle.

von grundschüler (Gast)


Lesenswert?

Habe jetzt diesen ms-Empfangscode gefunden. Wie wird diese Funktion in 
ein VB.net-Programm eingebunden? Gibt es beim PC eine Art Interrupt, der 
die Funktion starten kann oder muss die Funktion gepollt werden? Wenn 
ja, Aufruf per Timer? in welchem zeitlichen Abstand?
1
    Function ReceiveSerialData() As String
2
        ' Receive strings from a serial port.
3
        Dim returnStr As String = ""
4
5
        Dim com1 As IO.Ports.SerialPort = Nothing
6
        Try
7
            com1 = My.Computer.Ports.OpenSerialPort("COM5")
8
            com1.ReadTimeout = 10000
9
            Do
10
                Dim Incoming As String = com1.ReadLine()
11
                If Incoming Is Nothing Then
12
                    Exit Do
13
                Else
14
                    returnStr &= Incoming & vbCrLf
15
                End If
16
            Loop
17
        Catch ex As TimeoutException
18
            returnStr = "Error: Serial Port read timed out."
19
        Finally
20
            If com1 IsNot Nothing Then com1.Close()
21
        End Try
22
23
        Return returnStr
    End Function

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Wozu brauchst Du eine serielle Empfangsroutine, wenn Du ein Display an 
einen PC anschließen willst?

von grundschüler (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> Empfangsroutine

wenn ich einen Arm/AVR für das LCD anschließe, kommt da gleich ein 
ir-empfänger drauf. Die ir-Daten sollen an den PC weitergegeben werden. 
Vielleicht auch noch Taster z.B. als Radio-Stationstasten, die unbedingt 
ausgeführt werden.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

grundschüler schrieb:
> kommt da gleich ein ir-empfänger drauf. Die ir-Daten sollen an den PC
> weitergegeben werden.

LIRC. Ist fertig entwickelt, und Du musst Dir keinen Kopf drum machen.

Wenn Tasten, dann USB-HID.

von grundschüler (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> LIRC. Ist fertig entwickelt, und Du musst Dir keinen Kopf drum machen.

Den Datenaustausch per Uart muss ich eh hinbekommen. ich habe 20 
code-Zeilen eigenen IR-Code, der zuverlässig Funktioniert und über den 
ich mir auch keinen Kopf mehr machen muss. Ich werde mir winlirc aber 
mal ansehen, wenn der bestellte usb-ir-Empfänger da ist.

Probleme habe ich mit dem Uart-Empfang auf dem mcu:
1
v u32 ct_wr_in_rx;
2
v u32 ct_rd_from_rx;
3
v u8 zlx;
4
5
6
ISR(USART_RX_vect)
7
{
8
    led1_tog;
9
10
if(ct_rd_from_rx==ct_wr_in_rx){
11
ct_rd_from_rx=0;
12
ct_wr_in_rx=0;
13
}
14
15
16
    rxBuffer[rxWritePos] = UDR0;
17
    
18
//nur zum testen:    lg(1+zlx++,10);li(rxWritePos);lw("/");li(rxBuffer[rxWritePos]);lw("/");
19
    if(zlx==3)zlx=0;
20
    
21
    rxWritePos++;
22
    ct_wr_in_rx++;
23
    if(rxWritePos == RX_BUFFER_SIZE)rxWritePos=0;
24
    rxBuffer[rxWritePos] ='/0';
25
    stringRxFlag = 1;
26
    
27
}

Ich sende 'a','b','c' und erhalte 13,98,99. 98+99 stimmen. 13 ist eine 
Zeilenschaltung. 'a' wird geschluckt. Ist das normal? also immer ein 
Byte zusätzlich senden?

Für den rx-buffer hätte ich gerne ausgereiften fertigen Code, da ich den 
nicht selber machen will. Kannst du mir da weiterhelfen? Über google 
schwer zu finden.

von Frank K. (fchk)


Lesenswert?

grundschüler schrieb:

> ich möchte meinen thin-client-media-PC mit einem kleinen (Raspberry-)
> LCD ausstatten. Das Teil soll im Prinzip wie ein normales Radio
> funktionieren und die jeweils relevanten Parameter auf einem kleinen LCD
> anzeigen.

Vergiss das kleine Raspberry-Display. Es gibt einfachere und bessere 
Lösungen.

Z.B. ebay # 252813067357. 10.4" TFT-Display mit VGA-Anschluss. Klemmst 
Du an und funktioniert, und das ohne eine Zeile Code.

Oder ebay # 112332939968. 7" Display mit VGA und HDMI-Anschluss. Auch 
Plug&Play. Da steht zwar Raspberry bei, aber solange da HDMI oder VGA 
als Eingang vorhanden ist, geht das auch am PC.

Oder ebay # 142152447283. 5" Display mit HDMI.

fchk

von grundschüler (Gast)


Lesenswert?

Frank K. schrieb:
> Es gibt einfachere und bessere Lösungen.

Hab ich mir angeschaut. ich könnte auch einen alten 17"er + Tastatur + 
Maus anschließen und hätte dann einen vollwertigen pc. Die 
Aufgabenstellung ist aber halt anders. Außerdem finde ich den Anschluss 
einer mcu an einen PC als i/o-Schnittstelle für Sensoren, Relais, 
Tasten, Kleindisplays ausbaufähig. Im Prinzip ein Kleincomputer wie 
Raspberry pi nur mit vollwertigem xp.




grundschüler schrieb:
> Ist das normal?

Habe mir jetzt das uart-Tutorial angeschaut. Offenbar müssen stop-und 
startbits rausgefiltert werden. Suche dafür immer noch guten fertigen 
code.

von grundschüler (Gast)


Lesenswert?

Der Datenaustausch funktioniert jetzt in beide Richtung. Allerdings nur 
per 2Byte Teilstrings:
1
   Private Sub btnSend_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
2
        Dim str As String
3
        For i = 0 To Len(txtTransmit.Text) Step 2 'string in jeweis 2byte zerlegen
4
            str = Mid(txtTransmit.Text, i + 1, 2)
5
            System.Threading.Thread.Sleep(1) ' ms warten
6
            SerialPort1.Write("x" & str & vbCr) 'The text contained in the txtText will be sent to the serial port as ascii
7
8
        Next
9
10
        'SerialPort1.Write("x" & txtTransmit.Text & vbCr) 'The text contained in the txtText will be sent to the serial port as ascii
11
       'plus the carriage return (Enter Key) the carriage return can be ommitted if the other end does not need it
12
13
    End Sub

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.