Change a virtual null modem driver to corrupt data based on a set bit error ratio
$100-1000 USD
已取消
已发布将近 16 年前
$100-1000 USD
货到付款
Modify the source code from the com0com project at [login to view URL] This project currently implements a configurable virtual null modem between two COM ports.
Add a feature, where a Bit Error Ratio, BER, see [login to view URL] can be configured between each installed virtual null modem. The default BER will be 0, i.e. a perfect link. The BER? can be set from the setup program in the project? as an additional option. When the BER is set, the corruption of bits will be random and statistically based on the set BER.
The BER feature should be added without affecting any of the existing functionalities of com0com. This includes the its ability to run on Windows 2000, XP, Windows Server 2003, 64-bit Windows. When BER is 0 (default), ? the software should operate exactly like the original.
A range of configurable BER should be supported from 0 to 1 (totally lossy), with a step of at least 0.01.
Modifications should be made to the current version of com0com, v2.0.0.0. If the author of com0com releases a later version, there will not be a requirement to update the feature for the later version (although it would be very much appreciated).
## Deliverables
* * *This broadcast message was sent to all bidders on Thursday Jun 5, 2008 3:37:07 PM:
When you install com0com, you will see a setup program that allows the set up of virtual null modems.
I want the BER feature to be included as an additional parameter. Type "help" in the setup program and you will know what I mean.
I paste the help below:
-------------------------------------------------
Enter 'help' to get info about usage of Setup for com0com.
command> help
Setup for com0com
Usage:
[options]
Options:
--output - file for output, default is console
--detail-prms - show detailed parameters
Commands:
install - install a pair of linked ports with
or identifiers CNCA and CNCB
install (by default is the first not used number),
set their parameters to and
remove - remove a pair of linked ports with
identifiers CNCA and CNCB
disable all - disable all ports in current hardware profile
enable all - enable all ports in current hardware profile
change - set parameters for port with
identifier
list - for each port show its identifier and
parameters
preinstall - preinstall driver
update - update driver
uninstall - uninstall all ports and the driver
quit
Syntax of port parameters string:
- - use driver's defaults for all parameters
* - use current settings for all parameters
=[,...] - set value for each parameter
Parameters:
PortName= - set port name to
(port identifier by default)
EmuBR={yes|no} - enable/disable baud rate emulation in the direction
to the paired port (disabled by default)
EmuOverrun={yes|no} - enable/disable buffer overrun (disabled by default)
PlugInMode={yes|no} - enable/disable plug-in mode, the plug-in mode port
is hidden and can't be open if the paired port is
not open (disabled by default)
ExclusiveMode={yes|no} - enable/disable exclusive mode, the exclusive mode
port is hidden if it is open (disabled by default)
cts=[!]
- wire CTS pin to
(rrts by default)
dsr=[!]
- wire DSR pin to
(rdtr by default)
dcd=[!]
- wire DCD pin to
(rdtr by default)
ri=[!]
- wire RI pin to
(!on by default)
The possible values of
above can be rrts, lrts, rdtr, ldtr, rout1, lout1
(remote/local RTS/DTR/OUT1), ropen, lopen (logical ON if remote/local port is
open) or on (logical ON). The exclamation sign (!) can be used to invert the
value.
Special values:
- - use driver's default value
* - use current setting
Examples:
install - -
install 5 * *
remove 0
install PortName=COM2 PortName=COM4
install PortName=COM5,EmuBR=yes,EmuOverrun=yes -
change CNCA0 EmuBR=yes,EmuOverrun=yes
list
uninstall
-------------------------------------------------
The command that I expect to type at the end of this project is probably something like the below:
command> install PortName=COM2 PortName=COM3,EmuBR=yes,EmuOverrun=yes,BER=0.008
I would expect that after this, the data that is sent from COM3 to COM2 will be randomly corrupted (bit inverted) with a statistic of 8 bit errors for every 1000 bits. BER means transmit BER only. Hence data from COM2 to COM3 will be lossless as this is the default. If I want corruption both ways, I would specify as so:
command> install PortName=COM2,BER=0.005 PortName=COM3,EmuBR=yes,EmuOverrun=yes,BER=0.008
You will notice that I have added other options EmuBR and EmuOverrun. This is meant to highlight that existing options must still be avialable and unaffected by your changes. Therefore, if a program sends data from COM3 at rates beyond that allowed by the baud rate which it is opened, the data will be lost due to buffer overrun as in the original implementation. This is over and above the BER that we would expect.
**Also, I wish to post a small correction. The BER shall be configurable in steps of 0.001, instead of 0.01 as in the bid. It means the least lossy response will be 1 bit error for each 1000 bits.**