# Übertragung mit RS232



## Ilona85 (30. Mai 2005)

Hallo!

Ich möchte mit meinem Programm Zeichen empfangen, die von einem Microcontroller  gesendet werden! Dazu hab ich eine Funktion geschrieben, die alles, was in den MSComm-Input geschrieben wird, in eine Variable var1 schreibt. Je nachdem, was vom µC gesendet wird, soll das Programm entsprechend reagieren.... Soll ich nun die Variable var1 als String deklarieren, bzw. die Abfragen immer mit If CStr(var1(0)) = ...... machen und dann die Stelle mit jeder Abfrage erhöhen, also beim nächsten If: If Cstr(var1(1)) = .....  Hat wer eine ahnung, wie man da vorgehen soll? Für Hinweise bin ich äußerst dankbar, ich muss nämlich morgen ein Projekt abgeben, bei dem ich das unbedingt wissen muss..... Liebe Grüße, ilona


----------



## Ilona85 (30. Mai 2005)

Also, ich hab jetzt folgende Funktion geschrieben: 

```
Public Sub ReadFromComPort()
	Dim Buffer As String
 
	Form1.MSComm1.PortOpen = True
	Do While Form1.MSComm1.InBufferCount > 0
		DoEvents
	Loop
	
	
	Buffer = Form1.MSComm1.Input
	
	If Left(Buffer, 1) = "1" Then
		Load Form2
		Form2.Show
		Form2.Caption = "Bitte triff eine Auswahl"
		Unload Form1
		Form1.Hide
	End If
	
End Sub
```
 
Dabei bin ich mir nicht sicher, wie ich aus dem Buffer auslese...Wenn ein Zeichen ausgelesen wurde, rückt dann das nächste Zeichen immer um eine Stelle nach Oder kann ich das überhaupt so machen


----------



## Shakie (30. Mai 2005)

Das Comm-Control hat ein sogenanntes "OnComm"-Ereignis, darin kannst du auf empfangene Daten reagieren:

```
Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = comEvReceive Then Var1=Me.MSComm1.Input
End Sub
```
"Var1" würde ich als String definieren, da ja sowieso nur String-Zeichen ankommen können (nämlich die Ascii-Zeichen/Werte 0 bis 255)


----------



## Ilona85 (31. Mai 2005)

aha, das hilft mir schon mal weiter, .... nur wie kann ich dann die Zeichen einzeln auslesen


----------



## Shakie (1. Juni 2005)

Schau dir mal diese Seite oder diese Seite an. Da ist alles rund ums Comm-Control beschrieben. Wenn du auf jedes empfangene Zeichen einzeln reagieren möchtest, also wenn du willst dass jedesmal, wenn ein Zeichen ankommt, das OnComm-Ereignis ausgelöst wird, musst du die Eigenschaft RThreshold auf 1 setzen *oder* halt mittels Stringfunktionen Mid, Instr, usw... die einzelnen Zeichen herausfiltern.


----------



## Ilona85 (1. Juni 2005)

Vielen, vielen Dank... Ich hab's jetzt schlussendlich irgendwie hinbekommen, mein Projekt ist abgegeben, werd also hier voraussichtlich nie wieder nervige Fragen stellen  Lg, Ilona


----------

