{"id":5774,"date":"2024-06-19T16:00:03","date_gmt":"2024-06-19T08:00:03","guid":{"rendered":"https:\/\/www.tosunai.com\/?p=5774"},"modified":"2024-06-25T12:48:27","modified_gmt":"2024-06-25T04:48:27","slug":"how-to-filter-common-bus-message-signals-in-tsmaster","status":"publish","type":"post","link":"https:\/\/www.tosunai.com\/en\/how-to-filter-common-bus-message-signals-in-tsmaster\/","title":{"rendered":"Sharing | How to Filter Different Bus Messages in TSMaster"},"content":{"rendered":"
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\tTSMaster software platform supports different bus (CAN, LIN, FlexRay) message and signal filtering, including global receive filtering, data stream filtering, window filtering, string filtering, programmable filtering, for different bus signal filters are basically the same way to use. Today, we would like to share with you the various ways to operate the message filtering in TSMaster, and the overall introduction of this article is as follows:.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t

Keywords in this article: CAN, LIN, FlexRay, telegram message filtering<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t

\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
Table of Contents for this article<\/h6>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
<\\\/path><\\\/svg>"},"no_headings_message":"\\u672c\\u9875\\u672a\\u627e\\u5230\\u6807\\u9898\\u3002","hierarchical_view":"yes","min_height":{"unit":"px","size":"","sizes":[]},"min_height_widescreen":{"unit":"px","size":"","sizes":[]},"min_height_laptop":{"unit":"px","size":"","sizes":[]},"min_height_tablet_extra":{"unit":"px","size":"","sizes":[]},"min_height_tablet":{"unit":"px","size":"","sizes":[]},"min_height_mobile_extra":{"unit":"px","size":"","sizes":[]},"min_height_mobile":{"unit":"px","size":"","sizes":[]}}\" data-widget_type=\"table-of-contents.default\">\n\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t
\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t
\n\t\t\t
\n\t\t\t\t<\/path><\/svg>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t

I. CAN message message filtering<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t

The following filtering operations are used in CAN message information: global receive filtering, data stream filtering, window filtering, string filtering, and programmable filtering; these filtering operations are explained in detail below.<\/p>

1. Global reception filtering<\/b><\/h3>

Global receive filtering means to complete the setting of filtering on the hardware controller, this way is limited to support the hardware of the same star and the virtual channel of the same star, other manufacturers' devices are not supported. Before operation, you need to select the hardware channel to the same star device, here take TC1016 as an example.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t

\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\"Global\t\t\t\t\t\t\t\t\t\t\t
Figure 1<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\tThen open Bus Hardware-CAN Hardware Configuration-Filter ID Settings as shown in Figure II. Choose to filter standard and extended frames, the default is pass filter, can not be modified to block filter. The filtering condition is to identify each binary bit of the message ID, each bit corresponds to three setup characters \"0, 1, x\", x means that the bit can be either 0 or 1. If you only need to filter one ID, you can also directly specify the identifier, and after completing the setup, a list of identifiers that can be passed will be displayed at the bottom, and the sitting party can verify whether the desired identifier can pass through this ID, or not. If you want to filter only one ID, you can also specify the identifier directly.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\"bus\t\t\t\t\t\t\t\t\t\t\t
Figure 2<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t

2. Data stream filtering (measurement filters)<\/b><\/h3>

TSMaster software has a measurement setting window, in which you can combine the data flow direction to realize the effect of filtering, and also supports adding a filter window in front of the window.<\/p>

The basic idea is that the data flow through a window, the data contained in this window is allowed to pass, other data is not allowed to pass. As shown in the figure below, in the measurement setup window, the message information #2, measurement filters, graphic three windows for topology connection, from the message information window can see that there is a EngineData message under the EngSpeed signal, but in the graphic window is n.a., indicating that it is invalid. This is because a filter has been added to the measurement settings to block the EngineData on channel one.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t

\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\"stream\t\t\t\t\t\t\t\t\t\t\t
Figure 3<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t

Measurement of the window filter is in the window click on any window selected box right-click and select Insert Filter, you can also directly in the margins of the choice to add and then dragged to the back of another window. Double-click to open the inserted filter, where you can select the channel to be filtered, the filter conditions here to support any message, a single ID, ID range, node filtering, as well as error frame filtering, and finally need to pay attention to is the type of filter you can choose to pass through the type or block type.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t

\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t

3. Message ID Filter<\/b><\/h3>

This filter directly click the funnel icon in the message information window to pop up the configuration window, applicable to real-time listening to bus data or message playback when the operation, where theSupports Message ID Filtering<\/strong>and Channel Filtering, it is important to note whether the selection in the lower left corner is pass-through or block-through.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t

\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\"Message\t\t\t\t\t\t\t\t\t\t\t
Figure 4<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t

4. String filtering (recommended to load DBC database)<\/b><\/h3>

String filtering is the same as window filtering and supports fuzzy query. The scope of filtering includes the message identifier, the parsed message name, and the physical value (enumerated value) in the message information, and the parsing of the message needs to load the database and bind the corresponding channel in advance. Here it is recommended to load the DBC database.<\/p><\/section>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t

\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\"String\t\t\t\t\t\t\t\t\t\t\t
Figure 5<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t

5\u3001Programmable filtration<\/b><\/h3>

Programming filter is one of the most complete filter conditions, it filters the conditions including all the member attributes of the message structure body, specifically can be viewed from the TSMaster header file, including the message frame type, send and receive direction, DLC and so on. The use of this filter need to first click on the message information window in the upper right corner of the funnel icon, select the activation of the filter, and then select the installation of the default filter library; after the installation is complete, the default library will pop up the C applet, the applet can be seen, respectively, for the CAN, LIN, FlexRay, Ethernet created a custom function to distinguish between the definition of its structure are in the TSMaster.h header file can be found.\u00a0<\/p>

The key point is this:A return of 0 indicates that the eligible message is blocked, while a return of non-zero indicates that the message is windowable.<\/b><\/p><\/section>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t

\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\"Programmable\t\t\t\t\t\t\t\t\t\t\t
Figure 6<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\"Programmable\t\t\t\t\t\t\t\t\t\t\t
Figure 7<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t

The following is the operation of pass-through filtering for channel one messages. After writing the code, you need to compile the applet, and finally, you can select the corresponding API function in the programmable filter.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t

\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\"Programmable\t\t\t\t\t\t\t\t\t\t\t
Figure 8<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\"Programmable\t\t\t\t\t\t\t\t\t\t\t
Figure 9<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\"\"\t\t\t\t\t\t\t\t\t\t\t
Figure 10<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t

II. LIN Message Filtering<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t

The filtering of LIN telegram messages is done by the following filtering operations.<\/p>

1. Data stream filtering<\/b><\/h3>

Configure the topology of the three windows of the measurement filter, LIN message information #2, and graphics in the measurement setup, and as a result, you can see that after the filter only the frame 0x15 of this message passes through to arrive at the message information window, and at the same time, the value of the SteeringLampState signal in the graphics window is n.a. invalid value. From the message information window, you can see that the original data stream has this signal data.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t

\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\"LIN\t\t\t\t\t\t\t\t\t\t\t
Figure 11<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t

2. Message ID window filtering<\/b><\/h3>

Window filtering is different from the previous one in that the channel filtering settings are moved to the lower right corner of the filter setting window, and will take effect immediately after activating the enabling filter by selecting only channel 1 or other; in addition, the channel of the added identifier corresponds to the channel configured in the lower right corner, which is different from the window filtering of the CAN as mentioned earlier.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t

\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\"Window\t\t\t\t\t\t\t\t\t\t\t
Figure 12<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t

3. String filtering (recommended to load DBC database)<\/b><\/h3>

The scope of string filtering is also the message identifier, the message name after parsing the message information name, and the physical value (enumeration value) in the message information.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t

\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\"message\t\t\t\t\t\t\t\t\t\t\t
Figure 13<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t

4\u3001Programmable filtration<\/b><\/h3>

As shown in the figure below, messages that pass through channel one and have a first message data byte of 0x00 are filtered by programmable.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t

\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\"Message\t\t\t\t\t\t\t\t\t\t\t
Figure 14<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\"Message\t\t\t\t\t\t\t\t\t\t\t
Figure 15<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t

III. FlexRay Message Message Filtering<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t

The only FlexRay message filters for telegrams are window filtering, string filtering, and programmable filtering.<\/p>

1\u3001Window filtering<\/b><\/h3>

FlexRay window filtering supports adding channel filters and adding corresponding messages from the database.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t

\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\"flexray\t\t\t\t\t\t\t\t\t\t\t
Figure 16<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t

2\u3001String filtering<\/b><\/h3>

String filtering is used in the same way as CAN and LIN for signal keyword search.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t

\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\"String\t\t\t\t\t\t\t\t\t\t\t
Figure 17<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t

3\u3001Programmable filtration<\/b><\/h3>

Programmable filtering is also accomplished by making conditional judgments on FR structure members. The following is an example of the range filtering that can be achieved for Slot id.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t

\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\"Operation\t\t\t\t\t\t\t\t\t\t\t
Figure 18<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\"Operation\t\t\t\t\t\t\t\t\t\t\t
Figure 19<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"

The TSMaster software platform supports the filtering of messages and signals for different buses (CAN, LIN, FlexRay), including global receive filtering, number [...]<\/p>","protected":false},"author":4,"featured_media":10557,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"","ocean_second_sidebar":"","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"","ocean_custom_header_template":"","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"","ocean_menu_typo_font_family":"","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"","ocean_post_oembed":"","ocean_post_self_hosted_media":"","ocean_post_video_embed":"","ocean_link_format":"","ocean_link_format_target":"self","ocean_quote_format":"","ocean_quote_format_link":"post","ocean_gallery_link_images":"on","ocean_gallery_id":[],"footnotes":""},"categories":[90],"tags":[62,67,70,65,231,112],"class_list":["post-5774","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software-tutorial","tag-can","tag-flexray","tag-lin","tag-tsmaster","tag-231","tag-112","entry","has-media","owp-thumbs-layout-horizontal","owp-btn-normal","owp-tabs-layout-horizontal","has-no-thumbnails","has-product-nav"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.tosunai.com\/en\/wp-json\/wp\/v2\/posts\/5774","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tosunai.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tosunai.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tosunai.com\/en\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tosunai.com\/en\/wp-json\/wp\/v2\/comments?post=5774"}],"version-history":[{"count":0,"href":"https:\/\/www.tosunai.com\/en\/wp-json\/wp\/v2\/posts\/5774\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.tosunai.com\/en\/wp-json\/wp\/v2\/media\/10557"}],"wp:attachment":[{"href":"https:\/\/www.tosunai.com\/en\/wp-json\/wp\/v2\/media?parent=5774"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tosunai.com\/en\/wp-json\/wp\/v2\/categories?post=5774"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tosunai.com\/en\/wp-json\/wp\/v2\/tags?post=5774"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}