<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to CRC_CHECK and CRC_GEN</title><link href="https://forge.codesys.com/forge/talk/CODESYS-V2/thread/9027278666/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/CODESYS-V2/thread/9027278666/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/CODESYS-V2/thread/9027278666/</id><updated>2020-02-27T19:34:26.929000Z</updated><subtitle>Recent posts to CRC_CHECK and CRC_GEN</subtitle><entry><title>CRC_CHECK and CRC_GEN</title><link href="https://forge.codesys.com/forge/talk/Codesys%2520V2.3/thread/9027278666/?limit=25#b107" rel="alternate"/><published>2020-02-27T19:34:26.929000Z</published><updated>2020-02-27T19:34:26.929000Z</updated><author><name>Avgur</name><uri>https://forge.codesys.com/u/avgur/</uri></author><id>https://forge.codesys.comb2937537ec4c73309518e2bebde963f231642290</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;oscat304.lib all help about CRC functions in English&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CRC_CHECK&lt;/strong&gt;&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;FUNCTION&lt;/span&gt; &lt;span class="nv"&gt;CRC_CHECK&lt;/span&gt; : &lt;span class="nv"&gt;BOOL&lt;/span&gt;
&lt;span class="nv"&gt;VAR_INPUT&lt;/span&gt;
   &lt;span class="nv"&gt;pt&lt;/span&gt; : &lt;span class="nv"&gt;POINTER&lt;/span&gt; &lt;span class="nv"&gt;TO&lt;/span&gt; &lt;span class="nv"&gt;ARRAY&lt;/span&gt;[&lt;span class="mi"&gt;0&lt;/span&gt;..&lt;span class="mi"&gt;32000&lt;/span&gt;] &lt;span class="nv"&gt;OF&lt;/span&gt; &lt;span class="nv"&gt;BYTE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;size&lt;/span&gt; : &lt;span class="nv"&gt;UINT&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;END_VAR&lt;/span&gt;
&lt;span class="nv"&gt;VAR_INPUT&lt;/span&gt; &lt;span class="nv"&gt;CONSTANT&lt;/span&gt;
   &lt;span class="nv"&gt;Polynom_L&lt;/span&gt; : &lt;span class="nv"&gt;DWORD&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;Polynom_32&lt;/span&gt; : &lt;span class="nv"&gt;BOOL&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;END_VAR&lt;/span&gt;
