Grüß Gott an alle,
ich habe wieder mit dem XMega256A3 und dem Touch Display ein für mich unlösbares Problem.
Einerseits muss ich die Antwort vom Display mit einem Interrupt abfangen und auswerten,
und fallweise gleichzeitig im Pollingbetrieb die Koordinaten vom Touch von der gleiche Schnittstelle empfangen.
In Bascom wird das folgend gelöst:
Die Interrupt Routine für Acknowledge:
Rs232_data_int: Rs232_data = Inkey(#2)
If Touch = 0 Then
Select Case Rs232_data
Case &H06 :
Set Lcd_ack
Case &H15 :
End Select
Else
Set Lcd_ack
End If
Return
und die Routine für die Polling Abfrage:
Sub Ilcd_get_touch()
Touch = 1 'Touchdaten
Print #2 , Chr(&H6f) ; Chr(&H04) ; 'Touchstatus
Bitwait Lcd_ack , Set
Reset Lcd_ack
Bitwait Lcd_ack , Set
Reset Lcd_ack
Status_touch = Rs232_data
Bitwait Lcd_ack , Set
Reset Lcd_ack
Bitwait Lcd_ack , Set
Reset Lcd_ack
If Status_touch = 1 Or Status_touch = 3 Then
Print #2 , Chr(&H6f) ; Chr(&H05) ; 'Touch x,y
Bitwait Lcd_ack , Set
Reset Lcd_ack
X_touch = Rs232_data * 256
Bitwait Lcd_ack , Set
Reset Lcd_ack
X_touch = X_touch + Rs232_data
Bitwait Lcd_ack , Set
Reset Lcd_ack
Y_touch = Rs232_data * 256
Bitwait Lcd_ack , Set
Reset Lcd_ack
Y_touch = Y_touch + Rs232_data
Touch = 0
Reset Lcd_ack
Else
Y_touch = 65535 : X_touch = 65535
End If
End Sub
Ich hoffe Ihr könnt einen Hobbyprogrammierer und Neuling helfen. LG
ich habe wieder mit dem XMega256A3 und dem Touch Display ein für mich unlösbares Problem.
Einerseits muss ich die Antwort vom Display mit einem Interrupt abfangen und auswerten,
und fallweise gleichzeitig im Pollingbetrieb die Koordinaten vom Touch von der gleiche Schnittstelle empfangen.
In Bascom wird das folgend gelöst:
Die Interrupt Routine für Acknowledge:
Rs232_data_int: Rs232_data = Inkey(#2)
If Touch = 0 Then
Select Case Rs232_data
Case &H06 :
Set Lcd_ack
Case &H15 :
End Select
Else
Set Lcd_ack
End If
Return
und die Routine für die Polling Abfrage:
Sub Ilcd_get_touch()
Touch = 1 'Touchdaten
Print #2 , Chr(&H6f) ; Chr(&H04) ; 'Touchstatus
Bitwait Lcd_ack , Set
Reset Lcd_ack
Bitwait Lcd_ack , Set
Reset Lcd_ack
Status_touch = Rs232_data
Bitwait Lcd_ack , Set
Reset Lcd_ack
Bitwait Lcd_ack , Set
Reset Lcd_ack
If Status_touch = 1 Or Status_touch = 3 Then
Print #2 , Chr(&H6f) ; Chr(&H05) ; 'Touch x,y
Bitwait Lcd_ack , Set
Reset Lcd_ack
X_touch = Rs232_data * 256
Bitwait Lcd_ack , Set
Reset Lcd_ack
X_touch = X_touch + Rs232_data
Bitwait Lcd_ack , Set
Reset Lcd_ack
Y_touch = Rs232_data * 256
Bitwait Lcd_ack , Set
Reset Lcd_ack
Y_touch = Y_touch + Rs232_data
Touch = 0
Reset Lcd_ack
Else
Y_touch = 65535 : X_touch = 65535
End If
End Sub
Ich hoffe Ihr könnt einen Hobbyprogrammierer und Neuling helfen. LG