MCSComm mcscomm.ocx ActiveX RS232

Hallo,

ich möchte mit mcscomm eine Ausgabe auf einen Etikettendrucker
machen. Dies funktioniert aber nicht richtig, nach einigen Etiketten kommt es zum Datenüberlauf und der Drucker geht auf Störung, 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 wiederholen 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.

Die Schnittstelle ist wie folgt programmiert:

Port.PORTNAME = „\.“ & Mid(Druck, 1, 4) 'Druck = z.B. Com1
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

Diese Routine wird aus dem eigentlichen Druckprogramm aufgerufen.
(wird von verschiedenen Programme verwendet).

Ich habe bei den Parametern auch andere Varianten getestet - ebenfalls ohne Erfolg.
Weiß vielleicht jemand ob sowas mit mcscomm überhaupt funktioniert,
oder habe ich nur einen wichtigen Parameter vergessen oder falsch gesetzt?

mfg
Erwin

Mir ist nicht klar wie ich bei mcscomm, nach dem Senden der
Daten,
abfragen kann ob es erfolgreich war und dies gegebenenfalls
wiederholen 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.

Hallo Erwin,

ich habe da eine Seite gefunden, mangels Ahnung was du da machen willst weiß ich gar nicht ob sie überhaupt was mit deiner Problematik zu tun hat.

Schau halt mal selbst:

http://www.zylsoft.com/zylserialportnet/ZylSerialPor…

Und RS232 ist doch die serielle Schnittstelle. Vielleicht schaust du mal bei ebay, ich weiß es gibt Bücher wie Messen, Steuern, Regeln mit PC und RS232 o.ä.

Gruß
Reinhard

Gruß
Reinhard

MCSComm oder MSComm ?

ich möchte mit mcscomm eine Ausgabe auf einen Etikettendrucker
machen.
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.

Hallo Erwin,

bist du eigentlich sehr sicher mit dem Namen?

Ich bin gewöhnt daß bei sowas im namen vorne ein „MS“ für Microsoft steht.

Du schreibst aber vorne ein „MCS“ rein.
Die Suche nach
port mscomm.ocx
bringt 8.000 Treffer, wenn auch öfters dann von mscomm32.ocx die Rede ist, aber das ist für mich mit meiner wenigen Ahnung nur eine neuere bzw. höhere Version.
Suche nach
port mcscomm.ocx
bringt nur eine Seite Treffer.

Jetzt frage ich doch mal, mit welcher IDE, Programm führst du denn diese Portzugriffe aus?

Gruß
Reinhard

Hallo Reinhard,

danke für die Mühe - der Link den Du angegeben hast habe ich bis jetzt nur mal überflogen, ich denke das er mir vielleicht weiterhilft. Zumindest hat er mit der Sache zu tun und geht ganz gewiss nicht am Thema vorbei.
Nun noch weitere Informationen.
Was ich genau machen will ist ganz einfach, ich möchte nur Etiketten drucken, auf einem Etikettendrucker der an der seriellen Schnittstelle angeschlossen ist. Dabei kommt es nach einigen Etiketten zum Datenüberlauf, offensichtlich stimmt irgendwas mit dem Protokoll nicht.
Ich meine wirklich Mcscomm - nicht MSComm.
MCSComm ist ein kostenloses ActiveX-Steuerelement das man völlig legal und kostenlos herunterladen kann. Hier der Link:
http://www.mcselec.com/index.php?option=com_docman&t…

Ich habe in anderen Beiträgen gelesen dass MCSComm sehr gut sein soll und auch bestens funktionieren soll.
Mit MSComm soll es öfter mal lizenzrechtliche Probleme geben, da ich mein Programm aber bei Kunden im Einsatz habe muß alles legal sein und auf allen Rechnern funktionieren - deswegen bin ich auf MCSComm gestoßen und würde dies gerne in Einsatz bringen.

Danke nochmals für die Hilfe!

Gruß
Erwin

Hallo Ewo,

danke für die Mühe - der Link den Du angegeben hast habe ich
bis jetzt nur mal überflogen, ich denke das er mir vielleicht
weiterhilft. Zumindest hat er mit der Sache zu tun und geht
ganz gewiss nicht am Thema vorbei.

