ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
1001
1001
EMPFEHLEN
-
Hallo,
ich habe ein Problem und hoffe Ihr könnt mir helfen.
Ich schreibe an einem Programm für eine Maschinensteuerrung,
nun möchte ich eine Textbox die mir den inhalt versendet?!
Also die textbox habe ich, sie ist auch schon soweit das sich bei einem Klick darauf ein kleines Fenster mit Button (Zahlen 0-9) öffnet, man einen Wert eintippt und dieser dann in der Textbox angezeigt wird.
Ich möchte den Inhalt als Variable, die ich dann mit noch anderen Programmcode an die Maschine senden kann.
Ungefähr so: Textbox(5,3) die 5,3 dann als Variable(x) dann in meinen Befehle
Me.Send("P49=x")
die P49 ist die Position in der maschine für diesen Parameter?
Ich hoffe ich habe mich verständlich ausgedrückt und ihr könnt mir helfen,
schon mal eine GROßES DANKE an euch.
Grus Basti
##EDIT##
Hab´s geschafft,
musste einfach nur etwas an dem send befehl ändern
Me.Send("P49=x") ---> Me.Send("P49="&Variable)
Jetzt habe ich aber ein neues Problem
ich kann zwar Daten senden, aber das mit dem Empfangen funktioniert nicht 
Würde mich über Hilfe sehr freuen.
DANKE
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
Public Class *** ' Das Delegat muss die selbe Signature haben Delegate Sub TextBoxCallback(ByVal text As String) Private WithEvents myComPort As IO.Ports.SerialPort ' Bei den meisten Geräten ist ein Abschlußzeichen erforderlich, meistens ' wird ChrW(13) oder ChrW(10) oder beide benötigt ' - Wählt was eure Gegenstelle benötigt: ' Private EndOfCommand As String = Constants.vbCr.ToString ' Private EndOfCommand As String = Constants.vbLf.ToString Private EndOfCommand As String = Constants.vbCrLf.ToString Private Sub Form1ÄNDERUNG_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load ' Mal nachschauen, ob es hier SerialPorts gibt Dim str() As String = IO.Ports.SerialPort.GetPortNames() ' Wenn nein, dann beenden: If str.Length = 0 Then MsgBox("Kein Gerät angeschlossen!", MsgBoxStyle.Critical) Me.Close() End If ' Eine Instance von SerialPort erstellen ' Im Normalfall ist das COM1: Me.myComPort = New IO.Ports.SerialPort(str(0)) ' Die folgenden vier Einstellungen müssen denen der ' Gegenstelle entsprechen Me.myComPort.BaudRate = 9600 Me.myComPort.DataBits = 8 Me.myComPort.StopBits = IO.Ports.StopBits.One Me.myComPort.Parity = IO.Ports.Parity.None ' Wichtig! Hier wird eingestellt nach wieviel Bytes im Eingangspuffer ' das DataReceived Event gefeuert wird Me.myComPort.ReceivedBytesThreshold = 1 ' Und nun öffnen wir den Port Me.myComPort.Open() End Sub ''' <summary> ''' Wird ausgelöst wenn die Comm die in ReceivedBytesThreshold eingestellte ''' Anzahl Bytes empfangen hat ''' </summary> Private Sub myComPort_DataReceived( _ ByVal sender As Object, _ ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) _ Handles myComPort.DataReceived Select Case e.EventType Case IO.Ports.SerialData.Chars ' Ein Zeichen wurde empfangen und im Eingabepuffer platziert. Case IO.Ports.SerialData.Eof ' Das Dateiendezeichen wurde empfangen und im ' Eingabepuffer platziert. End Select Dim msg As String = Me.myComPort.ReadExisting Me.ShowText(msg) End Sub ''' <summary> ''' Wird ausgelöst wenn sich die Steuerleitungen geändert haben ''' </summary> Private Sub myComPort_PinChanged(ByVal sender As Object, ByVal e As _ System.IO.Ports.SerialPinChangedEventArgs) Handles myComPort.PinChanged Select Case e.EventType Case IO.Ports.SerialPinChange.Break ' Bei der Eingabe wurde ein "break" erkannt. Case IO.Ports.SerialPinChange.CDChanged ' Der Zustand des CD-Signals (Carrier Detect) hat sich geändert. ' Mit diesem Signal wird angezeigt, ob ein Modem mit einer ' Telefonleitung verbunden ist und ein Datenträgersignal ' erkannt wurde. Case IO.Ports.SerialPinChange.CtsChanged ' Der Zustand des CTS-Signals (Clear to Send) hat sich geändert. ' Mit diesem Signal wird angegeben, ob Daten über den seriellen ' Anschluss gesendet werden können. Case IO.Ports.SerialPinChange.DsrChanged ' Zustand des DSR-Signals (Data Set Ready) hat sich geändert. ' Mit diesem Signal wird angezeigt, ob das Gerät am seriellen ' Anschluss betriebsbereit ist. Case IO.Ports.SerialPinChange.Ring 'Ein Ringindikator wurde erkannt. End Select End Sub ''' <summary> ''' Wird ausgelöst wenn ein Fehler in der Übertragung endeckt wurde ''' </summary> Private Sub myComPort_ErrorReceived( _ ByVal sender As Object, _ ByVal e As System.IO.Ports.SerialErrorReceivedEventArgs) _ Handles myComPort.ErrorReceived Select Case e.EventType Case IO.Ports.SerialError.Frame ' Die Hardware hat einen Rahmenfehler erkannt. Case IO.Ports.SerialError.Overrun ' Ein Zeichenpufferüberlauf ist aufgetreten. Das nächste ' Zeichen geht verloren. Case IO.Ports.SerialError.RXOver ' Ein Eingabepufferüberlauf ist aufgetreten. ' Die Kapazität des Eingabepuffers ist erschöpft, ' oder es wurde ein Zeichen nach dem Dateiendezeichen ' (EOF, end-of-file) empfangen. Case IO.Ports.SerialError.RXParity ' Die Hardware hat einen Paritätsfehler erkannt. Case IO.Ports.SerialError.TXFull ' Die Anwendung hat versucht, ein Zeichen zu übertragen, aber ' die Kapazität des Ausgabepuffers war erschöpft. End Select Me.ShowText("ERROR" & vbCrLf) End Sub ''' <summary> ''' Da die Daten aus einem anderem Thread kommen müssen wir die Ausgabe ''' über Invoke machen ''' </summary> Private Sub ShowText(ByVal text As String) If Me.TextBox3.InvokeRequired Then Dim d As New TextBoxCallback(AddressOf ShowText) Me.Invoke(d, New Object() {text}) Else Me.TextBox3.Text = Me.TextBox3.Text & text End If End Sub ''' <summary> ''' Hier wird der Command zusammengesetzt und versendet ''' </summary> ''' <param name="command"></param> ''' <remarks></remarks> Private Sub Send(ByVal command As String) Me.myComPort.Write(command & Me.EndOfCommand) End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnstart.Click btnmsnull.BackColor = Color.Chartreuse btnstart.BackColor = Color.Cyan btnstop.BackColor = Color.Chartreuse btnpos1.Enabled = False btnpos2.Enabled = False btnoben.Enabled = False btnunten.Enabled = False btnmsnull.Enabled = False Dim überg, speed As String überg = txtübergang.Text Me.Send("p46=" & überg) speed = txtspeed.Text Me.Send("p45=" & speed) Me.Send("start") End SubGeändert von basti1985 (04.11.09 um 16:26 Uhr)
-
Kannst du bitte genauer angeben, was "funktioniert nicht" für dich bedeutet? Das DataReceived-Event hast du ja schon gefunden.
hihi = -h²
-
Ich weiss ehrlich gesagt nicht genau wie ich anstellen muss (programmieren), das mir das programm den empfangenen code in eine Text oder listbox ausgibt
Ich bin VB anfänger...
Ähnliche Themen
-
Textbox-Inhalt per E-Mail versenden
Von Kaleidsocopskalei im Forum Visual Basic 6.0Antworten: 1Letzter Beitrag: 27.02.09, 20:22 -
Email mit Inhalt der Textbox versenden
Von yunses im Forum .NET CaféAntworten: 42Letzter Beitrag: 16.07.08, 20:03 -
[VB 2005] Inhalt aus einer TextBox in einer *.txt speichern
Von Mausmatte im Forum .NET Windows FormsAntworten: 7Letzter Beitrag: 17.10.07, 20:53 -
[VB 2005] *.txt lesen und in einer TextBox anzeigen
Von Snowbear139 im Forum .NET DatenverwaltungAntworten: 4Letzter Beitrag: 23.05.07, 19:23 -
Cursor in TextBox belassen [C# VS 2005]
Von Moan im Forum .NET Windows FormsAntworten: 2Letzter Beitrag: 12.01.06, 11:28





Zitieren
Login





