Forum: PC-Programmierung COM Port öffnet sich nicht im Visual Basic


von Falk B. (falk)


Lesenswert?

Hallo Allerseits,

ich hab hier Windows XP mit einem nicht ganz taufrischen Visual Basic 
6.0.
Naja, ist halt so.
Ich will mit dem seriellen Port kommunizieren, dazu nutze ich XMCommCRC, 
die frei Version von MSComm32.

Geht aber NICHT! Ich kann keinen von COM1-COM16 öffnen. Im System hab 
ich einen virtuellen COM-Port von einem FT232. Normale Terminalprogramme 
laufen problemlos!

Was ist das faul?

MFG
Falk

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Dein hier nicht geposteter Quelltext enthält in Zeile 42 einen 
Zuweisungsfehler.

von Peter (Gast)


Lesenswert?

>dazu nutze ich XMCommCRC, die frei Version von MSComm32.

Den Quatsch brauchst Du nicht! Öffne einfach eine Datei mit dem Namen 
"Com1", "Com2", "Com3", "LPT1" etc. mittels dem OPEN #xy Kommando (am 
besten Binary Read_Write) dann lese+schreibe auf diese Datei... That's 
it!

von Einhart P. (einhart)


Lesenswert?

Moin Falk,

was spricht gegen mscomm32? Damit habe ich eigentlich kein Problem.

Gruß
Einhart

von Volker Z. (vza)


Lesenswert?

Falk Brunner schrieb:
> Was ist das faul?

Faul ist das Du keine Fehlermeldung(Fehlernummer) und kein Quelltext 
zeigst.

Möchtest du hier ein Ratequiz eröffnen?

von Falk B. (falk)


Lesenswert?

@  Einhart Pape (einhart)

>was spricht gegen mscomm32?

Die Tatsache, dass weiß der Geier warum die in meinem Visual Basic nicht 
drin war. Und wenn man eine aus dem Internet runterlädt und nutzen will, 
meckert es wegen angeblich nicht vorhandender Lizenzen rum. Da soll es 
wohl auf diversen neueren Developer CDs eine .reg Datei geben, die das 
per Registry Einträgen patcht. Hab ich aber nicht, auch nicht gefunden, 
weil wohl offiziell nicht frei verfügbar.

@  Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite

>Dein hier nicht geposteter Quelltext enthält in Zeile 42 einen
>Zuweisungsfehler.

Jaja ;-)

Ich hab das Beispiel von einer Seite genommen, das COM1-16 abklappert. 
Immer ist ERROR <>0 :-(

http://www.activevb.de/tutorials/tut_com/com.html

@  Peter (Gast)

>>dazu nutze ich XMCommCRC, die frei Version von MSComm32.

>Den Quatsch brauchst Du nicht! Öffne einfach eine Datei mit dem Namen
>"Com1", "Com2", "Com3", "LPT1" etc. mittels dem OPEN #xy Kommando (am
>besten Binary Read_Write) dann lese+schreibe auf diese Datei... That's
>it!

Soll mir recht sein, wenn das auch geht. Hast du ein Beispiel dafür, man 
muss ja auch die Baudrate etc. einstellen.

MFG
Falk

von Einhart P. (einhart)


Lesenswert?

Das mit dem gelegentlichen Lizengemecker hatte ich auch bei einigen 
Rechnern. Die .reg-Datei hat dann geholfen.

Gruß
Einhart

von Falk B. (falk)


Lesenswert?

@  Einhart Pape (einhart)

>Das mit dem gelegentlichen Lizengemecker hatte ich auch bei einigen
>Rechnern. Die .reg-Datei hat dann geholfen.

Hab ich aber nicht, auf der CD ist sie nicht. Ist ne aaalte VB6.0.

von Einhart P. (einhart)


Lesenswert?

Hast du aber doch ;-) nur nicht gefunden PM

von Falk B. (falk)


Lesenswert?

Also, ich hab mal probiert.

Wenn man den COM Port als Datei per Open öffnet kann man schreiben. 
Allerdings scheint es nicht möglich zu sein, dabei die Einstellungen zu 
ändern, ala

Open "COM4,9600,N,8,1"

