Start

Experimente

Grundlagen

Produkte

- eDIP240-7
-- Demo  
-- Bascom 1  
-- Bascom 2  
-- Bascom 3  
-- Bascom 4  

Neues

Impressum

eDIP 240-7 Bascom: Touch-Felder



Zwei aktive Schaltflächen

Das eDIP240-7 ist mit einem Touch-Panel ausgestattet, das komplett unter der Kontrolle des Displaycontrollers steht. Der Programmierer kann Schaltflächen festlegen, die mit einem Rahmen und einen Test angezeigt werden.
Wenn ein Anwender diese aktive Fläche mit dem Finger oder einem Zeigestift berührt, wird eine Nachricht generiert, auf die ein Programm reagieren kann.

Mit dem AT-Kommando erzeugt man eine Schaltfläche. Als Parameter folgen die XY-Koordinaten für die aktive Fläche, ein Tastencode, ein Stoppcode und der gewünschte Text zur Beschriftung der Taste. Im Beispiel Edip2.bas werden zwei Tasten mit der Beschriftung „+1“ und „-1“ gebildet. Ihnen sind die Tastencodes 121 und 122 zugeordnet. Genau diese Bytes werden später empfangen, wenn jemand auf die entsprechenden Tasten drückt. Hier soll ein Zählerstand in der Variablen Count  entsprechend erhöht und verkleinert werden, um ihn dann mit dem ZL-Kommando anzuzeigen.


'--------------------------------------------------------------
' eDIP240-7
' ATMEGA644P, 11,0592 MHz
' I2C-Display
' Edip2.bas
'--------------------------------------------------------------

$regfile = "m644Pdef.dat"
$crystal = 11059200
$hwstack = 64
$swstack = 64
$framesize = 64

Dim Dat As Byte
Dim Sbuf As Byte
Dim Rbuf As Byte
Dim Bcc As Byte
Dim Touchcode As Byte
Dim Endcode As Byte
Dim C As String * 1
Dim N As Integer
Dim Buffer As String * 24

Dim Count As Integer

Declare Sub Write_edip
Declare Sub Read_edip
Declare Sub Buffer_edip



Buffer = Chr(27) + "DL" + Chr(13) 'clear
Write_edip
'Touch button at 10,10;60,30, Touchcode 121, Endcode = 250
Buffer = Chr(27) + "AT" + Chr(10) + Chr(10) + Chr(60) + Chr(30)
+ Chr(121) + Chr(250) + "+ 1" + Chr(13)
Write_edip
'Touch button at 70,10;120,30, Touchcode 122, Endcode = 250
Buffer = Chr(27) + "AT" + Chr(70) + Chr(10) + Chr(120) + Chr(30)
+ Chr(122) + Chr(250) + "- 1" + Chr(13)
Write_edip
Buffer = Chr(27) + "ZF" + Chr(2) + Chr(13) '2 = FONT6x8
Write_edip
Buffer = Chr(27) + "ZL" + Chr(100) + Chr(60) + "eDIP240-7" + Chr(13)
Write_edip


Do
Read_edip
If Touchcode = 121 Then Count = Count + 1
If Touchcode = 122 Then Count = Count - 1
Buffer = Chr(27) + "ZL" + Chr(180) + Chr(15) + Str(count)
+ " " + Chr(13)
Write_edip
Waitms 300
Loop




Sub Buffer_edip
I2cstart
I2cwbyte Slave
Dat = 18 'DC2
I2cwbyte Dat
N = 1 '1 Byte
Bcc = 18 + N
I2cwbyte N
'Waitms 1
C = "I"
Dat = Asc(c)
Bcc = Bcc + Dat
I2cwbyte Dat '"I"
I2cwbyte Bcc
I2cstop
Waitms 1
I2cstart
I2cwbyte Slaverd
I2crbyte Dat , Ack '06=ACK
I2crbyte Dat , Ack '18=DC2
I2crbyte Dat , Ack '2=2 Bytes
I2crbyte Sbuf , Ack 'Send Buffer
I2crbyte Rbuf , Ack 'Receive Buffer
I2crbyte Dat , Nack 'BCC
I2cstop
Waitms 1
End Sub


Sub Read_edip
Touchcode = 0
Buffer_edip
If Sbuf > 0 Then
I2cstart
I2cwbyte Slave
Dat = 18 'DC2
I2cwbyte Dat
N = 1 '1 Byte
Bcc = 18 + N
I2cwbyte N
C = "S"
Dat = Asc(c)
Bcc = Bcc + Dat
I2cwbyte Dat '"I"
I2cwbyte Bcc
I2cstop
I2cstart
I2cwbyte Slaverd
I2crbyte Dat , Ack '06=ACK
I2crbyte Dat , Ack '17=DC1
I2crbyte Dat , Ack '4...
I2crbyte Dat , Ack 'bufferdata
I2crbyte Dat , Ack 'bufferdata
I2crbyte Dat , Ack 'bufferdata
I2crbyte Dat , Ack 'bufferdata
If Dat > 100 Then Touchcode = Dat 'Touchcode > 100
I2crbyte Dat , Nack 'BCC
I2cstop
End If
End Sub

End
Download  Edip2.zip

Die entscheidende Sub zum Auslesen eines eventuell vorhandenen Tastencodes ist Read_edip. Am Anfang wird über die Sub Buffer_edip abgefragt, wie viele Zeichen zum Abholen bereitstehen. Nur wenn der Display-Buffer gefüllt ist, wird er ausgelesen. An der siebten Stelle findet man gesuchten Tastencode.  Die globale Variable Touchcode liefert diese Information an das Hauptprogramm.


weiter...