You are here

Virtuális COM Port elérése Windows 7 alatt (remélem, hogy megoldva !)

7 posts / 0 new
Last post
zus
zus picture

Helló ! Akadt egy kis problémám a címben megjelölt témában és ehhez kérek segítséget programozáshoz normálisan értő embertől.

Delphi 7-ben kellene leprogramozni az alábbi problémát: egy USB mérésadat gyűjtő eszközt kell elérni és abból a mérési adatokat kiolvasni egy Win 7-es komputeren. Az USB eszköz drivere az fel van installálva rendesen és egy virtuális COM portként (COM3) jelenik meg az Eszközkezelőben a Win 7 alatt (a gépen egyébként nincs fizikai COM port, de ha lenne se tudnék vele mit kezdeni).

A sima COM port beolvasása az menne, azzal nincs gond. A VIRTUÁLIS COM port elérésével van gondom. Próbáltam már pár programot, amik állítólag az USB eszköz drivere által képzett virtuális COM portot tudják olvasni, irányítgatni ide-oda, hogy elérhető legyen egy "hagyományos" terminálablakkal (és így egy normális COM portot olvasó progival), de egyik se működött. Egyik sem látta a virtuális COM3-at vagy ha mégis, akkor meg a terminál progi (ami tisztességes COM porttal kifogástalanul működik) nem látta a COM3-at vagy az átiránytott COM portot nem tudta olvasni. Sebesség, adat paraméterek mind beállítva az USB eszközhöz.

Érdekelne tehát két lehetőség:

1. Olyan forráskód, dll vagy unit, amivel direktben el tudom érni az USB portot és tudom olvasni. Soros, karaketeres adatok lennének, semmi extra. Csak olvasni kéne.

2. Egy olyan közbenső lehetőség (unit, forráskód, dll, akármi), amivel el tudom érni a virtuális COM3-at úgy, hogy az tisztességgel megjelenjen előttem és olvasni is tudjam (ne csak az Eszközkezelőben emberkedjen).

Nekem az lenne a legjobb, ha dirktben a Delphi 7-ből tudnám elérni a virtuális COM3-at, de az is megfelelne, ha EGYSZERŰ kerülő úton menne. A lényeg: hogy adatokat tudjak kiolvasni az USB mérésadat gyűjtőből.

A mérésadat gyűjtő gép drivere nem tudom, hogy miféle: FTDI, PL2303, CP210x vagy bármi más. Driver, élő és ennyi. Az ötletekben ÉLŐ, MŰKÖDŐ ötletekre van szükségem, nem feltételezésekre. Abból nekem is van bőven.

Ja és gugli nekem NEM a barátom, javarészt baromságokkal és üzleti találatokkal bombázott.

Köszönöm a segítséget.

Comments
zus
zus picture

Uraim, istenek vagytok ! Az általatok felsorolt stációkon nekem is sikerült már azóta átmennem (kivéve az mscomm32.ocx-et). Minden egyes USB portnál más lesz a virtuális COM port száma és valóban megszólítható síma COM rutinokkal. Éles ésszel rájöttem arra is, hogy az USB-s gépemhez fel kell installálni a SAJÁT VCP DRIVERÉT IS !!!! Nem csak a "kopasz" drivert, ami után az Eszközkezelőben eltűnik az ismeretlen eszköz titulus és a rendszer a helyén tudja kezelni az adatgyűjtőmet.

Ez tévesztett meg ! Gondoltam, hogy annyi is elég, ha a saját driverét feldobom a gépre. Nem szemetelem mással össze a winfost, az amúgy anélkül is elég sz@r. Így viszont csak bizonyos progik látták a mérésadat gyűjtőmet, mások nem ! Aztán találtam hozzá valéahol egy "blablabla_vcpDriver_mindenféleszámok.exe" file-t. Rákerestem a neten, hogy mi a thewkewm lehet az a VCP Driver és láss csodát ! A VCP Driver az a mérésadat gyűjtő saját Virtual COM Port Driver-e. Kísérletképpen ezt is feldobtam és aztán jött a meglepetés: egy driver jelent meg az Eszközkezelőben, COM akármennyi számmal a mérésadat gyűjtőm Virtuális COM drivereként. Azt meghívva a Realterm-ben már szépen jöttek is az adatok, ahogy kell. Csak arra kell figyelnem, hogy ha az USB portok között cserélgetem az eszközt, akkor a virtuális com driver száma más lesz (USB portonként ugyanaz marad, csak másik USB-be dugva a cuccost változik meg a virtual com port száma).

