Forum: PC-Programmierung Wie stelle ich ein Virituelen COM-Port bereit?


von Alex W. (a20q90)


Lesenswert?

Hallo,

ich möchte mir ein Programm in VB schreiben. Zielplattform wird Windows 
Mobile sein. In der Applikation muss ich eine COM-Schnittstelle für ein 
anderes Programm bereitstellen. Dieses Programm wertet normalerweise 9k6 
RS232 aus. Da ich aber ein GSM-Modem dazwischen habe, möchte ich eine 
Datenverbindung über das andere Programm aufbauen und weitergeben.

Wie mach ich das nun?

COM ansprechen geht bereits! Aber ein COM erzeugen?

Grüße
Alex

von R. M. (rmax)


Lesenswert?

Schau Dir mal com0com an:
http://com0com.sourceforge.net/

von Alex W. (a20q90)


Lesenswert?

Hi Reinhard,

leider ist das in C (C++)!

von *.* (Gast)


Lesenswert?

Windows-Kerneltreiber schreibt man üblicherweise in C

von R. M. (rmax)


Lesenswert?

@Alex: Ist doch egal, in welcher Sprache das geschrieben ist, Du mußt es 
ja nur installieren und ausführen, nicht daran programmieren.

Es stellt Dir paarweise verbundene virtuelle COM-Ports zur Verfügung. 
Den einen öffnest Du mit dem existierenden Programm, den anderen mit 
Deinem VB-Programm und schon können die beiden miteinander reden. 
Zusätzlich muß das VB-Programm natürlich den Port zum GSM-Modem öffnen 
und bei Bedarf die Daten zwischen den beiden Ports hin- und 
herschaufeln.

Angenommen das Modem hängt an COM1 und die beiden virtuellen Ports 
heißen COM2 und COM3, dann sehen die Verbindungen aus Sicht Deiner 
Programme so aus:
1
GSM-Modem - COM1 - VB-Programm - COM2 - COM3 - Applikation

von Alex W. (a20q90)


Lesenswert?

Ahh jetzt kapier ichs^^

Ok, jetzt ist nur die Frage wie ich das auf einem Windows Mobile 
5-System zum laufen bekomm!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Vermutlich gar nicht, weil Windows CE (oder "Mobile") etwas vollkommen 
anderes ist als Windows NT/2000/XP/Vista. Da dürfte auch die 
Devicetreiberarchitektur anders aussehen.

Sicher, man könnte probieren die com0com-Sourcen mit einem CE-DDK zu 
übersetzen, vielleicht geht's ja.

Aber ohne einen Treiber für Windows CE / Mobile geht das definitiv 
nicht; "normale" Windows-Treiber sind nicht binärkompatibel (alleine 
schon deshalb, weil die meisten CE/Mobile-Geräte keine x86-CPUs 
einsetzen).

von Alex W. (a20q90)


Lesenswert?

Hmm, dann hab ich wohl :

> Zielplattform wird Windows Mobile sein.

