MV I/O RS232 Serial Port DirectShow Filter

The MontiVision I/O RS232 Input and Output Filter is used to communicate with an device via the RS232 port.

It has three major tasks:

The filter supports following I/O pin types:

I/O Pin Type min. value max. value size in bytes

UINT8

0 255 1
INT8 -128 128 1
UINT16 0 65535 2
INT16 -32768 32767 2
UINT32 0 4294967295 4
INT32 -2147483648 2147483647 4
UINT64 0 18446744073709551615 8
INT64 -9223372036854775808 9223372036854775807 8
FLOAT ca. 3.4E-38 3.4E+38 4
DOUBLE ca. 1.7E-308 1.7E+308 8
BOOL FALSE = 0 TRUE = 1

1 (RS232)
4 (PC)

STRING - - max. 4096

The filter connects to pins with these I/O pin types. It converts each received or sent data (ASCII into hexadecimal and vice versa) on this basis. So be sure to generate and receive (parse) the data properly. A wrong bytesize used for e.g. UINT8 (1 byte length) in combination with numbers higher 255 will create a wrong result.

This MontiVision DirectShow Filter is used in combination with the MontiVision Smart Control in the SendReceiveRS232 Sample Application.

 

File: MVIORS232.ax
CLSID: CLSID_MVIORS232

 

Supported Interfaces

IMVIORS232

IMVIORS232DataASCII

IMVIORS232DataHex

IMVIORS232RXTXConnection

IMVFilterData

IMVAbout

 

Supported COM Events

The filter supports following events through the IMVFilterEvents interface. Look at the filter events page for more information.

Event

Value

Description
MV_CANT_WRITE_TO_COM_PORT_EVENT

11

The filter wasn't able to write data to the COM port.
MV_CANT_OPEN_COM_PORT_EVENT

10

The filter couldn't open the COM port.
MV_CANT_READ_FROM_COM_PORT_EVENT

12

The filter wasn't able to read data from the COM port.
MV_CANT_GET_EVENT_FROM_COM_PORT_EVENT

13

The filter didn't get any reply from the COM port.
MV_IO_DATA_RECEIVE_EVENT

5

Signals the receipt of new data from the COM port.
MV_RXTXCONNECTION_ON_EVENT

28

Singnals that the Rx and Tx lines are connected.
MV_RXTXCONNECTION_OFF_EVENT

29

Singnals that the Rx and Tx lines are disconnected.

 

MV I/O RS232 Interface Configuration Property Page

Implements a part of the IMVIORS232 configuartion interface. You can set the com port, baud rate and state information strings.

MontiVision I/O RS232 DirectShow Filter COM Port Configuration Property Page

 

Select COM port

Selects the COM port.
Select baud rate Selects the Baud Rate. Be sure that your hardware supports this speed.
On Pause send... Enter the data which will be send to the RS232 device when the graph switches into pause state.
On Start send... Enter the data which will be send to the RS232 device when the graph switches into running state.
On Stop send... Enter the data which will be send to the RS232 device when the graph switches into stop state.
Transfer Type: ASCII Enter data in ASCII chars.
Transfer Type: Binary Enter data in hexadecimal values (You may use prefix 0x for hexadecimal input. All entered data will be interpreted as hexadecimal values. Valid chars are: 0-9, A-F, a-f).

 

Transfer Type:
The Transfer Type can be set to ASCII or Binary. All entered data (implicates all propertypages) will be interpreted as ASCII if you set it to ASCII. And the same counts for setting the type to Binary: all data will be interpreted as binary (hexadecimal) values. You need to add at least a prefix to deliver data to an outputpin. You may add prefixes and postfixes to all pins (here).

