So nach einigen weiteren Stunden des rumprobierens hab ichs nun endlich geschafft
Meine Fehler:
-Ich wusste nicht das der mc deim Input ein echo sendet, deswegen immer die mysteriösen rückmeldung die ich nicht auswerten konnte.
-mc Programm hatte ich warum auch immer als baudrate 9400 statt 9600 programmiert.
-Die abfrage der Rückmeldungen mache ich nun durch das DataReceived Event des Com Ports.
-im mc programm hab ich nun noch eine bestätigungsmeldung eingebaut die gesendet wird, wenn der Motor die Schritte abgeschlossen hat.
Hier nochmal der aktuelle code des PC-Programms:
Code:Module Module1 Dim WithEvents myport As New System.IO.Ports.SerialPort Dim Daten() As Byte Dim buffer As Byte Sub Main() myport.PortName = "COM2" myport.BaudRate = 9600 myport.Parity = IO.Ports.Parity.None myport.StopBits = IO.Ports.StopBits.One myport.DataBits = 8 myport.Open() Do myport.Write("l") myport.Write(Chr(13)) Checkinput() MsgBox("Richtung empfangen") myport.Write("400") myport.Write(Chr(13)) Checkinput() MsgBox("Geschwindigkeit empfangen") myport.Write("2000") myport.Write(Chr(13)) Checkinput() MsgBox("Schrittzahl empfangen") Checkinput() MsgBox("Motorlauf Fertig") Loop End Sub Private Sub Checkinput() Do If buffer = 79 Then buffer = 0 Exit Do End If Loop End Sub Private Sub myport_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles myport.DataReceived buffer = myport.ReadByte End Sub End Module







Zitieren

Lesezeichen