Hat nicht funktioniert, es wird nur die im Windows vereinbahrte 
Standardeinstellung genutzt. Oder kennt jemand die richtige Syntax?

Der zweite Versuch mit der originalen MSComm ging soweit, als dass mir 
ein Vögelchen ein Liedchen gezwitschert hat, worauf die bösen 
Lizensgeister verschwunden sind. Dennoch ist ein COM-Port Zugriff immer 
noch nicht möglich, genauso wie mit dem XMCommCRC. :-(

Was kann Visual Baisc daran hindern? Zugriffsrechte unter XP? Mein 
User-Account ist eingeschränkt, aber auch mit Adminrechten geht es 
nicht.

Firewall? Glaub ich nicht am COM-Port.

Virenscanner? Avira? Hmm?

MSComm inkompatibel mit virtuellen UARTs bzw. deren Treibern?

Was sonst?

MFG
Falk

von Einhart P. (einhart)


Lesenswert?

Hallo Falk,

ich hatte dir heute morgen eine Mail mit einem Codebeispiel geschickt. 
Dein Code mit if Error ... funktioniert bei mir auch nicht.

Gruß
Einhart

von Falk B. (falk)


Lesenswert?

@ All

Hier des Rätsels Lösung.

Mein Quelltext ist der, "eigentlich" aus einem Tutorial kopiert.

1
Private Sub CONNECT_Click()
2
   Dim i As Integer
3
     'If CONNECT.Caption = "&Connect" Then
4
         'MSComm1.CommPort = COM_SEL.ListIndex + 1
5
       For i = 1 To 16
6
       MSComm1.CommPort = i
7
       On Error Resume Next
8
       MSComm1.PortOpen = True     ' Port oeffnen, ohne Abbruch bei Fehler
9
         If Error = 0 Then           ' Port available
10
           CONNECT.Caption = "&Disconnect"
11
           COM_SEL.Enabled = False '
12
           MsgBox "COM " + Str(i) + " available!"
13
       Else
14
           MsgBox "COM " + Str(i) + " not available! Error code"
15
       End If
16
       MSComm1.PortOpen = False
17
       Next
18
   'Else        ' close port
19
    '   XMCommCRC.PortOpen = False
20
     '  CONNECT.Caption = "&Connect"
21
     '  COM_SEL.Enabled = True
22
   'End If
23
End Sub

Der Einhart hat mir die Lösung geschickt. Diese Zeile

1
If MSComm1.PortOpen Then

Aber wieso steht es dann falsch in dem Tutorial? Jaja, man soll nicht 
alles glauben was im Internet steht, aber eine SOOO einfache Sache 
falsch machen?
Hmmm.

http://www.activevb.de/tutorials/tut_com/com.html

AHHHHHH, ICH DEPP!!!!!

Dort steht

If Err = 0 Then

Ich hab da irgendwie ein

If Error = 0 Then

draus gemacht. Und wie es scheint liefert der Vergleich mit einer nicht 
deklarierten Variable immer False.

ARGGGGGGGGGGHHHHHH

Naja, wenigstens geht es jetzt.

Nochmal vielen Dank an Einhart, der mir zweimal zu 100% geholfen hat!

MFG
Falk

P S Und ich schreibe jetzt 100 mal. Man soll Beispielquelltext immer zu 
100% kopieren und nicht abschreiben! :-0

P P S To err is human ;-)

von VB6.0 (Gast)


Lesenswert?

Falk Brunner schrieb:
> AHHHHHH, ICH DEPP!!!!!
>
> Dort steht
>
> If Err = 0 Then
>
> Ich hab da irgendwie ein
>
> If Error = 0 Then
>
> draus gemacht. Und wie es scheint liefert der Vergleich mit einer nicht
> deklarierten Variable immer False.


Hallo,

dafür gibt es in VB die "Option Explicit" . Damit wäre dieser Fehler 
sofort aufgefallen...

Gruss Gast

von Anfänger (Gast)


Lesenswert?

Schau dir mal die RSAPI.DLL an, funktioniert wunderbar und ist 
erklärt... (falls es noch aktuell ist o der mal Probleme auftauchen)

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
Noch kein Account? Hier anmelden.