You are on page 1of 28

VSPE

Thank you for using Eterlogic.com products !


See also:
General description
Virtual serial ports pinout
Usage tips and scenarios
User interface
VSPE API
Command line
Known limitations and bugs
Contacting
User license agreement.
Version istor!
"re#uentl! as$ed #uestions
Credits
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
General description
VSPE main purpose
#irtual $erial %orts emulator (#$%E) is intended to help people to deal &ith such a thing as a serial port. 'o&adays( serial ports are not used &idely anymore. The reason
is simple) it is a *uite old stuff. +odern hard&are de"ices as a rule connect to computers "ia high-speed ,$- ports and sometimes install their o&n ,s.ToCom dri"er.
$erial ports are not installed in the most of ne& note.ooks.
$o &hy &as #$%E created/
There are plenty of specific de"ices that re*uire 0$212 or 0$222 compati.le serial ports. #$%E can help de"elopers to create and de.ug applications &ithout real
hard&are installed.
Compati.ility &ith old applications. #$%E can help people to make data stream from any source (like TC% connection( ,$- port and so on) "isi.le to any program
"ia "irtual serial port.
To create a lot of "irtual serial ports &orking simultaneously. 3ou can do it &ithout installing serial ports e4tension .oard.
To share serial port for many applications.
VSPE distincti%e caracteristics
#$%E has limitations descri.ed in the Known limitations and bugs section.
!t current stage our main goals are)
To pro"ide .inary data e4change .et&een applications or de"ices.
To create original solutions. The Connector and the 5ata$plitter de"ices are o."ious e4amples of such solutions) they create C6+ ports that can .e opened more
that once.
To pro"ide easy user interface.
Product status
#$%E current status is .eta.
Product $e! features:
#irtual de"ice) connector
#irtual de"ice) data splitter
#irtual de"ice) pair
,ser mode de"ice) Tcp$er"er
,ser mode de"ice) TcpClient
,ser mode de"ice) $erial 0edirector
,ser mode de"ice) ,5% +anager
,ser mode de"ice) -ridge
%ython scripting system
487 and 487872 processor architecture support
#$%E !%9 (C:C;; header and static li.rary) for nati"e language de"elopers
#$%E !%9 %ython .indings for %ython de"elopers
#$%E !%9 C6+ interface
&e#uirements
6perating system) +icrosoft <indo&s 2000( =%( #ista
'icense
#irtual serial ports emulator pro>ect
#irtual serial ports emulator pro>ect
Page 1 of 28
10/1/2013 file:///C:/Users/Administrador/AppData/Local/Temp/~!8"1#tm
-ecause of +icrosoft ?ernel Code signing re*uirement( &e had to purchase digital signature (price is @2 per year)( that is &hy #$%E is not free&are for 72 .it platform.
Aor 12 .it platform though( #$%E is free.
Aor more detailed information please look at User license agreement.
"eedbac$
<e do appreciate all feed.acks that users send to us. 9f you ha"e found .ug or ha"e idea ho& to impro"e #$%E( please do not hesistate to contact us ($ee Contacting).
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
Virtual serial ports pinout
#irtual serial ports ha"e standard pinout
(painted in Paint)rus*
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
Usage tips and scenarios
Bere &e &ill descri.e the most popular #$%E usage scenarios.
0emem.er that you can com.ine "irtual #$%E de"ices) for e4ample( $plitter de"ice can .e connected to Connector de"ice( and at the same time the Connector de"ice
can .e e4posed to local net&ork using Tcp$er"er de"ice. To achie"e your goal you can create chains and com.ination of #$%E de"ices. Try and impro"ise.
See also:
Autorun: command line sortcut
Autorun: run as ser%ice
Splitter: Sare e+isting p!sical serial port between se%eral applications
Virtual macine integration
,etwor$ bridge
-ne.to./an! data redirection
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
Autorun: command line sortcut
9f you &ant to automatically load "irtual de"ices configuration at <indo&s startup( please follo& the steps sho&n .elo&)
$tep C.
Create configuration and sa"e it using DAile EF $a"e as...D command. 0emem.er config file location (for e4ample it can .e c):config."spe)
$tep 2.
Create &indo&s shortcut. 9f you ha"e installed #$%E at default location (DC)G%rogram AilesGEterlogic.comG#irtual $erial %orts EmulatorD) shortcut parameters must
.e as sho&n .elo&)
Target) DC)G%rogram AilesGEterlogic.comG#irtual $erial %orts EmulatorG#$%Emulator.e4eD .minimi0e .ide1splas c:2config.%spe
$tart in) DC)G%rogram AilesGEterlogic.comG#irtual $erial %orts EmulatorD
#irtual serial ports emulator pro>ect
#irtual serial ports emulator pro>ect
#irtual serial ports emulator pro>ect
Page 2 of 28
10/1/2013 file:///C:/Users/Administrador/AppData/Local/Temp/~!8"1#tm
$tep 1.
+o"e created shortcut to the D$tart +enuG%rogramsG$tartupD folder.
See also:
Command line
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
Autorun: run as ser%ice
#$%E can .e started as a ser"ice using one of !pp-to-ser"ice like programs.
<e ha"e successfully checked it &ith great '$$+ tool. 9t is free and open source. 3ou can do&nload it from http)::iain.c4:src:nssm
$tep C.
9nstall '$$+
$tep 2.
Create and sa"e #$%E configuration in file (for e4ample( c):config."spe).
$tep 1.
9nstall ser"ice) go to '$$+ folder and run Dnssm install #$%E8$er"iceD. $pecify path to #$%Emulator.e4e and configuration file and click D9nstall ser"iceD .utton.
$tep 2. 0un ser"ice using Dnet start #$%E8$er"iceD command or re.oot your computer.
ThatHs all.
To uninstall ser"ice( go to '$$+ folder and run Dnssm remo"e #$%E8$er"iceD.
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
#irtual serial ports emulator pro>ect
#irtual serial ports emulator pro>ect
Page 3 of 28
10/1/2013 file:///C:/Users/Administrador/AppData/Local/Temp/~!8"1#tm
Splitter: Sare e+isting p!sical serial port between se%eral applications
IetHs assume that you ha"e J%$ recei"er that is already connected to your computer to the physical serial port C6+C.
3ou ha"e a program that opened C6+C and is no& recei"ing J%$ data. !nd all &as fine until you &anted to run another program at the same time to get J%$ data. -ut
&hen you tried to run it( you got some &eird message like DCan not open serial portD or something similiar. <hat happened / !ns&er is) serial port can .e opened .y one
application only. $erial port is an e4clusi"e-access de"ice type.
3ou ha"e se"eral options to deal &ith this situation)
Aorget a.out it( close the first program and run the second. !nd then close the second and run the first... !ctually( it is not an option.
%urchase serial ports e4tension .oard. 3es( this option can &ork. -ut do you &ant to spend your time and money( look for free %C9 slot and install e4tension
.oard /
9f you ha"e t&o serial ports( you can purchase special ca.le that splits data from the J%$ to each serial port. -ut if you ha"e one physical serial port only or you
need run more than t&o applications( you can forget a.out it...
!nd finally( you can use soft&are solution( for e4ample( #$%E. 9t is the .est option.
$tep C.
Close program that opened serial port.
$tep 2.
0un #$%E and create the splitter de"ice. $elect C6+C in D5ata source serial portD com.o .o4 and C6+2 in D#irtual serial portD.
$tep 1.
'o& configure all your programs to recei"e J%$ data from C6+2.
'o& C6+2 can .e used .y up to 8 different applications! $imple( isnHt it /
See also:
Splitter de%ice
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
Virtual macine integration
9f you use "irtual machine (for e4ample #irtual-o4( #irtual%C( #m<are etc)( you can create "irtual serial port (for e4ample C6+C0) and specify it as data source for
"irtual machine.
9t may .e e4tremly useful for de.ugging : de"elopment purpose.
Bere is #irtual-o4 settings e4ample (take into consideration that serial port name is) DGG.GC6+C0D). 9t is e4plained in Are*uently !sked Kuestions section.
Virtual)o+ serial port settings
See also:
#irtual serial ports emulator pro>ect
Page ! of 28
10/1/2013 file:///C:/Users/Administrador/AppData/Local/Temp/~!8"1#tm
"re#uentl! as$ed #uestions
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
,etwor$ bridge
9f you &ant to connect t&o computers "ia serial port you need a serial ca.le.
-ut it can .e incon"enient in many cases) the ca.le can .e too short or the computers can .e located in different cities or e"en countries.
#$%E can sol"e it) >ust create D'et&ork .ridgeD configuration that &ill allo& you to do that. D'et&ork .ridgeD is a com.ination of Tcp$er"er( TcpClient and Connector (or
%air) de"ices.
-elo& is the e4ample of such configuration that connects t&o computers "ia "irtual serial port C6+L using net&ork connection.
Computer 3
Create Connector de"ice (C6+L)
Create Tcp$er"er de"ice (Iocal Tcp %ort E LLLL( $ource serial port E C6+L)
Computer 4
Create Connector de"ice (C6+L)
Create TcpClient de"ice (0emote TC% host E Computer C 9% address or net&ork name( 0emote TC% port E LLLL( $ource serial port E C6+L)
ThatHs it( no& .oth of your computers are connected "ia "irtual serial port C6+L.
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
-ne.to./an! data redirection
IetHs assume that you ha"e C6+C( C6+2 and C6+1.
They can .e either real or "irtual serial ports (e.g. Connectors or %airs). 9f you &ant to create data e4change) C6+CMEFC6+2 and C6+CMEFC6+1( you can use one of
the follo&ing approaches)
Splitter and Serial &edirectors combination
Create $plitter de"ice (5ata source serial portEC6+C( #irtual serial portEC6+L)
Create $erial 0edirector ($erial port C E C6+L( $erial port 2 E C6+2)
Create $erial 0edirector ($erial port C E C6+L( $erial port 2 E C6+1)
5cpSer%er and 5cpClient combination
Create Tcp$er"er de"ice ($ource serial portEC6+C( Iocal TC% port E LLLL)
Create TcpClient de"ice ($ource serial portEC6+2( 0emote TC% hostEC2N.0.0.C( 0emote TC% portELLLL)
Create TcpClient de"ice ($ource serial portEC6+1( 0emote TC% hostEC2N.0.0.C( 0emote TC% portELLLL)
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
User interface
#$%E user interface is *uite simple.
There are a main &indo& and "arious options dialogs. The main &indo& displays a list of created "irtual serial de"ices.
See also:
/ain window
VSPE Preferences
Create de%ice wi0ard
Serial port settings dialog
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
/ain window
#irtual serial ports emulator pro>ect
#irtual serial ports emulator pro>ect
#irtual serial ports emulator pro>ect
#irtual serial ports emulator pro>ect
Page $ of 28
10/1/2013 file:///C:/Users/Administrador/AppData/Local/Temp/~!8"1#tm
/ain window
The application main &indo& displays information a.out created "irtual de"ices.
,se menu or tool.ar commands to create configuration.
To edit created device you need to stop emulation first.
Click on "Emulation => Stop" command and click right mouse
button on device. Then click on "Properties..." menu item.
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
VSPE Preferences
To display preferences dialog click D#ie& EF %referencesD menu command.
!ll settings are stored in the <indo&s registry for the current user.
See also:
General tab
Ad%anced tab
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
General tab
#irtual serial ports emulator pro>ect
#irtual serial ports emulator pro>ect
Page % of 28
10/1/2013 file:///C:/Users/Administrador/AppData/Local/Temp/~!8"1#tm
General tab
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
Ad%anced tab
Ad%anced tab
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
Create de%ice wi0ard
The &iOard &ill help you to create desired de"ice.
5e"ice creation process consists of t&o simple steps) specifying de"ice type and characteristics.
3ou can create any com.inations of de"ices) for e4ample you can create connector and e4pose it to net&ork using Tcp$er"er de"ice.
See also:
Connector de%ice
Splitter de%ice
Pair de%ice
5cpSer%er de%ice
5cpClient de%ice
Serial &edirector de%ice
U6P manager de%ice
)ridge de%ice
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
Connector de%ice
Connector is a "ery simple "irtual de"ice that can .e opened .y t&o clients.
!fter opening( clients can e4change data.
arning! "n some cases connector may not #ork correctly.
$% The same application tries to open connector t#ice
&% 'uery to device is initiated from another driver (e.g. as modem driver%
9n such a case you should use Pair de%ice.
#irtual serial ports emulator pro>ect
#irtual serial ports emulator pro>ect
#irtual serial ports emulator pro>ect
Page & of 28
10/1/2013 file:///C:/Users/Administrador/AppData/Local/Temp/~!8"1#tm
Step 3
Step 4
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
Splitter de%ice
5ata splitter is intended to help share serial port data stream among many clients.
3ou must choose source serial port (it &ill act as data pro"ider) and "irtual serial port. Current #$%E "ersion supports up to 8 client connections to the data splitter. 3ou
can check D0ead onlyD check.o4 to pre"ent &riting in the source serial port. To ad>ust source serial port settings( click D$ettings...D .utton (Serial port settings dialog)
$et D0edirect modem registersD check.o4 if you &ant clients to manage 0T$:5T0 modem lines. 3ou can also define initial modem registers state (5T0 and 0T$).
#irtual serial ports emulator pro>ect
Page 8 of 28
10/1/2013 file:///C:/Users/Administrador/AppData/Local/Temp/~!8"1#tm
Step 3
Step 4
See also:
Splitter: Sare e+isting p!sical serial port between se%eral applications
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
Pair de%ice
%air is a simple de"ice that consists of t&o logically connected "irtual ports.
9t is usually more popular solution than Connector de%ice.
Step 3
#irtual serial ports emulator pro>ect
Page ' of 28
10/1/2013 file:///C:/Users/Administrador/AppData/Local/Temp/~!8"1#tm
Step 4
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
5cpSer%er de%ice
TC%$er"er opens TC% port to deli"er serial port data to net&ork clients.
'um.er of clients is not limited.
This device does not create virtual serial port. "t uses e)isting one
that can be either physical or virtual (for e)ample* Connector%.
Step 3
#irtual serial ports emulator pro>ect
Page 10 of 28
10/1/2013 file:///C:/Users/Administrador/AppData/Local/Temp/~!8"1#tm
Step 4
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
5cpClient de%ice
TcpClient esta.lishes TC%:9% connection to remote computer and transfers data from e4isting serial port to remote %C and "ice "ersa.
9f connection is lost it &ill reconnect automatically. !lso you can specify read data timeout (in seconds) to automatically reconnect Tcp client.
This device does not create virtual serial port. "t uses e)isting one
that can be either physical or virtual (for e)ample* Connector%.
Step 3
#irtual serial ports emulator pro>ect
Page 11 of 28
10/1/2013 file:///C:/Users/Administrador/AppData/Local/Temp/~!8"1#tm
Step 4
P!ton scripting s!stem
TcpClient de"ice supports scripting. 9t means that it is customiOa.le. !ll scripts must .e located in $cripts folder (in #$%E installation directory).
Simple script e+ample
+python
import TcpClient
+ connect handler
def TcpClientConnected(ob,%!
TcpClient.SendString(ob,*-==> .ogin-%
+ disconnecting handler (connection is still alive%
def TcpClient/isconnecting(ob,%!
TcpClient.SendString(ob,*-==> .ogout-%
+ disconnect handler (connection is already broken%
def TcpClient/isconnected(ob,%!
pass
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
Serial &edirector de%ice
$erial 0edirector can .e used to esta.lish connection .et&een t&o serial ports.
This device does not create virtual serial port. "t uses e)isting one
that can be either physical or virtual (for e)ample* Connector%.
Step 3
#irtual serial ports emulator pro>ect
Page 12 of 28
10/1/2013 file:///C:/Users/Administrador/AppData/Local/Temp/~!8"1#tm
Step 4
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
U6P manager de%ice
,5% manager allo&s to send:recei"e data "ia ,5% protocol.
This device does not create virtual serial port. "t uses e)isting one
that can be either physical or virtual (for e)ample* Connector%.
There are 1 entities in ,5% manager) C6+ port( ,5% local port and ,5% clients.
C6+ port is serial port e4posed .y ,5% +anager.
,5% +anager &aits for incoming data from ,5% local port. !ll incoming data is redirected to C6+ port.
,5% clients is a set of clients. E"ery client has its o&n 9% address and port. ,5% +anager reads data from C6+ port and redirects it to ,5% clients( sending ,5%
packets.
$o( ,5% +anager &ork scheme is the follo&ing)
0ead data from the local ,5% port and send it to C6+ port.
0ead data from the C6+ port and send it to each ,5% client using ,5% protocol.
Step 3
#irtual serial ports emulator pro>ect
Page 13 of 28
10/1/2013 file:///C:/Users/Administrador/AppData/Local/Temp/~!8"1#tm
Step 4
$pecify local ,5% port (0 if you &ant only to send data from C6+ port) and 0emote clients.
&emote client properties
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
)ridge de%ice
-ridge is intended to connect t&o data streams.
5ata stream source can .e file( TC% connection( serial port etc. Pust set up each data stream and data &ill .e transfered from stream C to stream 2 and "ice "ersa.
Step 3
#irtual serial ports emulator pro>ect
Page 1! of 28
10/1/2013 file:///C:/Users/Administrador/AppData/Local/Temp/~!8"1#tm
Step 4
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
Serial port settings dialog
!d>ust serial port settings (speed( stop .its etc).
Serial port settings
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
VSPE API
#$%E e4poses programming interface that can .e useful for soft&are de"elopers.
See also:
VSPE API reference
6e%ices initiali0ation
C2C77 E+ample (,ati%e*
P!ton bindings
C8 (C-/ interface*
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
VSPE API reference
VSPE API acti%ation
#irtual serial ports emulator pro>ect
#irtual serial ports emulator pro>ect
#irtual serial ports emulator pro>ect
Page 1$ of 28
10/1/2013 file:///C:/Users/Administrador/AppData/Local/Temp/~!8"1#tm
To use 0SPE 1P"* you need activation key.
Please ac2uire it from Eterlogic.com #eb site.
There are t&o &ays to acti"ate #$%E !%9. -oth &ays are correct.
,se "spe8acti"ate(key) function. +ust .e called e"ery time your application runs.
Create H"speapi.licenseH file and paste your acti"ation key. %lace it in your application folder.
&e#uired files
There are t&o &ays of using #$%E !%9) nati"e dll linking and C6+ interface. -oth &ays are appropriate. !ll files re*uired for compiling are located in #$%E8!%9 folder
'in$ing wit VSPE API (using VSPE1API.dll*
To compile &ith #$%E !%9( do the follo&ing steps)
9nclude #$%E8!%9.h (for C;; programmers)
Iink &ith #$%E8!%9.li.
"n some cases static linkage is not appropriate.
To use dynamic linkage* look in 3S/4 for
.oad.ibaray and 5etProc1ddress functions.
6ependencies wit nati%e binding (witout C-/ interface*
To run your application &ithout correctly( you should either install #$%E or copy the follo&ing files to your application folder)
#spe8!pi.dll (#$%E !%9 core)
#spe,tils.dll (#$%E core)
?ernel5e"ices.plg (Connector( $plitter( %air)
,ser5e"ices.plg (Tcp$er"er( TcpClient etc)
?rush,tilities.dll (au4iliary dll used .y J,9 and userde"ices.plg)
%ython2L.dll (%ython 2.L used .y userde"ices.plg)
6ependencies wit nati%e binding (witout C-/ interface*
0egister #$%E8Com$er"er.dll (regs"r12 #$%E8Com$er"er.dll). 'o any additional files in the application folder re*uired.
Standalone installation
9nstallation
!dd all the files mentioned in the sections a.o"e to your application setup package.
0un <i49nteractor.e4e on8install &ith administrator pri"ileges
0egister #$%E8Com$er"er.dll (regs"r12 #$%E8Com$er"er.dll)
,ninstallation
0un <i49nteractor.e4e on8uninstall &ith administrator pri"ileges
,nregister #$%E8Com$er"er.dll (regs"r12 :u #$%E8Com$er"er.dll)
&unning compiled program
6un compiled program in the 0SPE root folder only.
This re2uirement may be removed in the future.
VSPE API eader (VSPE1API.*
77 0irtual Serial Port Emulator 1P" header
77 1uthor! 0olodymyr Ter (http!77###.eterlogic.com%
+ifndef 80SPE81P"898
+define 80SPE81P"898
+ifdef 0SPE81P"8E:P;6TS
+define 0SPE81P" e)tern "C" 8declspec(dlle)port%
+else
+define 0SPE81P" e)tern "C" 8declspec(dllimport%
+endif
7<
< 1ctivate 0SPE 1P" using activation key
< =return result
<7
0SPE81P" bool vspe8activate(const char< key%>
7<
< "nitiali?e 0SPE core
< =return result
<7
0SPE81P" bool vspe8initiali?e(%>
7<
< .oad configuration file
< =param name
< =return result
<7
Page 1% of 28
10/1/2013 file:///C:/Users/Administrador/AppData/Local/Temp/~!8"1#tm
0SPE81P" bool vspe8loadConfiguration(const char< name%>
7<
< Save configuration
< =param name
< =return result
<7
0SPE81P" bool vspe8saveConfiguration(const char< name%>
7<
< Create device
< =param name /evice name. @or e)ample "Connector"* "Splitter"* "Pair" etc.
< =param initString device initiali?ation string
< =return device"d
<7
0SPE81P" int vspe8create/evice(const char< name* const char< initString%>
7<
< /estroy device by device"d
< =param device"d
< =return result
<7
0SPE81P" bool vspe8destroy/evice(int device"d%>
7<
< 5et 0SPE devices count
< =return result
<7
0SPE81P" int vspe8get/evicesCount(%>
7<
< 5et 0SPE device"d by device inde)
< =param id) device inde)
< =return device"d
<7
0SPE81P" int vspe8get/evice"dAy"d)(int id)%>
7<
< 5et 0SPE device"d by C;3 port inde)
< =param ComPort"d)
< =return device"d (B$ if not found%.
<7
0SPE81P" int vspe8get/evice"dAyComPort"nde)(int ComPort"d)%>
7<
< 5et device information
< =param device"d
< =param name CoutD device name
< =param initStrng CoutD device initString
< =param ok CoutD device state ($ = good%
< =param used CoutD is device used ($ = used%
< =return result
<7
0SPE81P" bool vspe8get/evice"nfo(int device"d* const char<< name* const char<< initString* int< ok* int< used%>
7<
< 6einitiali?e device by device"d
< =param device"d
< =return result
<7
0SPE81P" bool vspe8reinitiali?e/evice(int device"d%>
7<
< /estroy all devices
< =return result
<7
0SPE81P" bool vspe8destroy1ll/evices(%>
7<
< Start emulation
< =return result
<7
0SPE81P" bool vspe8startEmulation(%>
7<
< Stop emulation
< =return result
<7
0SPE81P" bool vspe8stopEmulation(%>
7<
< 6elease 0SPE core
<7
0SPE81P" void vspe8release(%>
7<
< 5et 0SPE 1P" version information
< =return result
<7
0SPE81P" const char< vspe8get0ersion"nformation(%>
+endif
Page 1& of 28
10/1/2013 file:///C:/Users/Administrador/AppData/Local/Temp/~!8"1#tm
VSPE API C-/ interface (VSPE1ComSer%er.idl*
77 0irtual Serial Port Emulator 1P" header
77 1uthor! 0olodymyr Ter (http!77###.eterlogic.com%
import "oaidl.idl">
import "ocidl.idl">
C
ob,ect*
uuid(EFGH&HGdBIHdIBE&JeBacHcBHfcKEdcE&$IH%*
dual*
none)tensible*
helpstring(""0SPE "nterface"%*
pointer8default(uni2ue%
D
77 ========================================================================
77 3ain 0SPE interface
77 ========================================================================
interface "0SPE ! "/ispatch
L
7<
< 1ctivate 0SPE 1P" using activation key
< =param key 1ctivation key
< =return result
<7
Cid($%* helpstring("method vspe8activate"%D 96ESM.T vspe8activate(CinD AST6 key* Cout* retvalD A;;.< 6esult%>
7<
< "nitiali?e 0SPE core
< =return result
<7
Cid(&%* helpstring("method vspe8initiali?e"%D 96ESM.T vspe8initiali?e(Cout* retvalD A;;.< 6esult%>
7<
< .oad configuration file
< =param name
< =return result
<7
Cid(F%* helpstring("method vspe8loadConfiguration"%D 96ESM.T vspe8loadConfiguration(CinD AST6 name* Cout* retvalD A;;.< 6esult%>
7<
< Save configuration
< =param name
< =return result
<7
Cid(E%* helpstring("method vspe8saveConfiguration"%D 96ESM.T vspe8saveConfiguration(CinD AST6 name* Cout* retvalD A;;.< 6esult%>
7<
< Create device
< =param name /evice name. @or e)ample "Connector"* "Splitter"* "Pair" etc.
< =param initString device initiali?ation string
< =return device"d
<7
Cid(G%* helpstring("method vspe8create/evice"%D 96ESM.T vspe8create/evice(CinD AST6 name* CinD AST6 initString* Cout* retvalD A;;.< 6esult%>
7<
< /estroy device
< =param device"d
< =return result
<7
Cid(K%* helpstring("method vspe8destroy/evice"%D 96ESM.T vspe8destroy/evice(CinD .;45 device"d* Cout* retvalD A;;.< 6esult%>
7<
< 6einitiali?e device
< =param device"d
< =return result
<7
Cid(N%* helpstring("method vspe8reinitiali?e/evice"%D 96ESM.T vspe8reinitiali?e/evice(CinD .;45 device"d* Cout* retvalD A;;.< 6esult%>
7<
< /estroy all devices
< =return result
<7
Cid(I%* helpstring("method vspe8destroy1ll/evices"%D 96ESM.T vspe8destroy1ll/evices(Cout* retvalD A;;.< 6esult%>
7<
< Start emulation
< =return result
<7
Cid(J%* helpstring("method vspe8startEmulation"%D 96ESM.T vspe8startEmulation(Cout* retvalD A;;.< 6esult%>
7<
< Stop emulation
< =return result
<7
Cid($H%* helpstring("method vspe8stopEmulation"%D 96ESM.T vspe8stopEmulation(Cout* retvalD A;;.< 6esult%>
7<
< 6elease 0SPE core
<7
Cid($$%* helpstring("method vspe8release"%D 96ESM.T vspe8release(%>
Page 18 of 28
10/1/2013 file:///C:/Users/Administrador/AppData/Local/Temp/~!8"1#tm
7<
< 5et 0SPE devices count
< =return result
<7
Cid($&%* helpstring("method vspe8get/evicesCount"%D 96ESM.T vspe8get/evicesCount(Cout* retvalD .;45< 6esult%>
7<
< 5et 0SPE device"d by device inde)
< =param id) device inde)
< =return device"d
<7
Cid($F%* helpstring("method vspe8get/evice"dAy"d)"%D 96ESM.T vspe8get/evice"dAy"d)(CinD .;45 id)* Cout* retvalD .;45< 6esult%>
7<
< 5et device information
< =param device"d
< =param name CoutD device name
< =param initStrng CoutD device initString
< =param ok CoutD device state ($ = good%
< =param used CoutD is device used ($ = used%
< =return result
<7
Cid($E%* helpstring("method vspe8get/evice"nfo"%D 96ESM.T vspe8get/evice"nfo(CinD .;45 device"d* CoutD AST6< name* CoutD AST6< initString* CoutD .;45< ok* CoutD .;45< used* Cout* retvalD A;;.< 6esult%>
7<
< 5et 0SPE 1P" version information
< =return result
<7
Cid($G%* helpstring("method vspe8get0ersion"nformation"%D 96ESM.T vspe8get0ersion"nformation(Cout* retvalD AST6< result%>
7<
< 5et 0SPE device"d by C;3 port inde)
< =param ComPort"d)
< =return device"d (B$ if not found%.
<7
Cid($K%* helpstring("method vspe8get/evice"dAyComPort"nde)"%D 96ESM.T vspe8get/evice"dAyComPort"nde)(CinD .;45 ComPort"d)* Cout* retvalD .;45< result%>
O>
C
uuid(dNcd$efNBaG&HBEGNbBafJaBIea$HFbJGFI$%*
version($.H%*
helpstring("0SPE $.H Type .ibrary"%
D
library 0SPE.ib
L
77 ========================================================================
77 "nterface implementations
77 ========================================================================
C
uuid(bfF&$KHdBIfaNBEHIbBIaFcBcbfbfc$JcaaK%*
helpstring("0SPE1pi Class"%
D
coclass 0SPE1pi
L
CdefaultD interface "0SPE>
O>
O>
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
6e%ices initiali0ation
General
To create ne& de"ice( you should call "spe8create5e"ice (or >ust load configuration file). This function takes t&o parameters) name and init$tring. 'ame is de"ice type)
for e4ample( DConnectorD or D$plitterD. init$tring is initialiOation string. !ll parameters in initialiOation string are separated .y HQH.
$erial$ettings is special settings .lock in &hich parameters are separated .y commas. 9t descri.es serial port ad"anced settings.
Aormat) $peed(5tr0ts(-its($top-its(%arity(Custom0ead9nter"alTimeout
E4ample) C200(0(8(C(0(0
Connector
9nitialiOation string e4ample) CQ0
5escription) Com%ort9nde4QEmulate .aud rate
Splitter
9nitialiOation string e4ample) C0QCQ0QC200(0(8(C(0(0Q0Q0Q0
5escription) #irtualCom%ort9nde4Q0ealCom%ort9nde4Q0ead6nlyQ$erial$ettingsQ,se+odem0egistersQ,se0tsQ,se5tr
Pair
#irtual serial ports emulator pro>ect
Page 1' of 28
10/1/2013 file:///C:/Users/Administrador/AppData/Local/Temp/~!8"1#tm
9nitialiOation string e4ample) C0QCCQ0
5escription) Com%ort9nde4CQCom%ort9nde42QEmulate -aud rate
5cpSer%er
9nitialiOation string e4ample) LLLLQCQC200(0(8(C(0(0
5escription) Tcp%ortQCom%ort9nde4Q$erial$ettings
5cpClient
9nitialiOation string e4ample) C2.C78.C0.2QLLLLQCQC200(0(8(C(0(0Q0Q10Q
5escription) TcpBostQTcp%ortQCom%ort9nde4Q$erial$ettingsQ5tr0tsQ0econnectTimeoutQ$criptAile
U6P /anager
9nitialiOation string e4ample) C2.C78.C0.2QLLLLQCQC200(0(8(C(0(0
5escription) BostQ%ortQCom%ort9nde4Q$erial$ettings
Serial &edirector
9nitialiOation string e4ample) CQC200(0(8(C(0(0Q2QC200(0(8(C(0(0Q0
5escription) Com%ort9nde4CQ$erial$ettingsCQCom%ort9nde42Q$erial$ettings2Q,se+odem0egisters
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
C2C77 E+ample (,ati%e*
C77 sample
+include Pstdio.h>
+include Pconio.h>
77 include 0SPE 1P" header and library
+include "0SPE81P".h"
+pragma comment(lib*"0SPE81P".lib"%
int main(%
L
77 <<<<<<<<<<<<<<<<<<<<<<<<<<<<
77 STEP $ B "4"T"1."Q1T";4
77 <<<<<<<<<<<<<<<<<<<<<<<<<<<<
const char< config8file8path = "$.vspe">
const char< activationRey = ""> 77 PBBBBB PMT 1CT"01T";4 RES 9E6E
bool result>
77 display 0SPE 1P" version info
printf("Ts=n"*vspe8get0ersion"nformation(%%>
77 activate 0SPE 1P"
result = vspe8activate(activationRey%>
if(result == false%L
printf("0SPE 1P" activation error"%>
return $>
O
77 initiali?e 0SPE python binding subsystem
result = vspe8initiali?e(%>
if(result == false%L
printf(""nitiali?ation error"%>
return $>
O
77 stop current emulation
result = vspe8stopEmulation(%>
if(result == false%
L
printf("Error! emulation can not be stopped! maybe one of 0SPE devices is still used."%>
vspe8release(%>
return $>
O
77 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
77 /ynamically creating devices
77 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
77 Create Connector device (C;3J* no baud rate emulation%
int device"d = vspe8create/evice("Connector"* "J>H"%>
if(device"d == B$%
L
printf("Error! can not create device=n"%>
vspe8release(%>
return $>
O
77 Create Splitter (C;3J => C;3$H%
device"d = vspe8create/evice("Splitter"* "$H>J>H>$J&HH*H*I*$*H*H>H>H>H"%>
#irtual serial ports emulator pro>ect
Page 20 of 28
10/1/2013 file:///C:/Users/Administrador/AppData/Local/Temp/~!8"1#tm
if(device"d == B$%
L
printf("Error! can not create device=n"%>
vspe8release(%>
return $>
O
77 Create Pair device (C;3&$ => C;3&&%
device"d = vspe8create/evice("Pair"* "&$>&&>H"%>
if(device"d == B$%
L
printf("Error! can not create device=n"%>
vspe8release(%>
return $>
O
77 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
77 orking #ith configuration files
77 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
77 save configuration to file
result = vspe8saveConfiguration(config8file8path%>
if(result == false%
L
printf("Error! can not save configuration"%>
vspe8release(%>
return $>
O
77 load configuration from file
result = vspe8loadConfiguration(config8file8path%>
if(result == false%
L
printf("Error! can not load configuration"%>
vspe8release(%>
return $>
O
77 <<<<<<<<<<<<<<<<<<<<<<<<<<<<
77 STEP & B E3M.1T";4 .;;P
77 <<<<<<<<<<<<<<<<<<<<<<<<<<<<
77 start emulation
result = vspe8startEmulation(%>
if(result == false%
L
printf("Error! can not start emulation"%>
vspe8release(%>
return $>
O
77 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
77 E)tracting devices information
77 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
int i* count = vspe8get/evicesCount(%>
for(i = H>iPcount>UUi%
L
int ok* used>
const char< name* <initString>
int device"d = vspe8get/evice"dAy"d)(i%>
if(vspe8get/evice"nfo(device"d* Vname* VinitString* Vok* Vused%%
L
printf("/etected device! Ts (Ts%. Status! Ts* Msed! Ts=n"*
name* initString* ok == $ W ";R" ! "E66;6"*
used == $ W "SES" ! "4;"%>
O
O
77 emulation loop
printf("Press any key to 2uit"%>
8getch(%>
77 <<<<<<<<<<<<<<<<<<<<<<<<<<<<
77 STEP F B E:"T
77 <<<<<<<<<<<<<<<<<<<<<<<<<<<<
77 stop emulation before e)it (skip this call to force kernel devices continue to #ork%
result = vspe8stopEmulation(%>
if(result == false%
L
printf("Error! emulation can not be stopped! maybe one of 0SPE devices is still used."%>
return $>
O 77 if(result == false%
77 release 0SPE
vspe8release(%>
return H>
O
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
#irtual serial ports emulator pro>ect
Page 21 of 28
10/1/2013 file:///C:/Users/Administrador/AppData/Local/Temp/~!8"1#tm
P!ton bindings
P!ton bindings re#uirements
&e#uirements for nati%e bindings
9nstall %ython interpreter (&e use "ersion 2.L)
9nstall %ython<in e4tension
0un script from #$%E install folder or copy necessary files to the application folder
&e#uirements for C-/ bindings
9nstall %ython<in e4tension
P!ton sample (nati%e*
+python
+ BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+ 0SPE python subsystem usage sample
+ BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
import msvcrt
import 0SPE8Python
config8file8path = -$.vspe-
activationRey = --> + PBBBBB PMT 1CT"01T";4 RES 9E6E
+ display 0SPE 1P" version information
print 0SPE8Python.vspe8get0ersion"nformation(%
+ <<<<<<<<<<<<<<<<<<<<<<<<<<<<
+ STEP $ B "4"T"1."Q1T";4
+ <<<<<<<<<<<<<<<<<<<<<<<<<<<<
+ activate 0SPE 1P"
result = 0SPE8Python.vspe8activate(activationRey%
if result == @alse!
print -0SPE 1P" activation error-
e)it($%
+ initiali?e 0SPE python binding subsystem
result = 0SPE8Python.vspe8initiali?e(%
if result == @alse!
print -"nitiali?ation error-
e)it($%
+ stop current emulation
result = 0SPE8Python.vspe8stopEmulation(%
if result == @alse!
print -Error! emulation can not be stopped! maybe one of 0SPE devices is still used.-
e)it($%
+ <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+ /ynamically creating devices
+ <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+ Create Connector device (C;3J* no baud rate emulation%
device"d = 0SPE8Python.vspe8create/evice("Connector"* "J>H"%>
if device"d == B$!
print -Error! can not create device-
0SPE8Python.vspe8release(%
e)it($%
+ <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+ orking #ith configuration files
+ <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+ save configuration to file
result = 0SPE8Python.vspe8saveConfiguration(config8file8path%
if result == @alse!
print -Error! can not save configuration-
0SPE8Python.vspe8release(%
e)it($%
+ load configuration from file
result = 0SPE8Python.vspe8loadConfiguration(config8file8path%
if result == @alse!
print -Error! can not load configuration-
0SPE8Python.vspe8release(%
e)it($%
+ <<<<<<<<<<<<<<<<<<<<<<<<<<<<
+ STEP & B E3M.1T";4 .;;P
Page 22 of 28
10/1/2013 file:///C:/Users/Administrador/AppData/Local/Temp/~!8"1#tm
+ <<<<<<<<<<<<<<<<<<<<<<<<<<<<
+ start emulation
result = 0SPE8Python.vspe8startEmulation(%
if result == @alse!
print -Error! can not start emulation-
0SPE8Python.vspe8release(%
e)it($%
+ emulation loop
print -Press any key to 2uit-
msvcrt.getch(%
+ <<<<<<<<<<<<<<<<<<<<<<<<<<<<
+ STEP F B E:"T
+ <<<<<<<<<<<<<<<<<<<<<<<<<<<<
+ stop emulation before e)it (skip this call to force kernel devices #ork #ithout this script%
result = 0SPE8Python.vspe8stopEmulation(%
if result == @alse!
print -Error! emulation can not be stopped! maybe one of 0SPE devices is still used.-
e)it($%
+ release 0SPE python binding subsystem before e)it
0SPE8Python.vspe8release(%
e)it(H%
P!ton sample (C-/ interface*
+python
import #inF&com.client
import msvcrt
vspe = #inF&com.client./ispatch("0SPE.0SPE1pi"%
activationRey = --> + PBBBBB PMT 1CT"01T";4 RES 9E6E
+ display 0SPE 1P" version information
print vspe.vspe8get0ersion"nformation(%
+ activate 0SPE 1P"
vspe.vspe8activate(activationRey%
+ initiali?e 0SPE
vspe.vspe8initiali?e(%
+ create Connector (C;3J* no baud rate emulation%
vspe.vspe8create/evice(-Connector-*-J>H-%
+ create Splitter (C;3J => C;3$H%
vspe.vspe8create/evice(-Splitter-*-$H>J>H>$J&HH*H*I*$*H*H>H>H>H-%
+ create Pair device (C;3&$ => C;3&&%
vspe.vspe8create/evice(-Pair-*-&$>&&>H-%
+ start emulation
vspe.vspe8startEmulation(%
+ #ait for any key ...
print -Press any key to 2uit-
msvcrt.getch(%
+ stop emulation
vspe.vspe8stopEmulation(%
+ release 0SPE
vspe.vspe8release(%
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
C8 (C-/ interface*
!dd reference to #$%E8Com$er"er.dll and set target C%, architecture D487D.
C8 e+ample
"orm3.cs
#irtual serial ports emulator pro>ect
Page 23 of 28
10/1/2013 file:///C:/Users/Administrador/AppData/Local/Temp/~!8"1#tm
XYZusing System>
using System.Collections.5eneric>
using System.Component3odel>
using System./ata>
using System./ra#ing>
using System.Te)t>
using System.indo#s.@orms>
using 0SPE.ib>
namespace 0SPE81P"8Test
L
public partial class @orm$ ! @orm
L
private 0SPE1piClass vspe>
public @orm$(%
L
"nitiali?eComponent(%>
vspe = ne# 0SPE1piClass(%>
int result>
string activationRey = ""> 77 PBBBBB PMT 1CT"01T";4 RES 9E6E
77 display 0SPE 1P" info
label$.Te)t = vspe.vspe8get0ersion"nformation(%>
77 activate 0SPE 1P"
result = vspe.vspe8activate(activationRey%>
77 initiali?e 1P"
result = vspe.vspe8initiali?e(%>
O
private void Create/evice8Click(ob,ect sender* Event1rgs e%
L
int result>
77 Stop emulation
result = vspe.vspe8stopEmulation(%>
77 /eatroy all devices
result = vspe.vspe8destroy1ll/evices(%>
77 1dd Connector (C;3J* no baud rate emulation%
result = vspe.vspe8create/evice("Connector"* "J>H"%>
77 Start emulation
result = vspe.vspe8startEmulation(%>
O
private void ;nClosing(ob,ect sender* @ormClosingEvent1rgs e%
L
77 Stop emulatio
vspe.vspe8stopEmulation(%>
77 6elease 0SPE
vspe.vspe8release(%>
O
private void "nfo8Click(ob,ect sender* Event1rgs e%
L
77 get devices count
int count = vspe.vspe8get/evicesCount(%>
string result = "/evices count! " U count.ToString(% U "=n">
77 enumerate devices
for (int i = H> i P count> UUi%
L
77 get device "/
int device"d = vspe.vspe8get/evice"dAy"d)(i%>
string name* initString>
int ok* used>
vspe.vspe8get/evice"nfo(device"d* out name* out initString* out ok* out used%>
result U= name U " ("UinitString U "% ;R=" U ok.ToString(% U "=n">
O
3essageAo).Sho#(result%>
O
O
O
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
Command line
To make users life easier #$%E supports command line parameters.
Aor e4ample it can .e used to automatically load configuration at <indo&s startup. <arning) only one #$%E instance can e4ist at the same time !
Msage!
#irtual serial ports emulator pro>ect
Page 2! of 28
10/1/2013 file:///C:/Users/Administrador/AppData/Local/Temp/~!8"1#tm
0SPEmulator.e)e Pconfig file path> Poptions>
Config file is a special file &ith e4tension D."speD that can .e created using #$%E D$a"e as...D command.
6ptions are additional parameters that can .e passed to #$%E to manage its .asic .eha"ior.
-minimiOe ) minimiOe #$%E dialog
-hide8splash ) do not sho& splash &indo&
E4ample)
E)ecute 0SPE and automatically load configuration file
0SPEmulator.e)e c!7config8files7main.vspe
E)ecute* load configuration file* hide splash and minimi?e 0SPE
0SPEmulator.e)e c!7config8files7main.vspe Bminimi?e Bhide8splash
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
Known limitations and bugs
-aud rate emulation is "ery rough
$erial port output .uffer is pass-through (not actually emulated)
$erial port output timeouts are ignored
5ataAlo& control is not as fast as it could .e (try to a"oid sending packets that are actually larger than recei"erHs input .uffer siOe)
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
Contacting
Contacting information
E-mail) feed.ackReterlogic.com
6nline form) http)::&&&.eterlogic.com:Aeed.ack.html
Aorum) http)::forum.eterlogic.com
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
User license agreement.
Sou should carefully read the follo#ing terms and conditions
before using this soft#are. "f you do not agree #ith the terms
of this license* you must remove "0irtual Serial Port Emulator"
from your computer.
12 .it A0EE<!0E I9CE'$E !J0EE+E'T
-3 56<'I6!59'J( 9'$T!II9'J 60 ,$9'J TBE D#90T,!I $E09!I %60T$ E+,I!T60D (TBE D%065,CTD)( TBE 9'59#95,!I 60 E'T9T3 I9CE'$9'J TBE
%065,CT (DI9CE'$EED) 9$ C6'$E'T9'J T6 -E -6,'5 -3 !'5 9$ -EC6+9'J ! %!0T3 T6 TB9$ !J0EE+E'T. 9A I9CE'$EE 56E$ '6T !J0EE T6 !II 6A
TBE TE0+$ 6A TB9$ !J0EE+E'T( TBE %065,CT +,$T '6T -E 56<'I6!5E5( !'5 I9CE'$EE +,$T '6T 9'$T!II 60 ,$E TBE %065,CT.
Eterlogic.com e4clusi"ely o&ns source code and all other copyrights referring to the %roduct.
C. Iicense grant. Eterlogic.com grants Iicensee a non-e4clusi"e and non-transfera.le license to reproduce and use for any purposes the e4ecuta.le code "ersion of the
%roduct( pro"ided any copy must contain all of the original proprietary notices. This license does not entitle Iicensee to recei"e from Eterlogic.com hard-copy
documentation( technical support( telephone assistance( or enhancements or updates to the %roduct. 9f more than one license agreement &as pro"ided for the %roduct(
and the terms "ary( the order of precedence of those license agreements is as follo&s) a signed agreement( a license agreement a"aila.le for re"ie& on the Eterlogic.com
&e.site( a printed or electronic agreement that states clearly that it supersedes other agreements( a printed agreement pro"ided &ith the %roduct( an electronic
agreement pro"ided &ith the %roduct.
2. 0estrictions. <ithout Eterlogic.com prior &ritten consent( Iicensee may not) (i) modify or create any deri"ati"e &orks (#$%E !%9 is an e4ception) of the %roduct or
documentation( including customiOation( translation or localiOationQ (ii) decompile( disassem.le( re"erse engineer Q (iii) remo"e or alter any trademark( logo( copyright or
other proprietary notices( legends( sym.ols or la.els in the %roduct.
1. Aees. There is no license fee for the %roduct. 9f Iicensee &ishes to recei"e the %roduct on media( there may .e a small charge for the media and for shipping and
handling. Iicensee is responsi.le for any and all ta4es.
2. %roprietary rights. Title( o&nership rights( and intellectual property rights in the %roduct shall remain in Eterlogic.com and:or its suppliers. Iicensee ackno&ledges such
o&nership and intellectual property rights and &ill not take any action to >eopardiOe( limit or interfere in any manner &ith Eterlogic.com or its suppliersH o&nership of or
#irtual serial ports emulator pro>ect
#irtual serial ports emulator pro>ect
#irtual serial ports emulator pro>ect
Page 2$ of 28
10/1/2013 file:///C:/Users/Administrador/AppData/Local/Temp/~!8"1#tm
rights &ith respect to the %roduct. The %roduct is protected .y copyright and other intellectual property la&s and .y international treaties. Iicensee agrees( at its e4pense(
to defend and hold Eterlogic.com and its affiliates harmless from any and all costs( damages and reasona.le attorneysH fees resulting from any claim that IicenseeHs use
of the %roduct has in>ured or other&ise "iolated any right of any third party or "iolates any la&.
L. 5isclaimer of <arranty. TBE %065,CT 9$ %06#95E5 A0EE 6A CB!0JE( !'5( TBE0EA60E( 6' !' D!$ 9$D -!$9$( <9TB6,T <!00!'T3 6A !'3 ?9'5(
E=%0E$$ 60 9+%I9E5( 9'CI,59'J <9TB6,T I9+9T!T96' TBE <!00!'T9E$ TB!T 9T 9$ A0EE 6A 5EAECT$( #90,$ A0EE( !-IE T6 6%E0!TE 6' !'
,'9'TE00,%TE5 -!$9$( +E0CB!'T!-IE( A9T A60 ! %!0T9C,I!0 %,0%6$E 60 '6'-9'A09'J9'J. TB9$ 59$CI!9+E0 6A <!00!'T3 C6'$T9T,TE$ !'
E$$E'T9!I %!0T 6A TB9$ !J0EE+E'T. '6 ,$E 6A TBE %065,CT 9$ !,TB609SE5 BE0E,'5E0 E=CE%T ,'5E0 TB9$ 59$CI!9+E0.
7. Iimitation of Iia.ility. T6 TBE +!=9+,+ E=TE'T %E0+9TTE5 -3 !%%I9C!-IE I!<( 9' '6 E#E'T <9II ETE0I6J9C.C6+ 60 9T$ !AA9I9!TE$ 60
$,%%I9E0$ -E I9!-IE A60 !'3 9'590ECT( $%EC9!I( 9'C95E'T!I 60 C6'$EK,E'T9!I 5!+!JE$ !09$9'J 6,T 6A TBE ,$E 6A 60 9'!-9I9T3 T6 ,$E
TBE %065,CT( 9'CI,59'J( <9TB6,T I9+9T!T96'( 5!+!JE$ A60 I6$T %06A9T$( I6$$ 6A J665<9II( <60? $T6%%!JE( C6+%,TE0 A!9I,0E 60
+!IA,'CT96'( 60 !'3 !'5 !II 6TBE0 C6++E0C9!I 5!+!JE$ 60 I6$$E$( E#E' 9A !5#9$E5 6A TBE %6$$9-9I9T3 TBE0E6A( !'5 0EJ!05IE$$ 6A
TBE IEJ!I 60 EK,9T!-IE TBE603 (C6'T0!CT( T60T 60 6TBE0<9$E) ,%6' <B9CB TBE CI!9+ 9$ -!$E5. 9' !'3 C!$E( ETE0I6J9C.C6+
C6IIECT9#E I9!-9I9T3 ,'5E0 !'3 %06#9$96' 6A TB9$ !J0EE+E'T $B!II '6T E=CEE5 9' TBE !JJ0EJ!TE TBE $,+ 6A TBE AEE$ I9CE'$EE %!95
A60 TB9$ I9CE'$E (9A !'3). $6+E P,09$59CT96'$ 56 '6T !II6< TBE E=CI,$96' 60 I9+9T!T96' 6A 9'C95E'T!I( C6'$EK,E'T9!I 60 $%EC9!I
5!+!JE$( $6 TB9$ E=CI,$96' !'5 I9+9T!T96' +!3 '6T !%%I3 T6 36,.
N. Bigh risk acti"ities. The %roduct is not fault-tolerant and is not designed( manufactured or intended for use or resale as on-line control e*uipment in haOardous
en"ironments re*uiring fail-safe performance( such as in the operation of nuclear facilities( aircraft na"igation or communication systems( air traffic control( direct life
support machines( or &eapons systems( in &hich the failure of the %roduct could lead directly to death( personal in>ury( or se"ere physical or en"ironmental damage
(DBigh 0isk !cti"itiesD). !ccordingly( Eterlogic.com and its suppliers specifically disclaim any e4press or implied &arranty of fitness for Bigh 0isk !cti"ities. Iicensee
agrees that Eterlogic.com and its suppliers &ill not .e lia.le for any claims or damages arising from the use of the %roduct in such applications.
8. Termination. Eterlogic.com may terminate this !greement at any time( for any reason or no reason. Eterlogic.com may also terminate this !greement if Iicensee
.reaches any of its terms and conditions. ,pon termination( Iicensee shall destroy all copies of the %roduct.
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
Version istor!
#ersion 0.21 (+arch( 200)
,pdated #$%E !%9( C;; sample( documentation
,pdated #$%E8!%9 %ython-indings
!dded) #$%E8Com$er"er.dll - C6+ interface
<i49nteractor) remo"ed console
#$%E8!%9) !cti"ation re*uirement added
#$%E8!%9) 'o additional files re*uired in application folder &hen using C6+ interface.
#$%E8!%9) commercially licensed applications can &ork simultaneously
5istri.ution package contains A0EE 12 .it #$%E !%9 key
Ai4ed .ug) splitter freeOing
72 .it) #$%E can .e started for testing purposes &ithout acti"ation key
TcpClient( Tcp$er"er( 0edirector( ,dp+anager) checking for errors &hen reading from the source port
#ersion 0.CC (Ae.ruary( 200)
Ai4ed uninstaller .ug in #ista
#ersion 0.C0 (Panuary 28( 200)
Aeature added) <indo&s #ista 72 .it support (72 .it license re*uired)
#ersion 0.8NL (5ecem.er 1C( 2008)
Aeature added) -ridge de"ice
#ersion 0.8NC ('o"em.er 2L( 2008)
Aeature added) #$%E !%9
Aeature added) #$%E !%9 C:C;; sample
Aeature added) #$%E !%9 %ython .indings and sample
Ai4ed .ug) 0ead9nter"alTimeoutE+!=5<605( 0eadTotalTimeout+ultiplierE+!=5<605( 0eadTotalTimeoutConstantE(0Q+!=5<605)
Ai4ed .ug) ad"anced ta. in #$%E settings dialog did not &ork at all
Code refactoring
#ersion 0.877 ($eptem.er 10( 2008)
%air de"ice can .e used &ith modem dri"ers (unlike Connector)
Ai4ed %ython scripting .ug on program e4it
Ai4ed .ug) dri"er start failure on =%72 &hen pre"ious "ersion is installed
Ai4ed .ug) 0eadTotalTimeout+ultiplier is no& ignored if -C
(9n progress) 5ata flo& control
#ersion 0.87L ($eptem.er CN( 2008)
Ai4ed ma>or .ug (Connector and %air)) read .uffer synchroniOation issues
Ai4ed critical .ug) 0eadTotalTimeoutConstant timer fails
9mpro"ed $plitter de"ice processing
!dded compati.ility &ith '$$+ (ser"ice manager)
,dp+anager) added error message if listening to port failed
!dded $imple ,dp+anager (hidden .y default)
#irtual serial ports emulator pro>ect
Page 2% of 28
10/1/2013 file:///C:/Users/Administrador/AppData/Local/Temp/~!8"1#tm
#ersion 0.87 ($eptem.er C7( 2008)
Ai4ed .ug) 0edirector and TcpClient crash on e4it
9mpro"ed ,pdater parser
#ersion 0.8L ($eptem.er C1( 2008)
!dded custom 0ead9nter"alTimeout in the serial port settings dialog
!dded ,dp+anager de"ice
#$%E can .e started &ithout kernel dri"er (only user-mode de"ices can .e created)
5e"ices configuration can .e modified after creation
Iogging into file
$tart:stop emulation .uttons
TC% keep-ali"e control (optional( disa.led .y default)
!dded simple %ython script system for TcpClient de"ice
Ai4ed .ug on 72 .it 6$) <6<72 file system redirection
Ai4ed .ug on =% 72) <aiting dialog hanging
#ersion 0.8C ($eptem.er C( 2008)
?ernel dri"er .ug fi4ed) 0eadAile &ith TotalTimeout !E 0
?erner dri"er .ug fi4ed) 0eadTotalTimeoutConstant
5e"ice reinitialiOation command
$ocket manager) polling timeout changed from L00 ms to C00 ms
TcpClient) read data timeouts
#ersion 0.80 (Puly 2( 2008)
Aeature added) initial modem registers state in the $plitter de"ice settings
+odem registers mapping in the $erial 0edirector de"ice
TcpClient:Tcp$er"er) Changing 0T$:5T0 state depending on connection status is optional
$ome small kernel dri"er .ugs fi4ed
#ersion 0.N8 (Puly 2L( 2008)
Aeature added) user mode de"ice - $erial 0edirector
5T0 for Tcp$er"er and TcpClient depends on connection status
9nformation page for Tcp$er"er
E#8CT$( E#85$0 e"ents
-ug fi4ed) Tcp$er"er( TcpClient disconnect detection
-ug fi4ed) hanging up &hen 0ead9nter"alTimeout is Oero
$mall J,9 impro"ements
#ersion 0.NN (Puly 2C( 2008)
$tandard pinout for %air and Connector de"ices
0T$ for Tcp$er"er and TcpClient depends on connection status
+odem registers information for kernel de"ices (Connector and %air)
%references dialog (Jeneral ta.)
#ersion 0.N7 (Puly CL( 2008)
-ug fi4ed) %air de"ice) e4clusi"e access only
-ug fi4ed) 0ead errors in some applications
Aeature added) -aud rate emulation for Connector and %air de"ices (6ptional)
!dditional dri"er checks at program startup
?ernel dri"er location and type changed ($E0#9CE8$3$TE+8$T!0T)
#ersion 0.NL (Puly C0( 2008)
-ug fi4ed) some apps hanged on close
#ersion 0.N2 (Pune 22( 2008)
Aeature added) Tcp$er"er de"ice recei"es data from net&ork clients
Ai4ed some .ugs
#ersion 0.N1 (Pune 2C( 2008)
Aeature added) information panel
%erformed some code optimiOation
#ersion 0.N2 (Pune C0( 2008)
Aeature added) &orking &ithout administrator pri"ileges
Emulation issue) 0ead9nter"alTimeout
#ersion 0.NC (+ay 10( 2008)
Ai4ed 2 nasty emulation .ugs
#ersion 0.N (+ay 2( 2008)
<indo&s #ista compati.ility
Command line support
5ocumentation update
#ersion 0.7 (+ay 27( 2008)
Aeature added) TcpClient de"ice
Page 2& of 28
10/1/2013 file:///C:/Users/Administrador/AppData/Local/Temp/~!8"1#tm
#ersion 0.L (+ay 22( 2008)
0egistered "spe shell e4tension
9mpro"ed user interface
#ersion 0.2 (+ay 2C( 2008)
Aeature added) Tcp$er"er de"ice
Aeature added) loading : sa"ing configuration
9mpro"ed user interface
Code refactoring
#ersion 0.1 (+ay C1( 2008)
Aeature added) 487872 platform support
Ai4ed some emulation .ugs
9mpro"ed user interface
#ersion 0.2 (+ay L( 2008)
Aeature added) "irtual pair
Ai4ed emulation .ugs (thanks to 5mitry Aomin for his detailed error reports)
Ai4ed pro.lems &ith deleting "irtual de"ices.
#ersion 0.C (!pril C1( 2008)
Aeature added) "irtual connector
Aeature added) "irtual data splitter
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
"re#uentl! as$ed #uestions
I create %irtual port C-/39 but it is not %isible to m! application.
9t is the operating system issue. C6+ ports &ith num.ers from C to can .e opened &ithout any pro.lems. To open de"ice &ith num.er greater than you need to use
DGG.GD prefi4.
C6+C ) "alid name
C6+C0 ) in"alid name
GG.GC6+C0 ) "alid name
GG.GC6+C ) "alid name
I create connector de%ice to emulate modem: but modem does not wor$ correctl!.
This can .e related to the modem dri"er. Try to use Pair de%ice.
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
Credits
Staff
5e"eloper) #olodymyr Ter
Portions of tis software are cop!rigted b!:
'a"igation $er"ices #$ IT5
Copyright (C) 2008-200 Eterlogic.com. !ll rights reser"ed.
#irtual serial ports emulator pro>ect
#irtual serial ports emulator pro>ect
Page 28 of 28
10/1/2013 file:///C:/Users/Administrador/AppData/Local/Temp/~!8"1#tm