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
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.
|
|