Így véstem gyorsan egy változtatható COM számmal beállítható kis progit Deplhi 7-ben, amivel a rendszer működését tesztelem. Most már majd le tudom programozni a mérési adat gyűjtését. Köszi a segítséget mindenkinek.

0

Inhouse
Inhouse picture
*

Örülök, hogy jó lett. Én írtam egy olyan változatot, ahol keresi, hogy melyikkel tud kapcsolódni és ahol sikeres, azon veszi az adatokat. Persze a COM1-2 kimarad és utána. Ha nincs más feldugva, akkor nem kell keresni, hogy melyiket kapta éppen.

0

ty
ty picture

Alapvetően hibás a megközelítés. Senkit nem érdekel, hogy a COM port virtuális. Attól az még COM port és eszerint kell kezelni.
pl. virtual COM port száma COM27,
RealTerm-ben megnyitod a COM27-et és látod az adatot amit az eszköz küld.
Ha nem küld semmit, akkor nem jön semmi adat.
Ha lekérdezést kell küldeni az adatgyűjtőnek, írsz a RealTerm-el a portra, majd jön a válasz.

Ha ezt a részét már érted, működik, D7-hez tudok adni COM port komponenst, meg segítséget.
 

0

lcsaszar
lcsaszar picture
*

Szia!

Ha megjelenik az Eszközkezelőben, akkor be tudod állítani ugyanott a COM port számát és egyéb paraméterei. Ezután ugyanerre a COM portra hivatkozva meg tudod nyitni putty-ból, TeraTerm-ből, vagy amit szeretsz használni.

Üdv, lcsaszar
 

0

Inhouse
Inhouse picture
*

Szia!

Én egy Lancol akkuteszterrel szórakoztam, de simán láttam az adatokat pl. az Arduino teminal ablakában is, meg bármi másban is... Írtam rá egy Harbour-os kiolvasó programot (egy soros kommunikációs példa program alapján) és működött. A virtuális COM portok szoktak mászkálni is, nem minden csatlakozásnál ugyanazt a portszámot kapják. De pl. van egy gyűjtős vonalkód olvasónk, azt meg kell szólítani és arra válaszol csak, a Lancolnál, meg ha megnyomod a menüben a printet, akkor már dumál is a porton. Tudni kéne, hogy a te eszközöd milyen megoldású.

0

PushyG
PushyG picture

Üdv!

Azt gondolom, a megoldás az MSCOMM32.OCX lesz. Ez nem része az op.rendszernek, külön kell megszerezni és feltelepíteni.
másképp kell felrakni 32 és 64 bites rendszer alá. Be kell másolni a system32 (64-nél a syswow64-be is) és ki kell adni a regsvr32 mscomm32.ocx (64-nél a regsvr32 c:\windows\syswow64\mscomm32.ocx is) parancsot.
Ezután scriptben tudod paraméterezni a virtuális com portot:
set MSComm=CreateObject("MSCOMMLib.MSComm")
MSComm.CommPort=1 (vagy ami a port száma)
MSComm.Settings="19200,n,8,1" (vagy ami kell)
MSComm.Handshaking=1

Kb. ennyit tudok róla én is. Nekem is úgy mutatták meg, amikor egy USB-soros átalakítóval kellett adatcsomagokat továbbítani olyan eszköznek, ami egyébként rühelli a virtuális soros portokat.
Ezzel viszont probléma nélkül működött...

Gábor

0