Visual Basic Forum

Visual Basic Forum
für VB6 und VB.NET Programmierer
 
RegistrierenRegistrieren  LoginLogin

Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB.NET] Fragen - Antworten
Autor
Nachricht
Kickman12
Newbie
Newbie

Anmeldedatum: 02.07.2010
Beiträge: 1

[VB 2010] Mehrkreistemperaturregler Feller Engineering MCS
Verfasst am: 02.07.2010, 12:29

Hallo,
bin noch relativ am Anfang bei der Visual Basic-Programmierung, also erst seit 4 Wochen. Habe vorner nur Java programmiert, deshalb verzeiht mir etwaige Anfängerfehler =)

Es geht um ein Schulprojekt, bei dem über den Mehrkreistemperaturregler MCS von Feller Engineering das Auftreten von Fehlern über die Twitter-API gesendet wird und dass sich über Twitter der entsprechende Regler steuern lässt.
Von uns dreien im Team ist nun meine erste Aufgabe, die Werte und Fehler auf einer interaktiven Benutzeroberfläche auszugeben, dies ist mein Teil des Prototyps für das fertige Programm.

Das Senden von Befehlen habe ich über die SendSerialData()-Methode von MSDN realisiert, was auch funktioniert, habe dazu eine Methode für die Prüfsummenberechnung geschrieben. Dies klappt auch, aber wenn ich darauf die Empfangsmethode verwende, die laut meinem Projektbetreuer in der Firma auch funktionieren müsste, kommt keine Antwort vom Regler, habe dazu ebenfalls eine Methode aus dem MSDN verwendet, ReceiveSerialData(), und sie nach meinen Anforderungen umfunktioniert, wobei das Telegramm des Reglers zeichenweise gelesen werden soll. Auch die Übertragungsdaten für die serielle Verbindung stimmen.
Wenn nach dem Senden eines Telegramms (was auch geschehen muss damit der Regler antwortet) die Empfangsmethode aufgerufen wird, hakt es an der ReadChar()-Methode, die kein Zeichen vom Regler empfängt, sieht man in der schrittweisen Ausführung. Dabei reagiert die TimeoutException, welche diesen Fall abfängt.
Habt ihr noch eine Idee, wie man dieses Problem lösen konnte ? Habe schon etliche Foren, Google und das MSDN, was mir bisher eine sehr große Hilfe war, durchkämmt, aber bisher hat nichts wirklich geholfen. Habe mal meinen Programmcode beigefügt.

Code:
Public Class frm_reglerkommunikation

   Private Sub cmd_senden_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_senden.Click
       Dim antwort As String
       Dim befehl As String
       befehl = txt_befehl.Text
       Call SendSerialData(befehl & CheckSum(befehl) & ChrW(3))
       antwort = ReceiveSerialData()
       txt_antwort.Text = antwort
   End Sub
   Sub SendSerialData(ByVal data As String)
       Using com1 As IO.Ports.SerialPort = My.Computer.Ports.OpenSerialPort("COM1", 9600, IO.Ports.Parity.None, 8, IO.Ports.StopBits.One)
           com1.WriteLine(data)
           com1.Close()
       End Using
   End Sub
   Function ReceiveSerialData() As String
       Dim returnStr As String = ""
       Dim Incoming As Integer
       Dim IncomingChar As Char

       Dim com1 As IO.Ports.SerialPort = Nothing
       Try
           com1 = My.Computer.Ports.OpenSerialPort("COM1", 9600, IO.Ports.Parity.None, 8, IO.Ports.StopBits.One)
           com1.ReadTimeout = 200
           Do
               Incoming = com1.ReadChar()
               IncomingChar = ChrW(Incoming)
               returnStr = returnStr & IncomingChar
           Loop Until ((IncomingChar = ChrW(3)) Or (IncomingChar = ChrW(6)) Or (IncomingChar = ChrW(21)))
       Catch ex As TimeoutException
           returnStr = "Zeitüberschreitung"
       Finally
           If com1 IsNot Nothing Then com1.Close()
       End Try
       com1.Close()

       Return returnStr

   End Function
   Function CheckSum(ByVal str As String) As String
       Dim chr As Char
       Dim intSum As Integer
       'String in CharArray Umwandeln
       Dim chrArray As Char() = str.ToCharArray()
       'Jedes Zeichen in ASCII-Wert umwandeln und zu Summe addieren
       For Each chr In chrArray
           intSum = intSum + Strings.Asc(chr)
       Next chr
       'Summe in Hex-String Wandeln und letzten 2 Stellen zurückgeben
       Return Strings.Right(Hex(intSum), 2)
   End Function

End Class

_________________
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB.NET] Fragen - Antworten

Tags: 2010, serialport, visual, hex, engineering

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge [suche] Tuturials winsock & daten senden 869 09.06.2011, 12:19
Keine neuen Beiträge [Video] *.dll & *.ocx Installer 2433 06.03.2008, 20:19
Keine neuen Beiträge ListView speichern & laden 1243 05.08.2008, 12:32
Keine neuen Beiträge Registry & Co Fragen 1101 03.05.2007, 09:57
Keine neuen Beiträge Listbox speichern & laden 2047 22.03.2007, 20:25
 



[ Time: 0.1296s ][ Queries: 81 (0.0229s) ][ GZIP on - Debug on ]