&lt;span class="nv"&gt;VAR&lt;/span&gt;
&lt;span class="nv"&gt;END_VAR&lt;/span&gt;
&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="nv"&gt;version&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;.&lt;span class="mi"&gt;1&lt;/span&gt;   &lt;span class="mi"&gt;16&lt;/span&gt;. &lt;span class="nv"&gt;mar&lt;/span&gt;. &lt;span class="mi"&gt;2008&lt;/span&gt;
&lt;span class="nv"&gt;programmer&lt;/span&gt;    &lt;span class="nv"&gt;hugo&lt;/span&gt;
&lt;span class="nv"&gt;tested&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt;      &lt;span class="nv"&gt;tobias&lt;/span&gt;
&lt;span class="nv"&gt;CRC_CHECK&lt;/span&gt; &lt;span class="nv"&gt;checks&lt;/span&gt; &lt;span class="nv"&gt;a&lt;/span&gt; &lt;span class="nv"&gt;block&lt;/span&gt; &lt;span class="nv"&gt;of&lt;/span&gt; &lt;span class="nv"&gt;data&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nv"&gt;a&lt;/span&gt; &lt;span class="nv"&gt;crc&lt;/span&gt; &lt;span class="nv"&gt;checksum&lt;/span&gt; &lt;span class="nv"&gt;and&lt;/span&gt; &lt;span class="nv"&gt;returns&lt;/span&gt; &lt;span class="nv"&gt;true&lt;/span&gt; &lt;span class="nv"&gt;is&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;checksum&lt;/span&gt; &lt;span class="nv"&gt;is&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="nv"&gt;and&lt;/span&gt; &lt;span class="nv"&gt;therfore&lt;/span&gt; &lt;span class="nv"&gt;a&lt;/span&gt; &lt;span class="nv"&gt;error&lt;/span&gt; &lt;span class="nv"&gt;free&lt;/span&gt; &lt;span class="nv"&gt;data&lt;/span&gt; &lt;span class="nv"&gt;transmission&lt;/span&gt;.
&lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;CRC&lt;/span&gt; &lt;span class="nv"&gt;Polynom&lt;/span&gt; &lt;span class="nv"&gt;is&lt;/span&gt; &lt;span class="nv"&gt;specified&lt;/span&gt; &lt;span class="nv"&gt;with&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;config&lt;/span&gt; &lt;span class="nv"&gt;variable&lt;/span&gt; &lt;span class="nv"&gt;Polynom_L&lt;/span&gt; &lt;span class="nv"&gt;which&lt;/span&gt; &lt;span class="nv"&gt;holds&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;lowest&lt;/span&gt; &lt;span class="mi"&gt;32&lt;/span&gt; &lt;span class="nv"&gt;bits&lt;/span&gt; &lt;span class="nv"&gt;of&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;polynom&lt;/span&gt; &lt;span class="nv"&gt;and&lt;/span&gt; &lt;span class="nv"&gt;Polynom_33&lt;/span&gt; &lt;span class="nv"&gt;which&lt;/span&gt; &lt;span class="nv"&gt;holds&lt;/span&gt; &lt;span class="nv"&gt;bit&lt;/span&gt; &lt;span class="mi"&gt;33&lt;/span&gt; &lt;span class="nv"&gt;of&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;Polynom&lt;/span&gt;.
&lt;span class="nv"&gt;A&lt;/span&gt; &lt;span class="nv"&gt;Polynom&lt;/span&gt; &lt;span class="nv"&gt;x4&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;X&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="nv"&gt;is&lt;/span&gt; &lt;span class="nv"&gt;represented&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="mi"&gt;10011&lt;/span&gt;.
&lt;span class="nv"&gt;The&lt;/span&gt; &lt;span class="nv"&gt;input&lt;/span&gt; &lt;span class="nv"&gt;data&lt;/span&gt; &lt;span class="nv"&gt;is&lt;/span&gt; &lt;span class="nv"&gt;an&lt;/span&gt; &lt;span class="nv"&gt;array&lt;/span&gt; &lt;span class="nv"&gt;of&lt;/span&gt; &lt;span class="nv"&gt;byte&lt;/span&gt; &lt;span class="nv"&gt;of&lt;/span&gt; &lt;span class="nv"&gt;any&lt;/span&gt; &lt;span class="nv"&gt;size&lt;/span&gt;, &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;function&lt;/span&gt; &lt;span class="nv"&gt;is&lt;/span&gt; &lt;span class="nv"&gt;called&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="nv"&gt;CRC_CHECK&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;ADR&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;array&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;,&lt;span class="nv"&gt;SIZEOF&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;array&lt;/span&gt;&lt;span class="ss"&gt;))&lt;/span&gt;.
&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;CRC_GEN&lt;/strong&gt;&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;FUNCTION&lt;/span&gt; &lt;span class="nv"&gt;CRC_GEN&lt;/span&gt; : &lt;span class="nv"&gt;DWORD&lt;/span&gt;
&lt;span class="nv"&gt;VAR_INPUT&lt;/span&gt;
   &lt;span class="nv"&gt;pt&lt;/span&gt; : &lt;span class="nv"&gt;POINTER&lt;/span&gt; &lt;span class="nv"&gt;TO&lt;/span&gt; &lt;span class="nv"&gt;ARRAY&lt;/span&gt;[&lt;span class="mi"&gt;0&lt;/span&gt;..&lt;span class="mi"&gt;32000&lt;/span&gt;] &lt;span class="nv"&gt;OF&lt;/span&gt; &lt;span class="nv"&gt;BYTE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;size&lt;/span&gt; : &lt;span class="nv"&gt;UINT&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;END_VAR&lt;/span&gt;
&lt;span class="nv"&gt;VAR_INPUT&lt;/span&gt; &lt;span class="nv"&gt;CONSTANT&lt;/span&gt;
   &lt;span class="nv"&gt;Polynom_L&lt;/span&gt; : &lt;span class="nv"&gt;DWORD&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;Polynom_32&lt;/span&gt; : &lt;span class="nv"&gt;BOOL&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;init&lt;/span&gt;: &lt;span class="nv"&gt;DWORD&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;XOR_out&lt;/span&gt; : &lt;span class="nv"&gt;DWORD&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;rev_in&lt;/span&gt; : &lt;span class="nv"&gt;BOOL&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;rev_out&lt;/span&gt; : &lt;span class="nv"&gt;BOOL&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;END_VAR&lt;/span&gt;
