www.mikrocontroller.net

Forum: PC-Programmierung Sensor auslesen mit VB6

Autor: Satanas (Gast)
Datum: 28.04.2008 12:41

Moin!

Ich hab hier glaube ich mal was Extravagantes:

Aslo, ich möchte mir nen VB6 Programm schreiben, was Daten, die von
einem Sensor gesendet werden ausliest und dann weiter an Excel schickt,
damit ich sie dort weiter verarbeiten kann.

Problem 1: Ich bekomme es nicht hin, die Daten zu empfangen. Ich habe es
mit OPENCOM aus der Port.dll probiert, jedoch bekomme ich dort ne
Fehlermeldung.
Der Datenstrom hat folgende Einstellung: Baud-Rate 28800, 8 Datenbits,
keine Parität, 1 Stoppbit und keine Datenflusskontrolle.
Der Sensor sendet drei Werte, die mit je 12Bit aufgelöst werden.
Das Einlese/Empfanginterval soll individuell festlegbar sein.

also Quasi für die Aufnahem von Messreihen.

Wie bekomme ich diese Werte in VB?!

Problem 2: Die eingelesenen/empfangenen Daten sollen dann nach Excel
übertragen werden und dort schön untereinander aufgeschrieben werden,
damit man z.B. einen Trend absehen kann.

Wie organisiere ich denn so nen Datentransfer?!

Vielen Dank
Autor: hownottobeseen (Gast)
Datum: 28.04.2008 12:51

Hi,

kommen die Daten schon seriell?

wenn ja: nimm das MSComm-Control.

Datenimport in Excel:
Entweder du schreibst eine csv-Datei oder du greifst über ein OLE-Objekt
auf Excel zu.
Was auch geht (wenn die Daten Live visualisiert werden sollen): in Excel
ein Makro schreiben.

Schau dich mal auf http://www.activevb.de um, da gibt's einige Infos.

Viele Grüße

hownottobeseen
Autor: Severino R. (severino)
Datum: 28.04.2008 16:12

Satanas wrote:
> Moin!

> Problem 1: Ich bekomme es nicht hin, die Daten zu empfangen. Ich habe es
> mit OPENCOM aus der Port.dll probiert, jedoch bekomme ich dort ne
> Fehlermeldung.

Und wie bitteschön lautet die Fehlermeldung? Ich kann sie in der
Kristallkugel nicht genau lesen.

> Der Datenstrom hat folgende Einstellung: Baud-Rate 28800, 8 Datenbits,

Liegt das ev. daran, dass 28800 eine ziemlich "krumme" Baudrate ist?

Eine weitere Möglichkeit ist, die Daten nicht in VB6, sondern direkt in
Excel aus der seriellen Schnittstelle zu lesen:
http://www.b-kainka.de/buch2.htm
Autor: Rufus t. Firefly (rufus) (Moderator)
Datum: 28.04.2008 16:37

Die Baudrate mag zwar krumm sein, die Standard-PC-UART aber unterstützt
sie.
Autor: Der Dude (Gast)
Datum: 28.04.2008 18:56

Aber Visual Basic nicht.
Autor: Der Dude (Gast)
Datum: 28.04.2008 19:03

Öha, stimmt ja gar nicht, hab grad nachgesehen:

Einstellung

110
300
600
1200
2400
9600 (Voreinstellung)
14400
19200
28800
38400
56000
128000
256000

28800 sollte also problemlos möglich sein.
Autor: Peter (Gast)
Datum: 15.05.2008 15:31

Ich habe ein VB Prgramm mit dem kann ich CD Wechsler ansteuern und
einlesen,
da es vor ein Paar jahre von einen USER geschrieben worde den ich nicht
finde.
Frage an euch das Programm liest nur den 200 hunderten aber ich besietze
400er CD wechsler
wenn das Programm starte rechnet er entwas um.
die 400 CDs im Hex ist 190 schicke ich raus geht nicht
die 200 hundertste CD ist c8 geht

disk = Right("0" + Hex(cdlade.List(cdlade.ListIndex)), 2)

arg1 = Val(disk)
arg2 = Val(track)


For stega = 1 To (Len(wog) - 2) / 2
muo = Mid(wog, stega * 2 - 1, 2)
timuxxx = "&H" + muo
Rem muo muss von hex in Dec umgewandelt werden
If muo <> "00" Then tittext = tittext + Chr("&H" + muo)
Next
Autor: Karl heinz Buchegger (kbuchegg) (Moderator)
Datum: 15.05.2008 15:41

Peter wrote:

> wenn das Programm starte rechnet er entwas um.
> die 400 CDs im Hex ist 190 schicke ich raus geht nicht
> die 200 hundertste CD ist c8 geht

Weiters benögt man für Hex 190  3 Stellen, während man bei
C8 mit 2 Stellen auskommt.

>
> disk = Right("0" + Hex(cdlade.List(cdlade.ListIndex)), 2)
                                                         ^
Was bedeutet diese 2 ------------------------------------+
Autor: Philipp Burch (philipp_burch)
Datum: 15.05.2008 18:43

>> disk = Right("0" + Hex(cdlade.List(cdlade.ListIndex)), 2)
>                                                          ^
> Was bedeutet diese 2 ------------------------------------+

Ich nehme mal an, mit dieser Zeile wird ein String erzeugt, der immer
genau zwei Zeichen in Hex enthält. Hex$() liefert bei Zahlen unterhalb
16 (0xa) nur eine Stelle, durch den Code wird vorne eine Null angehängt
(Verwendet doch bitte, BITTE nicht '+' für Stringkonkatenationen,
sondern '&') und anschliessend die beiden hinteren Stellen verwendet.


Ansonsten schliesse ich mich Karl Heinz an: 400 ist wohl zu lang.

Antwort schreiben

Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
  • Aussagekräftigen Betreff wählen
  • Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
  • JPEG-Dateien (.jpg) nur für Fotos verwenden, Schaltpläne, Screenshots usw. als PNG oder GIF anhängen

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel






webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net