| |
Fragen und Antworten zur vbarchiv.dllAnsprechen von Serieller Schnittstelle Com1 | | | Autor: Fricktaler | Datum: 03.10.05 08:32 |
| Hallo Leute
Ein dickes grosses Lob für die von euch geleistete Arbeit.
Ich versuchte mit der vbarchiv.dll die serielle Schnittstelle anzusprechen. Die sollte ja eigentlich kein Problem darstellen, aber irgendwas mach ich falsch.
Fragen:
1. Welche Daten und Parameter benötige ich vom COM-Port teilnehmer, wenn dieser z.B. mein Fluke 189 Messgerät ist und ich die Daten im Excel anzeigen möchte. (Normalerweise habe ich von Fluke die ganzen Spezifikationen erhalten)
2. Hat jemand ein Beispiel wie mit vbarchiv.dll eine serielle schnittstelle angesprochen und z.B. Daten von einem Teilnehmer in eine VB oder VBA-Applikation übertragen wurde.
Besten Dank für eure Hilfe
Gruss
Fricktaler | |
Re: Ansprechen von Serieller Schnittstelle Com1 | | | Autor: Fricktaler | Datum: 05.10.05 20:30 |
| Hallo Martoeng
Danke für deine Antwort. Manchmal komme ich mir hier im Forum ein wenig fehl am Platz vor. Lesen kann ich ja auch. Habe die HTML zu den jeweiligen Codes gelesen, dennoch bin ich zu blöd um die sinnvoll zu beschalten. Habe jetzt eine Lösung mit dem MSCOMM32 am laufen gehabt. Ging ja alles tiptop, bis ich die Anwendung auf einem andern Rechner laufen lassen wollte.
Jetzt fehlt mir diese MSCOMM32.OCX und trotz installation kommt immer die Fehlermeldung: "OLE Server nicht richtig registriert"
Ich werde mich jetzt also nochmals mit der vbarchiv.dll auseinander setzen und hoffe, das ich sie heute Nacht endlich korrekt beschalten kann, damit sie funzt. | |
Re: Ansprechen von Serieller Schnittstelle Com1 | | | Autor: Braun | Datum: 07.10.05 23:09 |
| Hallo Martoeng, hallo Fricktaler,
meine jetzige Lösung ist auch eine mit MSCOMM32. Die klappt soweit ganz gut, obwohl ich auch dort Schwierigkeiten habe. Irgendwann hatte ich ein Quellencode in die Hand bekommen, diesen eingebaut und es ging. Ich musste bisher nur Daten empfangen.
Mit den com-Dingen habe ich aber auch so meine Schwierigkeiten.
Gibt es nicht irgendwo eine Möglichkeit die einzelnen Funktionen/Prozeduren im kurzen Quellencode darzustellen. Vielleicht liest das jemand, hat das schon alles in Anwendung und kann etwas dazu sagen.
Bist Du (Fricktaler) mit deiner Auseinandersetzung weiter gekommen?
Jetzt noch eine andere Frage an Martoeng. Mein Notebook (ziemlich neu) hat keine serielle Schnittstelle, kein Diskettenlaufwerk, keine LPT- Schnittstelle mehr. Zielt ja alles immer mehr auf USB hin. Wie werden Daten aus solchen Schnittstelle gelesen.
Vielleicht ist demnächst soetwas nötig:
Public Declare Function usbGet Lib "vbarchiv.dll" (ByVal hC............
Gruß Braun | |
Re: Ansprechen von Serieller Schnittstelle Com1 | | | Autor: Fricktaler | Datum: 08.10.05 13:53 |
| Hallo Braun
Danke für dein Posting. Also, wo stehe ich. Eigentlich stehe ich noch ziemlich am Anfang. Konnte nach wie vor meine Excel-Applikation nicht auf einem Anderen Rechner zum laufen bringen, ohne das ich das VB installiert habe und dadurch die MSCOMM richtig integriert ist.
Habe im Moment aber auch andere Prioritäten gesetzt. Ich kann mit dem MSCOMM auch ohne Probleme Daten von verschiedenen Messgeräten lesen. Leider hat jetzt der eine Hersteller die Daten in einem IEEE.754 Format, welches ich erst mal Umformen muss.... Mal sehen wie lange ich wieder für das benötige.
Ah noch etwas. Ich habe einen USB-RS232-Adapter an meinem Laptop angeschlossen. DAs funktioniert so weit ganz gut. MSCOMM merkt das nicht einmal, da für den Adapter ein spezieller Treiber installiert wurde. | |
Re: Ansprechen von Serieller Schnittstelle Com1 | | | Autor: Fricktaler | Datum: 11.10.05 12:55 |
| Hallo Martoeng
Alles was ich möchte ist ja das:
MSSComm1.CommPort = 1
MSComm1.Settings = "115200,N,8,1"
MSComm1.PortOpen = True
'MSComm1.RThreshold = 1
'MSComm1.SThreshold = 1
'MSComm1.InputLen = 1
MSComm1.Output = TextBox2.Value + vbCr
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case comOverrun: MsgBox "Datenverlust!"
Case comRxOver: MsgBox "Datenverlust!"
Case comEvReceive: TextBox3.Value = TextBox3.Value + MSComm1.Input
End Select
End Sub
Aber eben mit der VBarchiv.DLL
Kannst du mir einen Tip geben?
Danke | |
Re: Ansprechen von Serieller Schnittstelle Com1 | | | Autor: Martoeng (Moderator) | Datum: 11.10.05 20:17 |
| Dim hComm As Long
hComm = comOpen("COM1")
comSet hComm, "BAUDRATE",115200
... da musst Du wissen, welche Werte gesetzt werden
comSend hComm, TextBox2.Value + vbCrLf
Das Empfangen von Daten muss dann selbst gemacht werden, da kann's natürlich kein Event geben. Mit comReceive oder comReceiveLine (die 2. wartet auf ein vbCrLf) kann man den Eingang abfragen. Dies könnte man entweder in einen Timer oder einen Thread auslagern.
Also, zu comSet/comGet noch folgende Anmerkung: die untersützen die folgenden Argumente (natürlich ohne weitere Anführungszeichen einsetzen, bspw. comSet(hComm, "BAUDRATE", 115200):
"BAUD", "BAUD RATE", "RATE", "BAUDRATE"
"BREAK"
"BYTE", "BITS"
"CD"
"CTSFLOW"
"DSRFLOW"
"DSRSENS"
"DTRFLOW"
"DTRLINE"
"NUL", "NULL"
"PARITY"
"PARITYCHAR"
"PARITYREPL"
"PARITYTYPE", "PARITYPE"
"RING"
"RLSD"
"RTSFLOW"
"RXBUFFER"
"RXQUE"
"STOP"
"TXBUFFER"
"TXQUE"
"XINPFLOW", "XINFLOW"
"XOUTFLOW"
vbarchiv.dll (Freeware), Tutorials uvm. auf http://www.martoeng.com. | |
Re: Ansprechen von Serieller Schnittstelle Com1 | | | Autor: Fricktaler | Datum: 12.10.05 00:07 |
| Hallo Martoeng
Besten Dank für deine Hilfe
Es scheint so, als würde die Adressierung des Gerätes nicht stimmen. Habe im Moment ein Blackout wie ich die Datenbit (8) und Stopbit (1) eingeben kann.
ist etwa das der richtige Befehl:
Dim hComm As Long
Me.TimerInterval = 100
hComm = comOpen("COM1")
comSet hComm, "BAUDRATE", 9600
comSet hComm, "PARITY", No
comSet hComm, "Bits", 8
comSet hComm, "STOP", 1
comSend hComm, TextBox2.Value + vbCrLf
Private Sub Form_Timer()
comReceive hComm
TextBox3.Value = hComm
End Sub
Gruss
Fricktaler | |
Re: Ansprechen von Serieller Schnittstelle Com1 | | | Autor: Braun | Datum: 19.10.05 13:27 |
| Hallo Martoeng,
Eine Datenübertragung vom MDE(Mobile-Daten-Erfassung) zum PC soll durchgeführt werden.
Die Com-Port-Parameter sind:
Baud: 115200
Parity: keine
datenbits:8
Stopbits:1
Der Anstoss der Übertragung beginnt mit den Senden eines "READ[13]" zum MDE. MDE antwortet bei stehender Verbindung mit "ACK[13]", danach sendet MDE den ersten Record.
Nach Eingang eines Records vom MDE zum PC kann man jetzt eine Kontrolle dürchführen (hier nicht beschrieben, ob richtige Anzahl der Bits übertragen wurden) und sendet ggfs. ein "NAK[13]", wenn der Record nochmals übertragen werden muss.
Bei korrekter Übertragung sendet man vom PC ein "ACK[13]" um das Senden des nächsten Records zu veranlassen. Nachdem alle Records gesendet worden sind, sendet MDE ein "OVER[13]".
Wie sollte das mit diesen Tools aussehen?
Leider habe ich es bisher mit den Tools nicht hinbekommen.
Gruß Braun | |
Re: Ansprechen von Serieller Schnittstelle Com1 | | | Autor: Martoeng (Moderator) | Datum: 24.10.05 19:48 |
| Sub CommPort()
hComm = comOpen("COM1") 'Öffnen
If hComm = 0 Then Exit Sub
comSet hComm, "BAUDRATE", 115200 'Baud Rate
comSet hComm, "PARITY", 0 'Parity
comSet hComm, "BYTE", 8 'Datenbits
comSet hComm, "STOP", 1 'Stopbits
comSet hComm, "TXBUFFER", 1024 'Transmit buffer
comSet hComm, "RXBUFFER", 1024 'Receive Buffer
'Daten senden
comSend hComm, "READ[13]"
'Antwort empfangen, hier evtl. ne Schleife bauen oder mit nem Timer
' auslesen und zusammenfügen
Dim sAnswer As String
sAnswer = comReceive(hComm, sAnswer) vbarchiv.dll (Freeware), Tutorials uvm. auf http://www.martoeng.com. | |
Re: Ansprechen von Serieller Schnittstelle Com1 | | | Autor: Braun | Datum: 24.10.05 22:41 |
| das Ende wird mit "OVER[13]" empfangen.
Wobei in Klammern die Werte [13] ein CR bedeuten.
Also z.B. senden mit MSComm sieht so aus:
MSComm.Output "READ" & Chr(13) ' = Anstoss um einen Datenübertragung einzuleiten.
Ein weiteres Problem ist, dass die empangenen Records z.T. unterschiedliche Längen
(erster und letzter Record) haben und das die Records ein CR im Record selbst besitzen. Also nicht nur am Ende des Records. Z.B. sieht der erste empfangener Record so aus:
"ACK" & chr(13) & ..(div. Acii-Zeichen).. & chr(13)
Das erste Chr(13) also CR macht schon Schwierigkeiten den Record mit
MsComm.Input zu lesen. Bisher hatte ich das erste Chr(13) mit
Replace usw. herausgefiltert.
Leider habe ich keine Möglichkeit die gesendeten Records im MDE zu verändern.Das ist vom Gerät gegeben.
Wie würde der erste empfangener Record deiner Meinung nach aussehen?
Gruß Braun | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Neu! sevCoolbar 3.0
Professionelle Toolbars im modernen Design!
Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Weitere Infos
|