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
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.