PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Variable senden über RS232 Atmega8515L STK500



Wasi
22.10.2005, 16:57
Hallo,

ich möchte als Anfänger eine Variable über die RS232 schicken
um diese Variable dann mit VisualBasic auszulesen.

Ich nutze BascomAVR und den STK500 KIT von Atmel.

Wenn ich den schalter drücke (SW0) soll die Variable versendet werden.

Ich hab mal was angefangen, aber ob das so passt weiß ich nicht, da ich
nicht weiß wie ich das Prüfen soll.




$regfile = "8515def.dat"
$crystal = 3200000

Ddrb = &B00000001 'setz Pin 0-7 von PortB
Ddrd = &B00000000 'setz Pin 0-7 von PortD zurück

Dim Meinevariable As Byte

Meinevariable = "12,12"

Do

If Pind.0 = 1 Then
Open "comd.1:9600,8,n,1" For Output As Byte
Print Meinevariable 'abfrage von Pin 0
Reset Portb.0
Close Meinevariable 'setz Pin 0 zurück
Else
Set Portb.0 'setz Pin 0
End If

Loop


und in Visual Basic 6 wird das ganze dann so empfangen:



Dim werte As Byte

Select Case MSComm1.CommEvent
Case comEvSend ' sende puffer jetzt leer (hier braucht nichts getan zu werden)
Case comEvReceive ' es wurden daten empfangen
werte = MSComm1.Input

If werte <> "" Then
Text1.Text = Text1.Text & werte & vbCrLf
End If
End Select


Leider empfange ich garnichts :-(

Vielleicht kann mir da ja einer Weiterhelfen?

Wasi...

hrei
22.10.2005, 17:36
Hallo,

Bitte nicht böse sein, aber in Deinem Programm stimmt fast keine Zeile. Es macht den Eindruck, als hättest Du wahllos etwas zusammengeschrieben, das optisch entfernte Ähnlichkeit mit einem Programm hat.
Bitte knöpfe Dir doch mal eines der Beispielprogramme vor, die mit Bascom geliefert werden. Nutze zunächst mal ein Terminalprogramm, um die gesendeten Zeichen zu empfangen.

Dann beschäftige Dich insbesondere mit Variablentypen und deren Dimensionierung und verändere das Beispielprogramm schrittweise nach eigenen Vorstellungen.

Grüße
Henrik

Wasi
22.10.2005, 17:48
Hallo,

Bitte nicht böse sein, aber in Deinem Programm stimmt fast keine Zeile. Es macht den Eindruck, als hättest Du wahllos etwas zusammengeschrieben, das optisch entfernte Ähnlichkeit mit einem Programm hat.


Bin ich nicht.




Bitte knöpfe Dir doch mal eines der Beispielprogramme vor, die mit Bascom geliefert werden. Nutze zunächst mal ein Terminalprogramm, um die gesendeten Zeichen zu empfangen.

Vielleicht kannst du mir noch sagen welches das Terminalprogramm ist?



Dann beschäftige Dich insbesondere mit Variablentypen und deren Dimensionierung und verändere das Beispielprogramm schrittweise nach eigenen Vorstellungen.


Genau so hab ich mir das Vorgestellt!

hrei
22.10.2005, 17:59
Hallo,


[quote]Vielleicht kannst du mir noch sagen welches das Terminalprogramm ist?


Hyperterminal ist z.B. Bei Windows dabei. Falls noch nicht installiert einfach nachinstallieren.

In Hyperteminal dann natürlich die gleichen Prameter einstellen, wie in Deinem Testprogramm.

Wenn dann das erste

Print "Hello World" geklappt hat, kann es weiter gehen.

Grüße
Henrik

Wasi
24.10.2005, 18:42
Hallo Henrik,

hab das mit der Übertragung hinbekommen, war nur die einstellung
für die Hardware falsch ](*,) , auch an meinen Zwei scripts hab ich noch
gearbeitet.

Es geht voran ;).

Sendescript:


'################################################# #############
'Wird sw0 gedrückt wird übertragen und im VB Programm Werte.exe
'empfangen!
'################################################# #############

$regfile = "8515def.dat"


$baud = 9600
$crystal = 3686400

Ddrb = &B00000001 'LED0 leuchtet wenn SW0 gedrückt wird
Ddra = &B00000000 'setz Pin 0-7 von PortD zurück

Dim Wert1 As String * 5
Dim Wert2 As String * 5
Dim Wert3 As String * 5
Dim Wert4 As String * 5
Dim Wert5 As String * 5
Dim Wert6 As String * 5
Dim Wert7 As String * 5
Dim Wert8 As String * 5
Dim Wert9 As String * 5
Dim Wert10 As String * 5
Dim Wert11 As String * 5
Dim Wert12 As String * 5

Wert1 = "1"
Wert2 = "2"
Wert3 = "3"
Wert4 = "4"
Wert5 = "5"
Wert6 = "6"
Wert7 = "7"
Wert8 = "8"
Wert9 = "9"
Wert10 = "10"
Wert11 = "11"
Wert12 = "12,01"

Do
If Pina.0 = 0 Then 'abfrage von Pin 0
Reset Portb.0 'setz Pin 0 zurück
Wait 1

Print Wert1
Print Wert2
Print Wert3
Print Wert4
Print Wert5
Print Wert6
Print Wert7
Print Wert8
Print Wert9
Print Wert10
Print Wert11
Print Wert12

Else

Set Portb.0 'setz Pin 0

End If
Loop
End 'Ende der Abfrage

Empfangsscript:


Private Sub MSComm1_OnComm()

Dim werte As String

Select Case MSComm1.CommEvent
Case comEvSend ' sende puffer jetzt leer (hier braucht nichts getan zu werden)
Case comEvReceive ' es wurden daten empfangen
werte = MSComm1.Input

If werte <> "" Then
Text1.Text = Text1.Text & werte
End If
End Select

End Sub


Das ist sicherlich noch ausbaufähig, aber für den Anfang bin ich mal zufrieden.

Ich sende was und es kommt was an :-({|=