Moin moin!
Ich schreiben gerade einem program für die temperaturkontrolle, und steuerung von lüfter und heizer mit einem µC und habe rieeesen probleme mit der Komunikation zwischen µC un VBA!
Durch den getportnames() befehl kriege ich die Ports, und er verbindet sich nur wenn 1 port ausgewählt wurde und schickt einen befehlt für die identifikation an dem mikrocontroller, der das richtige Antwort schicken muss sonst schiesst er den port wieder und gibt einen msgbox "falsche port" an dem user.
Das program mit BASCOM ist sehr simpel und sieht so aus:
--------------------------------------------------------------------------------------------------------------------
If Usr.rxc = 1 Then 'Wenn Byte empfangen...
Befehl = Udr 'Byte aus UART auslesen
Select Case Befehl
Case "1" 'Anwort für die Verbindungserstellung
Print "20"
Case "2" 'Temperatur Abfrage
Volt = Getadc(2)
Temperatur_ganzzahl = Volt * 5
Temperatur_kommazahl = Temperatur_ganzzahl Mod 10
Temperatur_ganzzahl = Temperatur_ganzzahl / 10
Waitms 50
Print Temperatur_ganzzahl ; "." ; Temperatur_kommazahl
--------------------------------------------------------------------------------------------------------------------
Das program kriegt schon temperatur und speichert das in einem Access datei. Jeztt wollte ich eine Identifikationsvorgang für den µC hinzufügen was nicht erlauben würde dass der computer sich mit dem falschen COMPort verbindet. Mein Program in VBA sieht so aus:
--------------------------------------------------------------------------------------------------------------------
'Button: "Hardwareverbindung"
Private Sub Verbindung_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Verbindung.Click
'Verbindungsaufbau zwischen VB und MC wird gestartet
If Port.Text = "" Then
Port.BackColor = Color.Red
MsgBox("Keine Verbindung zwischen PC und Mikrocontroller! Bitte COM Port auswählen.")
Else
SerialPort1.PortName = Port.Text 'Ausgewählter Wert im ComboBox "port"
SerialPort1.Open() 'COM Port wird geöffnet
Port.BackColor = Color.White
Timer2.Enabled = True
End If
If SerialPort1.IsOpen Then
Port.BackColor = Color.White
SerialPort1.Write(1)
Antwort = SerialPort1.ReadExisting()
If Antwort = "20" Then 'wenn antwort vom mc=20, richtiger com port ist ausgewählt...
Timer2.Enabled = True 'Timer für die Temperaturabfrage wir gestartet
Verbindung.Enabled = False 'dann button "verbindung" nicht verfügbar...
Else
SerialPort1.Close() '...sonst wird der com port geschlossen
MsgBox("Bitte richtige COM Port auswählen")
End If
End If
--------------------------------------------------------------------------------------------------------------------
Irgendwie kriegt er das nicht hin, sich mit dem µC zu verbinden. Ich merke dass er erst den antwort kriegt wenn der Timer für die temperaturabfrage gestartet wurde! Hat jemand ein tipp für mich???=)
Danke im vorraus!
|