sehr schön, von mir aus gesehen hast du irgendwas japanisches gefragt und ich fand eine chinesische Seite wo diese netten Bildchen pro Wort ähnlich aussehen :smile:

Was ich genau machen will ist ganz einfach, ich möchte nur
Etiketten drucken, auf einem Etikettendrucker der an der
seriellen Schnittstelle angeschlossen ist. Dabei kommt es nach
einigen Etiketten zum Datenüberlauf, offensichtlich stimmt
irgendwas mit dem Protokoll nicht.

Auf deinem Link sieht man daß es um VB oder VB.Net gehen könnte.
Für VB.Net gibt es ein anderes Brett.
Ich habe nur VB5.0, hab da mal geschaut, da gibt es auch „Port“, scheint aber etwas anderes zu sein, „Port“ greift auf LPT! zu, also eher ein Parallelport.

Ich habe in anderen Beiträgen gelesen dass MCSComm sehr gut
sein soll und auch bestens funktionieren soll.
Mit MSComm soll es öfter mal lizenzrechtliche Probleme geben,

Ja, ich ab die Treffer nur überflogen. Scheinbar gibt es da Lizensrechtliche Probleme mit dem von MS.
Soweit ich das in der Kürze der Zeit richtig verstanden habe, kein grundsätzliches, also es ist erlaubt das legal zu benutzen, aber in einigen Fällen kommt da wohl irgendeine LizensFehlermeldung.

Aber ist egal, wenn da jmd. eine Ersatz-ocx geschrieben hat und ins netz gestellt hat die gut funktioniert, ist ja alles in Ordnung.

da ich mein Programm aber bei Kunden im Einsatz habe muß alles
legal sein und auf allen Rechnern funktionieren - deswegen bin
ich auf MCSComm gestoßen und würde dies gerne in Einsatz
bringen.

Auf deinem Link sieht man, daß da eine Firma MCS dahintersteckt, haste die schonmal kontaktiert?

Und zum Problem zurück, kannste nicht irgendwie an den Drucker immer nur kleine Aufträge schicken wo er nicht überläuft, dann vielleicht absolut mal 2 sekunden warten, mit der API-Funktion sleep?

Absolut ist natürlich blöd aber könnte funktionieren. Besser wäre, irgendeine Rückmeldung des Druckers, des Ports auszuwerten, ob der Drucker wieder freie Kapazität hast.
So mit busy oder so.

Vielleicht wäre es für dich hilfreich, du zeigst mal den kompletten lauffähigen Code.
Dann sieht vielleicht Rainer oder andere profis wie man das Problem lösen kann auch ohne Details der Ocx zu kennen.

Danke nochmals für die Hilfe!

Hilfe? Ich nerv dich doch nur mit Fragen und zeige dir Links von denen ich gar nicht weiß was da steht :smile:

Perfekte Hilfe wäre, schreib
Port.Wunderbefehl
und das Problem wäre vom Tisch *gg*

Gruß
Reinhard

Hallo Reinhard,

hier geht es um Access XP, aber letztendlich ist alles VB.
Port hat nichts mit LPT o.ä. zu tun, diesen Name habe ich bei der Dimensionierung vergeben, ich hätte es auch Heinrich, Otto oder Anton nennen können. Ich habe das ActicX-Steuerelement wie folgt dimensioniert:

Dim Port As CommX
Set Port = CreateObject(„mcscomm.CommX“)

Es funktioniert auch soweit das er etwas auf die Seriellschnittstelle ausgibt, aber nicht ganz so wie er das soll.
Natürlich könnte ich Pausen einlegen um einen Datenüberlauf zu verhindern, aber ich hätte gerne eine sauber Lösung, ich mag solche Bastelei nicht. Und die ActivX-Steuerelemente sind ja dazu da dass man nicht Notlösungen suchen muß und basteln muß.
Außerdem möchte ich verhindern dass der Etikettendrucker wegen diesen Verzögerungen anhält. Es sind große Stückzahlen von Etiketten zu drucken, das sollte so schnell wie möglich ablaufen.
Der Datenfluß sollte von diesem Steuerelement gesteuert werden, dazu ist es ja da.

Gruß
Erwin