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 Kommunikation 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:
[line] [/line]
Das program kriegt schon temperatur und speichert das in einem Access datei. Jezt 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:
[line] [/line]
[line] [/line]
Irgendwie kriegt er das nicht hin, sich mit dem µC zu verbinden. Hab schon versucht in dem BASCOM Programm die "20" als Ingteger, String, Char zu deklarieren aber VBA erkennt keine von denen!
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!
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 Kommunikation 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:
VB.NET-Quellcode
- 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
[line] [/line]
Das program kriegt schon temperatur und speichert das in einem Access datei. Jezt 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:
[line] [/line]
VB.NET-Quellcode
- '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 '...if 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
- End Sub
[line] [/line]
Irgendwie kriegt er das nicht hin, sich mit dem µC zu verbinden. Hab schon versucht in dem BASCOM Programm die "20" als Ingteger, String, Char zu deklarieren aber VBA erkennt keine von denen!
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!