Hallo, ich muss zur zeit für die Schule ein Projekt machen, dabei handelt es sich um eine Wetterstation, dessen Messwerte an das Lemps12 Mikrocontroller-System übergeben werden... Das ganze wird in C Programmiert und die Daten werden in einem Array gespeichert und ich kann sie auch z.B. mit printf an das Lemps-Terminal (das zur IDE gehört) ausgeben. Jetzt möchte ich aber ein Programm, am liebsten mit VB oder VBA (Excell) schreiben, das die Daten anzeigt und z.B. Visualisiert. Jetzt habe ich nur absolut keine ahnung wie ich das anstellen soll. Irgendwie muss es ja möglich sein. Ich habe schon versucht mit Programmen die den Com-Port auslesen aber irgendwie kriege ich es nicht hin. Würde es z.B. möglich sein mit VB die werte zu empfange die ich mit printf normalerweise ans Terminal sende? Ich weiß halt echt nicht wie ich anfangen soll und aus den vielen anderen Themen über die COM-Schnittstelle werde ich auch nicht schlauer... Danke!
>Würde es z.B. möglich sein mit VB die werte zu empfange die ich mit printf normalerweise ans Terminal sende? Ja >Ich weiß halt echt nicht wie ich anfangen soll http://www.faustweb.de/download/download_soft.htm#VBA
die exceldatei macht wohl nicht das was du willst sehe ich grad aber bei der rsapi.dll ist eine doku dabei: http://www.faustweb.de/download/download_soft.htm#dll damit sollte es dann kein problem sein ein paar zeilen zu empfangen viel erfolg bei deinem projekt
Hi, Vielen Danke habe das ganze mal ausprobiert, aber so richtig geklappt hat es nicht. nun habe ich mit vb express versucht daten zu empfangen mit folgenden code: das klappt auch soweit nur das er mir nur die erste zeile ausgibt... und wenn ich statt "SerialPort2.ReadLine" "SerialPort2.ReadExisting" nehme zeigt er mir nur die ersten drei buchstaben an und sonst nichts... wie kann ich es machen das er z.B. jede zeile die geschickt wird einzeld mit "SerialPort2.ReadLine" ausgib?
1 | Private Sub bsf1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bsf1.Click |
2 | SerialPort2.Open() |
3 | Dim Incoming As String |
4 | lst.Items.Clear() |
5 | Incoming = "" |
6 | While Incoming = "" |
7 | Incoming = SerialPort2.ReadLine |
8 | If Incoming <> "" Then lst.Items.Add(Incoming) |
9 | End While |
10 | SerialPort2.Close() |
11 | End Sub |
die ausgabe im c code vom programm das aufn mikrocontroller ist:
1 | printf("\n\n\n%u Lemps12 Messwerte\n",MessNr-1); |
2 | printf("\nMW Nr:\t\n\n"); |
3 | for(MessNrb=1;MessNrb<MessNr;MessNrb++){ |
4 | printf("%u:\t%u Grad\n",MessNrb,Dat[MessNrb-1]); |
5 | }
|
Geh das Incoming = "" While Incoming = "" Incoming = SerialPort2.ReadLine If Incoming <> "" Then lst.Items.Add(Incoming) End While einmal in Gedanken durch. Wie lange läuft die while Schleife? Welchen Wert hat Incoming nachdem die erste Zeile empfangen wurde? Was bedeutet das für die Schleife?
hehe ja das weiß ich wohl das es dann nach dem ersten wert abbricht ;) aber wenn ich das ganze in einer endlosschleife mache klappt es auch nicht, dann passiert nix... mein problem ist wie kann ich machen das er automatisch erkennt wenn was geschickt wird.. also z.B. werden 10 zeilen geschickt woher weiß dann das programm das 10 zeilen kommen? da muss er ja irgendwie immer auf standby sein also in einer endlosschleife oder so aber wenn ich das mache passiert garnichts: While True Incoming = SerialPort2.ReadLine If Incoming <> "" Then lst.Items.Add(Incoming) End While
Polling ist immer blöd ... Sollte in VB nicht ein Event ausgelöst werden, wenn was 'reinkommt? Ich benutze zwar kein VB, sondern RealBasic, da ist das mit den seriellen Schnittstellen ganz easy. Ich kann mir nicht vorstellen, dass das Basic vom Platzhirsch das nicht auch kann ... Frank
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived t_zahl = t_zahl + 1 'variable Global If t_zahl = 100 Then t_zahl = 0 'test ob was rein kommt ' daten = SerialPort1.ReadByte() TextBox2.Text = t_zahl byteeinlesen() End Sub 'Eingelesener wert mit Timer Anzeigen 'sonst mit invoke arbeiten
So ich habe es jetzt geschafft die daten an den pc zu schicken, in einem array zu speichern und in einem diagramm darzustellen. jetzt habe ich noch folgende problem, wo ich nicht weiter komme: 1. Ich habe ein array in dem einmal der messwert und die zeit/datum gespeichert werden soll... da irgendwas mit dem mikrocontroller nicht stimmt und die zeit immer 00:00:00 ist, muss ich die systemzeit vom pc nehmen. wie mache ich das am besten, so dass ich es in dem array speichern und wieder abrufen kann... irgendwie bin ich dazu zu blöd. 2. ich möchte das array abspeichern, in einer externen datei oder vllt sogar einem excel-blatt. mein problem: ich habe keine ahnung von vb und möchte nun wissen wie ich das anstelle das z.B. das array an ein anderen sub übergeben wird oder irgendwie so, weil es ja bei knopfdruck passieren soll. 3. wenn ich daten an den mikrocontroller senden will, z.B. um einen Teil des Programms zu starten oder so, dann benutze ich "SerialPort2.Write()" aber wenn ich jetzt "SerialPort2.Write(1)" benutzte kommt beim Mikrocontroller "177" an.... und irgendwie ist das alles tüdelig... so ist es nicht möglich mal ebend nen paar parameter für irgendeine funktion vom pc an den mikrocontroller zu senden.
1. ich würde in der hilfe nach time und date suchen 2. daten an sub übergeben: sub test (variable as Integer) an dateien kommst du über das file system objekt. wenn du deine werte in eine textdatei speicherts und mit ";" trennst kannst du die daten in excel importieren (=csv datei).
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.