VisualBasic & C++ & PowerBasic - Forum

Visual Basic
--- Tipps + Tricks / Tutorials ---
>> Controls & DLLs

springe zur ersten ungelesenem Nachricht. Seiten in diesem Thread: 1
  [VB 2010] Mehrkreistemperaturregler
    #35386 - 15:36 02/07/2010
Kickman12
Junior Member



Reged: 15:34
Beitrag: 1
Ort: Obertshausen

[VB 2010] Mehrkreistemperaturregler Feller Engineering MCS Steuerung über RS485-Schnittstelle Empfangsmethode

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.

Danke im Voraus
Florian

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



Extras: Nachricht drucken   Auf den Merkzettel   Moderator benachrichtigen  
Seiten in diesem Thread: 1



Extra Informationen
0 registrierte und 0 anonyme Benutzer betrachten dieses Forum.

Moderator:  Claus, MiB, VFensterB, Lordchen, Helmut 

drucke Thema

Rechte
      Du kannst keine neue Nachrichten schreiben
      Du kannst keine Antworten schreiben
      HTML ist deaktiviert
      UBBCode ist aktiv

Bewertung:
Thema gelesen: 143

Bewerte dieses Thema mit 

Sprung zu

Email an visualbasic.at visualbasic.at

*
UBB.threads™ 6.5.1


Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0

Warning: Unknown: open(/var/www/2503bit1205/forum/sessions/sess_4f5ae2e28e578588e77ce794bde3c3da, O_RDWR) failed: Permission denied (13) in Unknown on line 0

Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/www/2503bit1205/forum/sessions) in Unknown on line 0