class Serial_read Modelica_DeviceDrivers.Blocks.OperatingSystem.SynchronizeRealtime synchronizeRealtime annotation( Placement(transformation(extent = {{62, 50}, {82, 70}}))); Modelica_DeviceDrivers.Blocks.Packaging.SerialPackager.UnpackUnsignedInteger unpackInt(nu = 1, width = 8) annotation( Placement(visible = true, transformation(extent = {{4, -4}, {24, 16}}, rotation = 0))); Modelica_DeviceDrivers.Blocks.Packaging.SerialPackager.GetInteger getInteger annotation( Placement(visible = true, transformation(extent = {{4, -66}, {24, -46}}, rotation = 0))); Modelica_DeviceDrivers.Blocks.Communication.SerialPortReceive serialReceive(Serial_Port = "/dev/ttyACM1", autoBufferSize = true, baud = Modelica_DeviceDrivers.Utilities.Types.SerialBaudRate.B115200, enableExternalTrigger = false, sampleTime = 0.002) annotation( Placement(visible = true, transformation(origin = {14, 54}, extent = {{-10, -10}, {10, 10}}, rotation = -90))); equation connect(serialReceive.pkgOut, unpackInt.pkgIn) annotation( Line(points = {{14, 43}, {14, 17}})); connect(unpackInt.pkgOut[1], getInteger.pkgIn) annotation( Line(points = {{14, -5}, {14, -45}}, thickness = 0.5)); annotation( Documentation(info = "

Example for serial port support

Hardware setup

In order to execute the example an appropriate physical connection between the sending and the receiving serial port needs to be established, (e.g., by using a null modem cable between the two serial port interfaces http://en.wikipedia.org/wiki/Null_modem). In fact a minimal mull modem with lines (TxD, Rxd and GND) is sufficient. Next, the SerialPortReceive and SerialPortSend blocks parameters must be updated with the device filenames corresponding to the connected physical serial ports. Now, the example can be executed.

Alternative: Using virtual serial port devices for test purposes

To run the example without serial port hardware, it is possible to resort to virtual serial ports. Possible ways of doing this are described in the following.

On Linux, make sure that socat is installed, e.g., on an Ubuntu machine do

sudo aptitude install socat

Now open a console and create two virtual serial port interfaces using socat:

socat -d -d pty,raw,echo=0 pty,raw,echo=0

The socat program will print the device file names that it created. The output will resemble the following:

2013/11/24 15:20:21 socat[3262] N PTY is /dev/pts/1
2013/11/24 15:20:21 socat[3262] N PTY is /dev/pts/3
2013/11/24 15:20:21 socat[3262] N starting data transfer loop with FDs [3,3] and [5,5]

Use them in the Send and Receive block. E.g., for the output above you would use "/dev/pts/1" in SerialPortReceive and "/dev/pts/3" in SerialPortSend.

You may have also have a look at the discussion about virtual serial port devices on stackoverflowhttp://stackoverflow.com/questions/52187/virtual-serial-port-for-linux.

On Windows, make sure that the null modem emulator com0com is installed.

Start the Setup for com0com and check the device names of the created virtual port pair. E.g. you could type "COM6" in SerialPortReceive and "COM7" in SerialPortSend.

")); end Serial_read;