<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to Problem SysComLib: Es werden zu wenig Bytes empfangen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/2137de20b5/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/2137de20b5/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Deutsch/thread/2137de20b5/</id><updated>2020-02-28T13:39:59.665000Z</updated><subtitle>Recent posts to Problem SysComLib: Es werden zu wenig Bytes empfangen</subtitle><entry><title>Problem SysComLib: Es werden zu wenig Bytes empfangen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/2137de20b5/?limit=25#eb83" rel="alternate"/><published>2020-02-28T13:39:59.665000Z</published><updated>2020-02-28T13:39:59.665000Z</updated><author><name>gravieren</name><uri>https://forge.codesys.com/u/gravieren/</uri></author><id>https://forge.codesys.com64eb3c8108a2903de2b575ef8128ef0ad6912aab</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;Das kann funktionieren.&lt;/p&gt;
&lt;p&gt;Jedoch wenn du in der Zykluszeit 9 Zeichen empfängst kann bereits 1 Zeichen verloren gehen.&lt;/p&gt;
&lt;p&gt;Sinnvoller wäre es, bereits bei 1 oder 2 Zeichen umzuspeichern.&lt;/p&gt;
&lt;p&gt;Damit verlierst du keine empfangenen Zeichen.&lt;/p&gt;
&lt;p&gt;Zur Info:&lt;/p&gt;
&lt;p&gt;FIFO  --&amp;gt; First In First Out.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Problem SysComLib: Es werden zu wenig Bytes empfangen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/2137de20b5/?limit=25#6b37" rel="alternate"/><published>2020-02-28T13:39:56.923000Z</published><updated>2020-02-28T13:39:56.923000Z</updated><author><name>Dom</name><uri>https://forge.codesys.com/u/dom/</uri></author><id>https://forge.codesys.com40b7c0961741b49ff411e6eaa18c39561b5dfeed</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Also ich hab jetzt was gemacht und es funktioniert - zumindest momentan... &lt;/p&gt;
&lt;p&gt;Vielleicht bekomme ich es hier auch gleich wieder ausgeredet...&lt;/p&gt;
&lt;p&gt;Ausgegangen davon, dass ich nur einen 8 Byte Empfangsbuffer habe, rufe ich die SysComRead einfach nochmal auf, nachdem Sie bereits 8 Bytes empfangen hat. Die Daten schreibe ich in zwei verschiedene Arrays, die ich anschließend auswerten kann:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;:   &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;Read&lt;/span&gt; &lt;span class="nv"&gt;COM1&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;dwBytesGelesen_COM1&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;SysComRead&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;   &lt;span class="nv"&gt;dwHandle&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;dwHandle_COM1&lt;/span&gt;,
&lt;span class="nv"&gt;dwBufferAddress&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;rxBuffer1&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;,
&lt;span class="nv"&gt;dwBytesToRead&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;,
&lt;span class="nv"&gt;dwTimeout&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;dwBytesGelesen_COM1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="ss"&gt;)&lt;/span&gt;  &lt;span class="k"&gt;THEN&lt;/span&gt;
&lt;span class="nv"&gt;uiState&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;uiState&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;END_IF&lt;/span&gt;
&lt;span class="mi"&gt;4&lt;/span&gt;:   &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;Read&lt;/span&gt; &lt;span class="nv"&gt;COM1&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;dwBytesGelesen_COM1&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;SysComRead&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;   &lt;span class="nv"&gt;dwHandle&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;dwHandle_COM1&lt;/span&gt;,
&lt;span class="nv"&gt;dwBufferAddress&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;rxBuffer2&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;,
&lt;span class="nv"&gt;dwBytesToRead&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;,
&lt;span class="nv"&gt;dwTimeout&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;dwBytesGelesen_COM1&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="ss"&gt;)&lt;/span&gt;  &lt;span class="k"&gt;THEN&lt;/span&gt;
&lt;span class="nv"&gt;uiState&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;uiState&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;END_IF&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Ich werd mich aber trotzdem nochmal beim Hersteller erkundigen, ob es da nix besseres gibt....&lt;/p&gt;
&lt;p&gt;Dom&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Problem SysComLib: Es werden zu wenig Bytes empfangen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/2137de20b5/?limit=25#053f" rel="alternate"/><published>2020-02-28T13:39:49.411000Z</published><updated>2020-02-28T13:39:49.411000Z</updated><author><name>Dom</name><uri>https://forge.codesys.com/u/dom/</uri></author><id>https://forge.codesys.com2cd411bd6fa888eae1adaaae60f2a6b1477dff62</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo, &lt;/p&gt;
&lt;p&gt;danke für die schnellen (&amp;amp; vielen) Antworten!!!&lt;/p&gt;
&lt;p&gt;strEingabeString ist wie der Name schon sagt als String deklariert ohne feste Größenangabe. Ich hatte es aber auch schon mit einem Byte-Array probiert - mit dem gleichen Erfolg  &lt;/p&gt;
&lt;p&gt;Ich denke fast, dass es an dem Empfangsbuffer liegt.&lt;/p&gt;
&lt;p&gt;"FIFO mit Puffererweiterung" - Ehrlich gesagt, verstehe ich nicht was damit gemeint ist?!&lt;/p&gt;
&lt;p&gt;Ich mach mich diesbezüglich aber mal bei MI kundig.&lt;/p&gt;
&lt;p&gt;Gruß, Dom&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Problem SysComLib: Es werden zu wenig Bytes empfangen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/2137de20b5/?limit=25#ed7f" rel="alternate"/><published>2020-02-28T13:39:46.742000Z</published><updated>2020-02-28T13:39:46.742000Z</updated><author><name>gravieren</name><uri>https://forge.codesys.com/u/gravieren/</uri></author><id>https://forge.codesys.com3bb0cbfb41cda32d4d392661266f625d6962da6a</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;Wie gross ist  "strEingabeString1".&lt;/p&gt;
&lt;p&gt;Zeig doch mal die Zuweisung.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Problem SysComLib: Es werden zu wenig Bytes empfangen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/2137de20b5/?limit=25#a692" rel="alternate"/><published>2020-02-28T13:39:39.451000Z</published><updated>2020-02-28T13:39:39.451000Z</updated><author><name>gravieren</name><uri>https://forge.codesys.com/u/gravieren/</uri></author><id>https://forge.codesys.com1a8e031c8ecf559a86671d0c6da05711361a0bc7</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;O.k.&lt;/p&gt;
&lt;p&gt;Dann hast du einen Empfangspuffer mit 8 Zeichen.&lt;/p&gt;
&lt;p&gt;Holst du die empfangenen Zeichen nicht rechtzeitigt ab, gehen alle Zeichen verloren.&lt;/p&gt;
&lt;p&gt;Also:&lt;/p&gt;
&lt;p&gt;Schau doch mal, ob der Herstellen einen FIFO mit Puffererweiterung hat.&lt;/p&gt;
&lt;p&gt;Falls ja, installiere ihn.&lt;/p&gt;
&lt;p&gt;Oder&lt;/p&gt;
&lt;p&gt;Schreibe dir eine eigenständige Task, die abfrägt, ob Zeichen im Empfangspuffer sind und diese in einen grösseren Puffer umkopiert.&lt;/p&gt;
&lt;p&gt;Diesen neuen Puffer frägst du dann ab.&lt;/p&gt;
&lt;p&gt;Die Abtastrate der Task berechne dir Aufgrund der Baudrate und den 8 Zeichen, die in den Empfangspuffer passen.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Problem SysComLib: Es werden zu wenig Bytes empfangen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/2137de20b5/?limit=25#8abc" rel="alternate"/><published>2020-02-28T13:39:36.814000Z</published><updated>2020-02-28T13:39:36.814000Z</updated><author><name>Dom</name><uri>https://forge.codesys.com/u/dom/</uri></author><id>https://forge.codesys.com86b52bff8e181140d439e5adc607e05cdb1bfbab</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi, &lt;/p&gt;
&lt;p&gt;das mache ich schon die ganze Zeit....&lt;/p&gt;
&lt;p&gt;Ergebnis: &lt;/p&gt;
&lt;p&gt;Buffer: 8 Zeichen&lt;/p&gt;
&lt;p&gt;Inhalt: 0,1,2,3,4,5,6,7&lt;/p&gt;
&lt;p&gt;&lt;span&gt;[???]&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Dom&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Problem SysComLib: Es werden zu wenig Bytes empfangen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/2137de20b5/?limit=25#73d0" rel="alternate"/><published>2020-02-28T13:39:34.067000Z</published><updated>2020-02-28T13:39:34.067000Z</updated><author><name>gravieren</name><uri>https://forge.codesys.com/u/gravieren/</uri></author><id>https://forge.codesys.com2cf94867dcbd935ae5321e10f7176e31715d1808</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;Mach doch mal folgenden Test:&lt;/p&gt;
&lt;p&gt;Sende mal 0,1,2,3,4,5,6,7,8,9&lt;/p&gt;
&lt;p&gt;Nun frage ab, wieviele Zeichen du im Puffer hast.&lt;/p&gt;
&lt;p&gt;Dann lese den Puffer aus.&lt;/p&gt;
&lt;p&gt;Wieviel und welche Zeichen kannst du nun auslesen  ?&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Problem SysComLib: Es werden zu wenig Bytes empfangen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/2137de20b5/?limit=25#1558" rel="alternate"/><published>2020-02-28T13:39:26.736000Z</published><updated>2020-02-28T13:39:26.736000Z</updated><author><name>Dom</name><uri>https://forge.codesys.com/u/dom/</uri></author><id>https://forge.codesys.come491b8bcef03a1ab43222fb8de40305af9a949e2</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo, &lt;/p&gt;
&lt;p&gt;das ist es beides leider nicht. &lt;/p&gt;
&lt;p&gt;Die Funktion SYSCOMREAD gibt ja als Rückgabewert dwBytesGelesen_COM1 die Anzahl der gelesenen Bytes an. Laut diesem Wert bekomme ich maximal 8 Bytes eingelesen. Ich kann über ein Programm zum Testen quasi jede erdenkliche Anzahl an Bytes schicken. Alles unter 8 Bytes wird korrekt empfangen. Sobald ich mehr als 8 Bytes sende, werden die ersten 8 Empfangen und es stehen 8 gelesene Bytes im Rückgabewert.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Problem SysComLib: Es werden zu wenig Bytes empfangen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/2137de20b5/?limit=25#7342" rel="alternate"/><published>2020-02-28T13:39:24.128000Z</published><updated>2020-02-28T13:39:24.128000Z</updated><author><name>Oberchefe</name><uri>https://forge.codesys.com/u/oberchefe/</uri></author><id>https://forge.codesys.com5b45c35ff86ffbbd1031f7fa77f4694d53ef8676</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Ich würde abfragen ob empfangene Bytes &amp;gt; 0 und gleich der Anzahl empfangenen Bytes beim letzten Programmzyklus.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Problem SysComLib: Es werden zu wenig Bytes empfangen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/2137de20b5/?limit=25#b298" rel="alternate"/><published>2020-02-28T13:39:16.518000Z</published><updated>2020-02-28T13:39:16.518000Z</updated><author><name>gravieren</name><uri>https://forge.codesys.com/u/gravieren/</uri></author><id>https://forge.codesys.comdd22ee0891e5bfcb82fddd72dd6ff9b486044fff</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;Kann es sein, dass du die ersten 7 Bytes mit den nächsten 8 Bytes überschreibst  ?&lt;/p&gt;
&lt;p&gt;Also  &lt;/p&gt;
&lt;p&gt;1.Zyklus   7 Bytes  gelesen.&lt;/p&gt;
&lt;p&gt;2.Zyklus   8 Bytes gelesen (und somit die ersten 7 überschrieben)&lt;/p&gt;
&lt;p&gt;Die CPU wartet nicht mit der "Anzeige".&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>