ASCII:
The data received by the filter`s input pins will be converted to ASCII. So if your pin uses e.g. an UINT8 MediaType connection, each UINT8 will be converted to a string and delivered to the RS232 device. The String has a variable length. It is terminated by a 0x00 (for c programmers: '\0') or by a given postfix (here).
The data received by the RS232 port will be delivered to the outputpins. The ASCII data will be converted to the MediaType used by the outputpin, e.g. INT32. The data must have a prefix and must be terminated by 0x00 (for c programmers: '\0') or with a given postfix(here) to deliver it to an outputpin.

Binary:
The data received by the filter`s input pins will be delivered without any conversion to the RS232 device. So if you have a UINT8 MediaType connection, the UINT8 (one byte) will be sent to the RS232 device. The data uses the length of the used MediaType plus the otpional postfix and prefix (here).
The data received by the RS232 port will be delivered without any conversion to the outputpins. It depends on the outpupin MediaType, which datasize is used for each data. The data must have a prefix and may have postfix (here) to deliver it to an outputpin.

State information strings:
The state information strings will be sent to the RS232 device once if the graph changes the state. If the graph changes its state from e.g. State_Stopped to State_Paused the entered string (in the upper example picture "pause") will be sent. If you don`t need the state information leave the edit boxes blank.

 

MV I/O RS232 Pin Configuration Property Page

Implements a part of the IMVIORS232 configuartion interface. The I/O input- and output pins are using the same configuration page. In this case we use the inputpin page to explain the usage. Below you see two propertypages. Both pages show the inputpin configuration propertypage. But in the left picture you can see that no inputpin is connected to another filter. In the right picture you see three connected inputpins. We are in ASCII Mode. The pin "Input0" is selected and it`s prefix is set to "In0" and the postfix is set to "0In".

 

I/O RS232 Filter - Pin Configuration I/O RS232 Filter - Pin Configuration

 

Input Pins

This list shows the currently connected pins of type input or output (type input pin type is used here). The list is empty if no pin is connected (see left picture).

Prefix

Input Pins : Enter the data which will be sent previous to the input pin data to the RS232 device. Leave it blank if no data should be sent.
Output Pins: Enter the preceding data which is followed by the output pin data received from the RS232 device. If nothing is entered here, the pin won`t get any data.

Postfix

Input Pins: Enter the data which is sent after the input pin data to the RS232 device. ASCII Mode: If the field is blank, a null character (0x00, '\0') will be added behind the converted pin value automatically.
Output Pins: Enter the data which follows the output pin data received from the RS232 device.

 

Transfer mode information: you are able to set the transfer mode to BINARY or ASCII MODE (see her here). This setting will be shown above the prefix and postfix.

ASCII MODE

Enter data to be sent or to be received in ASCII chars.

BINARY MODE
(shown in the picture below)

Enter data to be sent or to be received  in hexadecimal chars (you may enter a prefix 0x. All entered characters are interpreted as hexadecimal values. Valid chars are 0-9, A-F, a-f).

I/O RS232 Filter - Pin Configuration

 

 

MV I/O RS232 Timer Property Page

Implements a part of the IMVIORS232 configuartion interface. Timers are useful for polling or sending alive messages to you RS232 device. You may add up to 16 timers (multimediatimers) with 1ms resolution. All timers are started the time the graph enters the State_Running. After a timer timed out the entered string will be sent to the RS232 device. You can change each timer`s name. 

I/O RS232 Filter - Pin Configuration

 

Timer List of defined timers.
Add timer Creates a new timer with a default timer name.
Delete timer Deletes the selected timer.
Timer name Enter a custom timer name for the selected timer.
String This data will be sent periodically to the RS232 device after the given timeout. ASCII MODE: a null (0x00, '\0') will be added after the entered characters to terminate this string.
Timeout in ms Enter the timer interval in ms from 1...9999999 ms.

Transfer mode information: you are able to set the transfer mode to BINARY or ASCII MODE (see here). This setting will be shown above the string.

ASCII MODE

Enter data to be sent or to be received in ASCII chars.

BINARY MODE
(shown in the picture below)

Enter data to be sent or to be received  in hexadecimal chars (you may enter a prefix 0x. All entered characters are interpreted as hexadecimal value. Valid chars are 0-9, A-F, a-f).