Hi,
geht das MCSCOMM.OCX des BASCOM Herstellers MCS.
http://www.mcselec.com/index.php?option=com_docman&task=doc_details&gid=151&Itemid=54
Es soll lizensfrei sein?
Ich habe es runter geladen.
Was macht man, wie damt?
Dort gibt es keine oder "komische" Antworten.
Klar, sie geben keinen Support...
Nur ohne jede Anleitung; wie benutzt man es?
Habe ich da etwas nicht gefunden?
Ich will ein ACCESS Form mit einem AktiveX für RS232 verwenden.
Das MS MSCOMM.OCX möchte ich wegen der Lizensrechte vermeiden.
Alles was mit dem MSCOMM.OCX funktioniert geht mit dem MCSCOMM:OCX
nicht.
Wieso?
Wo findet man Properties, EventProcedures, Events, usw.. des
MCSCOMM.OCX?
Was ist mit den DEMOS?
NIX?
VB CODE, der eigentlich NIX is?
Weder frm noch prj enthalten irgendetwas sinnvolles, ausser header?
Werner Ratlos
Der Link den du angibst, führt zu einem Download, der ein komplettes
Projekt enthält. Die Komponente kannst du dir in der Objektansicht
anschauen. Das Projekt demonstriert wie man sie benutzt. Was brauchst du
denn noch?
Zitat von der obigen Downloadseite:
---
Description:
The MCS COMM OCX is a free OCX control that can be used for serial
communications.
There is a VB6 and VB NET example included.
Unlike the Microsoft OCX, the MCS COMM is royalty free and does work
with events.
Update on 15 Dec. 2006. it now can open any available COM port.
See the included VB example.
---
Dateinamen aus dem Archiv:
MSSCCPRJ.SCC
mcscomm.ocx
MCSCOMDEMO.vbw
MCSCOMDEMO.vbp
frmCOM.frx
frmCOM.frm
Und nun noch zu deinen Fragen, falls du sie immer noch haben solltest:
>Es soll lizensfrei sein?
- Ja
>Ich habe es runter geladen.
- Toll
>Was macht man, wie damt?
- COM Schnittstellen benutzen, z.B. mit Access
>Dort gibt es keine oder "komische" Antworten.
- liegt es an den komischen Fragen?
>Klar, sie geben keinen Support...
- bei solchen Fragen verständlich
>Nur ohne jede Anleitung; wie benutzt man es?
- Kenntnis der jeweiligen Programmiersprache wird vorausgesetzt
>Habe ich da etwas nicht gefunden?
Das ist eine provokative Frage, oder?
>Alles was mit dem MSCOMM.OCX funktioniert geht mit dem MCSCOMM:OCX>nicht. Wieso?
- Andere Schnittstellen?
>Wo findet man Properties, EventProcedures, Events, usw.. des>MCSCOMM.OCX?
- Objektviewer
>Was ist mit den DEMOS?>NIX?>VB CODE, der eigentlich NIX is?
???
Probier es mal mit der Projektdatei, oder schau dir den VB-Code an.
Hi,
nun ich habe nochmal etwas Zeit investiert.
Provozieren wollte ich sicher nicht.
VisualBasic habe ich bislang nur in ACCESS benutzt.
So fiehl es mir schwer mit meiner VisualBasic Express Edition das
Projekt zu öffnen / einzusehen. Die Umgebung ist füe mich ungewohnt.
Nach einer "Konvertierung" (verstehe nicht genau was es da gemacht hat)
:
Tatsächlich, da ist alles.
Nach Registrierung der AktiveX Komponente wird sie nun auch in ACCESS
angeboten und funktioniert allem Anschein nach.
Die Registrierung funktionierte jedoch nicht sofort.
Ich habe es mehrmals wiederholt, irgendwann fand ich dann "CommX" unter
den registrierten ActiveX Controls.
Vermutlich habe früher ich nach irgendwas wie "MCSCOMM" oder so gesucht.
Der nun erstellte Verweise nennt sich auch wiederrum "MCS/Communication
Library" in den Verweisen.
Etwas verwirrend.
Danke, Wolfram sicheres Auftretten überzeugte mich das es wohl geht /
gehen muss.
werner
Hi, nochmals...
nach wieder etwas mehr Zeit.
Ich habe und will den extended USART des ATmega8 im
MultiProcessorCommunicationMode MPCM nutzen.
5 Slaves an einer RS232.
Im 9 Bit Modus "hört" nur der adressierte Kandidat.
Mit MSCOMM.OCX kann man mit PARITY Mark or Space ein 9tes Datenbitbit
generieren.
Bei MCSCOMM.OCX finde ich die Einstellung der Parität nicht.
Weiter weiss ich nicht wie man Framing-Parity Errors, Overflows, Brake
etc. erkennen kann. Kurz irgendeine Info zum UART Status mit
MCSCOMM.OCX?
mfg werner
... und noch etwas später?
Mit MCSCOMM.OCX kann ich unter WINDOWS/XP beliebige Com:x öffnen.
Diese sind aber nicht existend.
Gesendet wird virtuell..ohne Fehlermeldung. Empfangen dann natürlich
NIX.
Deren Status kann ich wie o.g. (noch) nicht abfragen.
Auf einem zweiten Kandidaten, ein PC mit WINDOWS 2000, lies sich
MCSCOMM.OCX wie weiter oben geschildert registrieren.
Dennoch die gleiche ACCESS Anwendung wie auf dem XP Rechner will nicht:
"In diesem Steuerelement befindet sich kein Objekt"
Da das MCSCOMM das einzige Steuerelement im Formular ist, ist wohl
dieses gemeint.
Das Element hat selbst in der Entwurfsansicht keine Eigenschaften welche
die serielle Schnittstelle betreffen, seltsam.
Art,Name und OLE Anbindung vohanden und OK , Eigenschaften und
Ereignisse der Com - NOP.
Mit einem MSCOMM.OCX gehen beide Rechner/Installationen in Ordnung.
mfg werner
Hi,
nun die Datei MCSCOMM.OCX kopierte ich in "C:\WINDOWS\SYSTEM32" bzw.
"C:\WINNT\SYSTEM32" auf dem 2000er.
In ACCESS findet man bei aktivem Datenbankfenster:
"Extras - ActiveX Steuerelemente"
Es öffnet ein Dialogfenster mit bereits regstrierten ActiveX Controlls.
Wird das gewünschte nicht gelistet gibt es die Option "Registrieren..."
Hier war der Stolperstein gestern, alias "CommX".
In einem FileSelector kann man nun auf den Pfad der gewünschten
Komponente verweisen. Also "C:\WINDOWS\SYSTEM32\MCSCOMM.OCX"
Von nun an kann man es in der ToolBox wählen und in Formularen
platzieren.
In der Entwurfsansicht von Modulen findet man nun ebenfalls einen
Verweis auf "MCS Communication Library", gecheckt.
Die Vorgehensweise ist bei ACCESS'97 und ACCESS'2000 identisch.
So habe ich es bislang bei allen benutzten ActiveX Controls gemacht.
Die VB Demo läuft auf dem XP Rechner, auf dem 2000er ist kein VB
installiert.
WINDOWS ME und 98 habe ich noch nicht getestet, bräuchte ich aber auch.
mfg werner
... wennich so lese: vielleicht missverständlich...
Auf dem XP Rechner funktioniert die VB DEMO und das ACCESS Formular mit
CommX.
Nur die Com (Port) kann in ACCESS beliebig benannt werden, wobei nur die
vorhandene funktioniert.
Konkret fehlt mir
MSCOMM.OCX MCSCOMM.OCX
BREAK ???
Sets or clears the break signal state.
COMMEVENT
Returns the most recent communication event or error. ???
SETTINGS
Sets/returns the baud rate, parity, DATABITS
data bit, and stop bit parameters. STOPBITS
parity: Odd, Even, Mark, Space, None
Parität ???
ONCOM ???
Occurs whenever the value of the
CommEvent property changes.
Ich kann das auch ohne BREAK und 9Bit Modus machen.
Ein nicht verfügbabes Port sollte aber erkannt werden können.
Sei es bereits geöffnet oder nicht existierend.
Geht das auch mit MCSCOMM.OCX
mfg werner
>Ich habe und will den extended USART des ATmega8 im>MultiProcessorCommunicationMode MPCM nutzen.>5 Slaves an einer RS232.>Im 9 Bit Modus "hört" nur der adressierte Kandidat.
was du vorhast "geht" mit der seriellen Schnittstelle des PC. Die
Betonung liegt auf geht nicht "läuft". Sowas mit einem OCX wie MSCOMM
oder MCSwieauchimmer zu machen, solltest du vergessen. Da hast du
zuwenig Kontrolle.
Prinzipiell kann man sowas in C mit mit WinAPI machen (Createfile) der
DCB muß nur entsprechend eingestellt und umgestellt werden. Die Sache
ist nur das es Probleme mit der Pufferung gibt. Ich kenne da auch
Lösungen die noch aus DOS-Zeiten stammen und die serielle Schnittstelle
direkt programmieren, die haben unter WIN9x sehr gut funktioniert unter
WIN2000/XP haben sie aber eine derart hohe CPU Belastung, daß der Aufbau
der Oberfläche nur Seeeeehhhhhr langsam vonstatten geht(bei 9600 Baud).
Das Problem läßt sich einfach umgehen. Ein z.B.ATMEGA162 kommuniziert
mit dem Rest im 9bit Modus, zum PC kommuniziert er mit 8Bit und höherer
Baudrate als Gateway.
Zu deinem Lizenzproblem:
MSCOMM.OCX ist Bestandteil der VBRuntime, die kann man offiziell beim
Hersteller runterladen.
Wenn du trotzdem nicht ruhig schlafen kannst, besorg dir ein VB6.
Findest du wahrscheinlich in der Mülltonne hinter irgendeiner
Softwarebude weil die inzwischen VB.Net einsetzen.
Das du Win9x unterstützen willst ist sehr löblich, immerhin bietest du
länger Support als der Hersteller des Betriebssystems. Solltest du dies
irgendwann nicht mehr tun, kannst du dir auch eine Komponente in VB.Net
schreiben die den Seriellen Port kapselt.
Hi, danke für Deinen Beitrag.
Die CPU Belastung hält/hielte sich in Grenzen.
Die Slaves "reden" nur wenn sie gefragt werden, das geht auch im 9Bit
Modus nicht anders. So weiss ich genau wann der PC "hören" muss.
Der Transfer beschränkt sich auf maximal 5 Bytes zum- und 5 Bytes vom
Slave. Die Baudrate ist 38400Baud, alle Slaves müssen vom PC UND
voneinander galvanisch getrennt sein.
Da die Slaves Spannungen regeln möchte ich die, die es nicht angeht
möglichst wenig stören
Mit MSCOMM.OCX finde ich eine andere Merkwürdigkeit:
Die Migration von 2003 > 2000 > 97 geht nicht?
MSCOMM ist in der jeweils älteren Variante ein Object ohne Inhalt.
Anders herum geht das ? 97 > 2000 > 2003
Nur ACCESS'97 hat die unbequemste Entwicklungsumgebung.
Warum diese alten Kisten? Es sollen betagte und alte Rechner für mein
Projekt einsetzbar sein, dafür reichen sie allemal
http://www.razyboard.com/system/morethread-wrdkasoftware-wiesollichnurheissen-1542505-3796612-0.html
mfg werner
P.S. Ich weiss nicht ob das neu ist, ich habe es so noch nie gesehen ...
'-----------------------------------------------------------------------
---
'name : GetNBytes
'copyright : (c) 2007, Werner Braun
'purpose : WRD (testing)
'micro : PC MS ACCESS / VB
'suited for demo : yes , only
'commercial addon needed : no
'version : ZERO , to be changed without notice
'-----------------------------------------------------------------------
---
'Funktion zur Übernahme von N Zeichen vom MICRO8
'Typischer Aufruf: String = GetNBytes (4)
'Ausgabe: String N Bytes lang
' Leerstring bei TimeOut
Option Compare Binary
Option Explicit
Public Function GetNBytes(n As Integer) As String
Dim strTemp As String
Dim intTemp As Integer
GetNBytes = ""
intTemp = 0
While Len(GetNBytes) < n And intTemp < 500
strTemp = Forms!Hauptformular.ComPort.Input
If strTemp <> "" Then
GetNBytes = GetNBytes + strTemp
intTemp = 0
End If
intTemp = intTemp + 1
Wend
If Len(GetNBytes) < n Then GetNBytes = ""
' TimeOut , ...
End Function
... funktioniert aber cool.
Hallo,
ich habe ebenfalls versucht mcscomm in Einsatz zu bringen - allerdings
ohne Erfolg.
Ich arbeite mit Access und habe VB nicht installiert, deshalb war es mir
nur begrenzt möglich die Beispiele vom Hersteller anzuschauen. Andere
Beispiele oder eine kurze Gebrauchsanleitung habe ich nicht gefunden.
Ich wollte mit mcscomm nur eine Ausgabe auf einen Etikettendrucker
machen. Dies hat aber nicht funktioniert, nach einigen Etiketten kam es
zum Datenüberlauf, ich habe alles versucht aber keine Lösung gefunden.
Der Drucker ist auf DTR eingestellt, ich habe es auch mit XON-XOFF
versucht, aber ebenfalls ohne Erfolg.
Mir ist nicht klar wie ich bei mcscomm nach dem Senden der Daten
abfragen kann ob es erfolgreich war und dies gegebenenfalls wieder holen
kann.
Auch die Parameterübergabe konnte ich nur erahnen weil es keine
Dokumentation gibt und die Beispiele die für mich sichtbar waren sehr
dürftig sind.
Ich habe mcscomm entfernt und mache es wieder auf die unelegante Weise,
aber diese funktioniert wenigstens.
Ich hatte es wie folgt programmiert:
'Port.PORTNAME = "\\.\" & Mid(Druck, 1, 4)
'Port.COMPORT = Mid(Druck, 4, 1)
'Port.BaudRate = 9600
'Port.DATABITS = 8
'Port.StopBits = 1
'Port.HWFLOW = 0
'Port.SWFLOW = 0
'Port.INPUTTIMEOUT = 200
'Port.OUTPUTTIMEOUT = 500
'Port.ENABLEDTRONOPEN = -1
'Port.Open
'Port.SEND (Ausgabe)
'Port.Close
Dieser Routine habe ich aus dem Druckprogramm aufgerufen.
Ich habe bei den Parametern auch andere Varianten getestet - auch
vergebens.
Weiß vielleicht jemand ob sowas mit mcscomm überhaupt funktioniert -
oder habe ich nur einen wichtigen Parameter vergessen?
Ich gespannt welche Erfahrunge andere damit machen.
mfg
Erwin