&lt;span class="nv"&gt;VAR&lt;/span&gt;
   &lt;span class="nv"&gt;polynom&lt;/span&gt; : &lt;span class="nv"&gt;DWORD&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;p_length&lt;/span&gt; : &lt;span class="nv"&gt;INT&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;BS&lt;/span&gt; : &lt;span class="nv"&gt;BYTE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;data&lt;/span&gt; : &lt;span class="nv"&gt;DWORD&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;count&lt;/span&gt; : &lt;span class="nv"&gt;BYTE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;temp&lt;/span&gt; : &lt;span class="nv"&gt;BOOL&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;step&lt;/span&gt;: &lt;span class="nv"&gt;INT&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;s4&lt;/span&gt;: &lt;span class="nv"&gt;INT&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;END_VAR&lt;/span&gt;
&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="nv"&gt;version&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;.&lt;span class="mi"&gt;4&lt;/span&gt;   &lt;span class="mi"&gt;16&lt;/span&gt;. &lt;span class="nv"&gt;mar&lt;/span&gt;. &lt;span class="mi"&gt;2008&lt;/span&gt;
&lt;span class="nv"&gt;programmer&lt;/span&gt;    &lt;span class="nv"&gt;hugo&lt;/span&gt;
&lt;span class="nv"&gt;tested&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt;      &lt;span class="nv"&gt;tobias&lt;/span&gt;
&lt;span class="nv"&gt;CRC_GEN&lt;/span&gt; &lt;span class="nv"&gt;generates&lt;/span&gt; &lt;span class="nv"&gt;a&lt;/span&gt; &lt;span class="nv"&gt;CRC&lt;/span&gt; &lt;span class="nv"&gt;checksum&lt;/span&gt; &lt;span class="nv"&gt;from&lt;/span&gt; &lt;span class="nv"&gt;a&lt;/span&gt; &lt;span class="nv"&gt;block&lt;/span&gt; &lt;span class="nv"&gt;of&lt;/span&gt; &lt;span class="nv"&gt;data&lt;/span&gt; &lt;span class="nv"&gt;and&lt;/span&gt; &lt;span class="nv"&gt;returns&lt;/span&gt;  &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;checksum&lt;/span&gt; &lt;span class="nv"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;a&lt;/span&gt; &lt;span class="nv"&gt;DWORD&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;be&lt;/span&gt; &lt;span class="nv"&gt;connected&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;data&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nv"&gt;transmission&lt;/span&gt;.
&lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;CRC&lt;/span&gt; &lt;span class="nv"&gt;Polynom&lt;/span&gt; &lt;span class="nv"&gt;is&lt;/span&gt; &lt;span class="nv"&gt;specified&lt;/span&gt; &lt;span class="nv"&gt;with&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;config&lt;/span&gt; &lt;span class="nv"&gt;variable&lt;/span&gt; &lt;span class="nv"&gt;Polynom_L&lt;/span&gt; &lt;span class="nv"&gt;which&lt;/span&gt; &lt;span class="nv"&gt;holds&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;lowest&lt;/span&gt; &lt;span class="mi"&gt;32&lt;/span&gt; &lt;span class="nv"&gt;bits&lt;/span&gt; &lt;span class="nv"&gt;of&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;polynom&lt;/span&gt; &lt;span class="nv"&gt;and&lt;/span&gt; &lt;span class="nv"&gt;Polynom_33&lt;/span&gt; &lt;span class="nv"&gt;which&lt;/span&gt; &lt;span class="nv"&gt;holds&lt;/span&gt; &lt;span class="nv"&gt;bit&lt;/span&gt; &lt;span class="mi"&gt;33&lt;/span&gt; &lt;span class="nv"&gt;of&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;Polynom&lt;/span&gt;.
&lt;span class="nv"&gt;A&lt;/span&gt; &lt;span class="nv"&gt;Polynom&lt;/span&gt; &lt;span class="nv"&gt;x4&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;X&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="nv"&gt;is&lt;/span&gt; &lt;span class="nv"&gt;represented&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="mi"&gt;10011&lt;/span&gt;.
&lt;span class="nv"&gt;The&lt;/span&gt; &lt;span class="nv"&gt;input&lt;/span&gt; &lt;span class="nv"&gt;data&lt;/span&gt; &lt;span class="nv"&gt;is&lt;/span&gt; &lt;span class="nv"&gt;an&lt;/span&gt; &lt;span class="nv"&gt;array&lt;/span&gt; &lt;span class="nv"&gt;of&lt;/span&gt; &lt;span class="nv"&gt;byte&lt;/span&gt; &lt;span class="nv"&gt;of&lt;/span&gt; &lt;span class="nv"&gt;any&lt;/span&gt; &lt;span class="nv"&gt;size&lt;/span&gt;, &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;function&lt;/span&gt; &lt;span class="nv"&gt;is&lt;/span&gt; &lt;span class="nv"&gt;called&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="nv"&gt;CRC_GEN&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;ADR&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;array&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;,&lt;span class="nv"&gt;SIZEOF&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;array&lt;/span&gt;&lt;span class="ss"&gt;))&lt;/span&gt;.
&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;</summary></entry><entry><title>CRC_CHECK and CRC_GEN</title><link href="https://forge.codesys.com/forge/talk/Codesys%2520V2.3/thread/9027278666/?limit=25#e9a5" rel="alternate"/><published>2020-02-27T19:34:25.598000Z</published><updated>2020-02-27T19:34:25.598000Z</updated><author><name>DodgyDave80</name><uri>https://forge.codesys.com/u/dodgydave80/</uri></author><id>https://forge.codesys.com39d3beba6ba84ee93f8f733431dca2d5175d696f</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Thanks for the reply Avgur.&lt;/p&gt;
&lt;p&gt;But my problem is that i don't know how to use the CRC_CHECK and CRC_GEN functions from the oscat304.lib&lt;/p&gt;
&lt;p&gt;What i need is a guide on how to use the two functions.&lt;/p&gt;
&lt;p&gt;My code so far is below.&lt;/p&gt;
&lt;p&gt;PROGRAM COMM2&lt;/p&gt;
&lt;p&gt;VAR&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;COMM2&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;SERIAL_INTERFACE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;M_RECVSTR&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;pReceiveStr&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;POINTER&lt;/span&gt; &lt;span class="n"&gt;TO&lt;/span&gt; &lt;span class="n"&gt;ARRAY&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;..&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="n"&gt;OF&lt;/span&gt; &lt;span class="n"&gt;BYTE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;I&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;INT&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;CRC&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;Polynom_32&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BOOL&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;END_VAR&lt;/p&gt;
&lt;p&gt;COMM2(  bCOM_PORT_NR    := 2,&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;        &lt;span class="nv"&gt;utRECEIVE_BUFFER&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;RECEIVE_BUFFER&lt;/span&gt;,

        &lt;span class="nv"&gt;iBYTES_TO_SEND&lt;/span&gt;  :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;LEN&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;SEND_STRING&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;,

        &lt;span class="nv"&gt;ptSEND_BUFFER&lt;/span&gt;       :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;ADR&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;SEND_STRING&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;,

        &lt;span class="nv"&gt;xINIT&lt;/span&gt;                   :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;INIT&lt;/span&gt;,

            &lt;span class="nv"&gt;xOPEN_COM_PORT&lt;/span&gt;  :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;TRUE&lt;/span&gt;,

        &lt;span class="nv"&gt;xSTART_SEND&lt;/span&gt;     :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;SEND&lt;/span&gt; &lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;IF pReceiveStr = 0 THEN (&lt;em&gt; receive buffer with address of receivers initialize string &lt;/em&gt;)&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;  &lt;span class="n"&gt;pReceiveStr&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ADR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;ReceiveString&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;END_IF;&lt;/p&gt;
&lt;p&gt;IF  Receive_Buffer.Index&amp;gt;0 THEN (&lt;em&gt; new data is received &lt;/em&gt;)&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;     &lt;span class="k"&gt;FOR&lt;/span&gt; &lt;span class="nv"&gt;i&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="nv"&gt;TO&lt;/span&gt; &lt;span class="mi"&gt;255&lt;/span&gt; &lt;span class="k"&gt;DO&lt;/span&gt;

        &lt;span class="nv"&gt;pReceiveStr&lt;/span&gt;&lt;span class="o"&gt;^&lt;/span&gt;[&lt;span class="nv"&gt;i&lt;/span&gt;]:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="sc"&gt;#00&lt;/span&gt;&lt;span class="c1"&gt;; (* receive buffer delete *)&lt;/span&gt;

     &lt;span class="nv"&gt;END_FOR&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;

     &lt;span class="k"&gt;FOR&lt;/span&gt; &lt;span class="nv"&gt;i&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="nv"&gt;TO&lt;/span&gt; &lt;span class="nv"&gt;Receive_Buffer&lt;/span&gt;.&lt;span class="nv"&gt;Index&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;DO&lt;/span&gt;

        &lt;span class="nv"&gt;pReceiveStr&lt;/span&gt;&lt;span class="o"&gt;^&lt;/span&gt;[&lt;span class="nv"&gt;i&lt;/span&gt;] :&lt;span class="o"&gt;=&lt;/span&gt;  &lt;span class="nv"&gt;Receive_Buffer&lt;/span&gt;.&lt;span class="nv"&gt;Data&lt;/span&gt;[ &lt;span class="nv"&gt;i&lt;/span&gt; ]&lt;span class="c1"&gt;; (* ring buffer data in receive buffer to copy *)&lt;/span&gt;

     &lt;span class="nv"&gt;END_FOR&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;

     &lt;span class="nv"&gt;M_RECVSTR&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;TRUE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;END_IF;&lt;/p&gt;
&lt;p&gt;IF CLEAR_BUFFER THEN (&lt;em&gt; new request will be sent &lt;/em&gt;)&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;FOR&lt;/span&gt; &lt;span class="nv"&gt;i&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="nv"&gt;TO&lt;/span&gt; &lt;span class="mi"&gt;255&lt;/span&gt; &lt;span class="k"&gt;DO&lt;/span&gt;

    &lt;span class="nv"&gt;Receive_Buffer&lt;/span&gt;.&lt;span class="nv"&gt;Data&lt;/span&gt;[&lt;span class="nv"&gt;i&lt;/span&gt;] :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="c1"&gt;; (* receive buffer delete *)&lt;/span&gt;

&lt;span class="nv"&gt;END_FOR&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Receive_Buffer.Index := 0; (&lt;em&gt; receive buffer delete &lt;/em&gt;)&lt;/p&gt;
&lt;p&gt;END_IF&lt;/p&gt;
&lt;p&gt;CRC:= CRC_CHECK(pRECEIVESTR, I, 469, Polynom_32);&lt;/p&gt;
&lt;p&gt;Any help would be appreciated.&lt;/p&gt;
&lt;p&gt;Dave&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>CRC_CHECK and CRC_GEN</title><link href="https://forge.codesys.com/forge/talk/Codesys%2520V2.3/thread/9027278666/?limit=25#7832" rel="alternate"/><published>2020-02-27T19:34:22.093000Z</published><updated>2020-02-27T19:34:22.093000Z</updated><author><name>Avgur</name><uri>https://forge.codesys.com/u/avgur/</uri></author><id>https://forge.codesys.coma05334b2a1ef6bc290e0bd208c9bb91230db65a5</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Try to google "A painless guide to CRC error detection algorithms"&lt;/p&gt;
&lt;p&gt;Good luck!&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>CRC_CHECK and CRC_GEN</title><link href="https://forge.codesys.com/forge/talk/Codesys%2520V2.3/thread/9027278666/?limit=25#c208" rel="alternate"/><published>2020-02-27T19:34:20.849000Z</published><updated>2020-02-27T19:34:20.849000Z</updated><author><name>DodgyDave80</name><uri>https://forge.codesys.com/u/dodgydave80/</uri></author><id>https://forge.codesys.comd950bd9dbbe43f569a165f2a70365e1f5b56a6a1</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Can anyone help me with CRC_CHECK and CRC_GEN libraries from oscat304.lib.&lt;/p&gt;
&lt;p&gt;My project is using a Wago 750-650 RS232 card to communicate with a laptop. The customer has asked me to use crc and i found the oscat library after some seaching. My problem is, i don't know how to use them. All the information i can find is in German. Can anyone provide me with an example codesys project or provide a step by step guide to implement CRC.&lt;/p&gt;
&lt;p&gt;Thank You&lt;/p&gt;
&lt;p&gt;Dave&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>