umsonst hingeschrieben und bin wieder am Anfang meines Problems... :-(

von R. M. (rmax)


Lesenswert?

Alex W. wrote:
> Hmm, dann hab ich wohl :
>
>> Zielplattform wird Windows Mobile sein.
>
> umsonst hingeschrieben und bin wieder am Anfang meines Problems... :-(

Sorry, das hatte ich überlesen.

Aber beschreibe doch Dein eigentliches Problem mal etwas umfassender, 
vielleicht gibt es ja noch eine andere Möglichkeit, das zu erreichen, 
was Du willst.

von Christian R. (supachris)


Lesenswert?

Hm, bei den PDA-Navi-Fuzzis gibts doch so nen Programm, was einen 
Hardware-COM-Port auf 2 virtuelle aufteilt. Das wäre ein Ansatzpunkt. 
Schau mal bei Navifriends.

von Alex W. (a20q90)


Lesenswert?

Hi,

also ich habe bei mir daheim eine Steuerung mit einem GSM-Modem. Diese 
Steuerung kann ich mittels anderem GSM-Modem + Steuerhardware über das 
GSM-Netz fernsteuern. Mein PDA-Handy (Windows Modile 5) hat ja bereits 
ein GSM-Modem eingebaut. Die Software die ich habe, läuft schon per 
Direktverbindung. Allerdings brauch ich eine "Zwischensoftware" die 
diese GSM-Verbindung aufbaut und eine COM-Schnittstelle bereitstellt auf 
die das Steuerprogramm aufbaut.

So siehts im Moment aus :

Steuerung - Hardwareadapter - GSM-Modem   = GSM-Netz =  GSM-Modem - 
Hardwareadapter - PC-Software / PDA-Software

So möchte ich es :

Steuerung - Hardwareadapter - GSM-Modem   = GSM-Netz = GSM-Modem im 
PDA-Handy - Wählsoftware - PDA-Software

Also der Hardwareadapter auf PC-Seite möcht ich durch Software ersetzen

von Claude S. (claudeschwarz)


Lesenswert?

Warum nicht über den GSM Mux Layer (GSM 07.10)? Sollte dein PDA-Handy 
eigentlich haben. Der Mux Layer bietet dir die Virtuellen COM Ports dann 
an (Wie viele davon hängt von der GSM Engine in deinem PDA-Handy ab). 
Habe sowas mal für ein embedded Linux Gerät gemacht, so konnte ich 
parallel zu einer GPRS Verbindung noch eine Analog Einwahl 
bereitstellen. Es sollte eigentlich damit auch möglich sein auf einem 
der Virtuellen COM Ports (nennt sich DLC im Mux Layer) eine Verbindung 
aufzubauen und die einem anderen Virtuellen COM Port zu übergeben. Hab 
mal irgendwo gelesen das der Mux Layer schon Bestandteil von Windows 
Mobile sein soll.

von Alex W. (a20q90)


Lesenswert?

Kann ich nicht benutzen, da ich zum Datenstrom vom Programm etwas 
verändern muss!

Eigendlich muss ich nur wissen wie ich einen COM-Port in VB bereit 
stelle!
Zielplattform ist Windows Mobile 5

von Ralf (Gast)


Lesenswert?

> Eigendlich muss ich nur wissen wie ich einen COM-Port in VB bereit stelle!
Ich kenne mich mit Win CE / Win Mobile nicht aus, auf einem normalen PC 
hat man die serielle Schnittstelle bis VB Version 6 mittels dem 
MSCOMM-Steuerelement öffnen können, für .NET gibts ne eigene integrierte 
Klasse (ab FrameWork-Version 2.0). Zugriff ist auch unter FW1.1 möglich 
(zumindest in C#), dafür muss dann halt ein Fetzen Code her.

Ralf

von Christian R. (supachris)


Lesenswert?

Richtig lesen! Er will keinen vorhandenen COM-Port öffnen, sondern eine 
virtuelle serielle Schnittstelle selbst erzeugen. Sowas wie Com-0-Com 
halt.

von joh! (Gast)


Lesenswert?

Für Windows Mobile (und auch Windows CE) gibt es ein kostenloses SDK von 
Microsoft, welches sich in Visual Studio einbindet. Für Windows Mobile 6 
benötigt man zur Programmierung allerdings Visual Studio 2005.
Außerdem wird ein .NET-Framework 2.0 und ggf. ein Windows Mobile 
6-Emulator benötigt, um die Software auf einem virtuellen Windows Mobile 
am PC zu testen/debuggen.

Falls die oben genannte Software nicht gefunden wird, kann ich gerne das 
komplette Paket zur Verfügung stellen.

Gruß

von Frank (Gast)


Lesenswert?

Nochmal eine Frage zum besseren Verständnis:

- du willst einen virtuellen COM-Port im System, ok

Was soll eigentlich am anderen Ende der virtuellen "Leitung" sein? 
Virtuelle COM-Ports setzt man ja typischerweise ein, um älterer Software 
das Vorhandensein echter COM-Ports vorzutäuschen. In Wirklichkeit 
wandern die Daten dann über eine IP- oder USB-Verbindung ...

Frank

von Alex W. (a20q90)


Lesenswert?

Frank wrote:
> Nochmal eine Frage zum besseren Verständnis:
>
> - du willst einen virtuellen COM-Port im System, ok
>
> Was soll eigentlich am anderen Ende der virtuellen "Leitung" sein?
> Virtuelle COM-Ports setzt man ja typischerweise ein, um älterer Software
> das Vorhandensein echter COM-Ports vorzutäuschen. In Wirklichkeit
> wandern die Daten dann über eine IP- oder USB-Verbindung ...
>
> Frank

Ok ich versuch es nochmal :

ich habe ein Programm X. Dies hat nur eine COM-Verbindung 
(Direktanschluss an Hardware über COM)

Da ich aber ein Zusatzprogramm brauche, auf das Programm X über COM 
zugreiften kann, muss ich einen künstlichen COM erstellen.

Das Zielsystem ist Windows Mobile.

von *.* (Gast)


Lesenswert?


von Alex W. (a20q90)


Lesenswert?

*.* wrote:
> http://www.google.de/search?q=windows+mobile+virtual+com+port

Das nützt rein garnichts, da ich in einem VB-Programm es bereitstellen 
muss!

Ich suche kein Programm, sondern einen VB-Code!

von *.* (Gast)


Lesenswert?

VB kann das einfach nicht! Das ist ein Gerätetreiber.

von juppi (Gast)


Lesenswert?


von Frank (Gast)


Lesenswert?

VB kann keinen virtuellen COM-Port erzeugen, aber dafür TCP-Sockets. Und 
es gibt massenhaft (freie) COM-TCP-Redirectoren. Also erstellst du mit 
so einem Tool ein Pärchen aus COM-Port und TCP-Socket. An letzerem 
dockst du dein VB-Programm an und schon kannst du mit der Software am 
COM-Port "reden" ...

Frank

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> Und es gibt massenhaft (freie) COM-TCP-Redirectoren.

Für Windows Mobile (Windows CE)?

Das ist trotz des Namens mit dem Windows, das auf PCs läuft, eher 
entfernt verwandt.

von Alex W. (a20q90)


Lesenswert?

Ah Ihr habt mir einen guten Hinweis gegeben!

Ich habe schon mal eine Applikation für WM5 programmiert welche Daten 
über TCP bzw UDP versendet. Also könnte ich einen "Viritual COM zu TCP - 
TCP zu Viritual COM"-Verbindung aufbauen auf die meine App und die 
eigendliuche App zugreift. Hmm, muss ich mal versuchen!

Aber für WinCE (WM5) wird es so keine geben.. muss ich mal suchen

von Ralf (Gast)


Lesenswert?

Wäre das hier evtl. auch brauchbar?
http://www.eltima.com/products/virtual-serial-port-mobile/

Ralf

von Ralf (Gast)


Lesenswert?

Hier wär auch noch was:

http://franson.com/

Ralf

von Alex W. (a20q90)


Lesenswert?

Hi Ralf,

danke für die Links! Leider kosten die Programme und sind nicht mit 
Quellcode erhältlich!

von Ralf (Gast)


Lesenswert?

> danke für die Links! Leider kosten die Programme und sind nicht mit
> Quellcode erhältlich!
Also, kostenlos so etwas zu erwarten, halte ich für unmöglich. Aber 
erstens sind 40 Euro m.E. nicht viel (für die SingleUser License), ohne 
SourceCode natürlich, und du kannst es doch verwenden, weil die Trial 
Version ja nur soweit beschränkt ist, dass du nur 100kB pro Session 
senden/empfangen kannst. Wenn du die voll hast, dann machst du halt ne 
neue Session.

Natürlich gibts Quellcode, steht ja bei "Purchase", du musst halt 
nachfragen.
Vielleicht gibts ja auch die Möglichkeit, dass du den SourceCode für 
private Zwecke verwenden darfst.

Ich muss gestehen, dass ich jetzt nicht nochmal den ganzen Thread lesen 
will, wo hast du erwähnt, dass du auf einmal auch noch die Sourcen 
willst? Der Ursprungsbeitrag war ja nur der Wunsch nach dem Erzeugen 
eines VCP.
Wofür brauchst du denn noch die Sourcen?

Ralf

von Alex W. (a20q90)


Lesenswert?

Ralf wrote:
>  wo hast du erwähnt, dass du auf einmal auch noch die Sourcen
> willst? Der Ursprungsbeitrag war ja nur der Wunsch nach dem Erzeugen
> eines VCP.

Ja sorry ist wohl aus meinem allerersten Post nicht hervorgegangen! 
Eventuell habe ich es unverständlich formuliert! Hätte auch erwähnen 
sollen was VB ist!

>ich möchte mir ein Programm in VB schreiben. Zielplattform wird Windows
>Mobile sein. In der Applikation muss ich eine COM-Schnittstelle für ein
>anderes Programm bereitstellen.

VB ist eine Programmiersprache bzw ein Teil von Visual Studio 
(Hersteller ist Microsoft). In VB kann man Programme schreiben. Der Code 
(bzw Dialekt) mit dem der Benutzer in VB die Befehle umsetzt nennt sich 
Basic. Das ist der Quellcode oder auch Sourcecode genannt. Da ich in 
meinem VB-Programm einen VCP erzeugen möchte, und nicht weis wie das 
geht, benötige ich somit den Sourcecode dafür!

Grüße
Alex

von R. M. (rmax)


Lesenswert?

Alex W. wrote:
> Da ich in meinem VB-Programm einen VCP erzeugen möchte,
> und nicht weis wie das geht, benötige ich somit den
> Sourcecode dafür!

Das ist gleich in mehrfacher Hinsicht ein Trugschluß:

1. Wie andere bereits mehrfach gesagt haben, können nur Treiber einen 
(virtuellen) COM-Port bereitstellen und Treiber kann man nicht in VB 
programmieren.

2. Um "zugekaufte" Funktionalität in einem eigenen Programm nutzen zu 
können, muß man davon nicht unbedingt den Quellcode haben, es reicht 
eine Bibliothek (DLL), die man vom eigenen Programm aus ansprechen kann. 
Mit VB kann man auch in C implementierte DLLs ansprechen.

3. Für VSPD (wie auch com0com) brauchst Du zur Benutzung weder den 
Quellcode noch eine Bibliothek, denn es stellt Dir Paare von COM-Ports 
zur Verfügung, die sozusagen über ein virtuelles Nullmodemkabel 
verbunden sind. Damit braucht also nicht Dein VB-Programm selbst den 
COM-Port zu "produzieren", sondern Du öffnest einfach mit dem 
VB-Programm die eine Seite und mit dem anderen Programm die andere Seite 
so eines verbundenen COM-Port-Paars, und hast genau das, was Du 
brauchst.

von Ralf (Gast)


Lesenswert?

> Ja sorry ist wohl aus meinem allerersten Post nicht hervorgegangen!
> Eventuell habe ich es unverständlich formuliert! ...
Macht ja nix, jetzt sind wir ja alle auf neuestem Stand :)

> ... Hätte auch erwähnen sollen was VB ist!
> VB ist eine Programmiersprache bzw ein Teil von Visual Studio
> (Hersteller ist Microsoft). In VB kann man Programme schreiben. Der Code
> (bzw Dialekt) mit dem der Benutzer in VB die Befehle umsetzt nennt sich
> Basic. Das ist der Quellcode oder auch Sourcecode genannt. Da ich in
> meinem VB-Programm einen VCP erzeugen möchte, und nicht weis wie das
> geht, benötige ich somit den Sourcecode dafür!
grins Danke, aber das wusste ich, ich hab vor meinem Umstieg auf C# 
auch VB gemacht ;)

Ansonsten kann ich mich (bis auf weiteres) erstmal nur dem Beitrag von 
Reinhard Max anschließen.

Ralf

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.