<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[RS232 ohne Startbit]]></title><description><![CDATA[<p>Tach auch.</p>
<p>ICh hab ein kleines Problem: Ich möchte mit der RS232-Schnittstelle eines Standard PCs auf ein LIN-Bus-Slave zugreifen. Das Problem ist nun, dass ich als master zunächst eine Synch/Break-Kombination versenden muss, die etwa so aussieht:</p>
<pre><code>Break-Sequenz               | Sync-Sequenz, 0x55
log 1 | --\                                /---\     /---\     /---\     /---\    
log 0 |    \-----------------||-----------/     \---/     \---/     \---/
           ^
           Kommunikationsstart
</code></pre>
<p>Das Problem ist nun, dass die Break-Sequenz mindestens 13 Bit auf log 0 liegen muss. Die Frage ist nun: Wie kann ich es schaffen, dass ich die 13 oder Mehr Bit ausschliesslich 0 habe?<br />
Beim uC hab ich die Möglichkeit in meinen UART eine Art von &quot;Break&quot; zu laden, bei dem 10 (oder 11? naja egal) 0-Bit versendet werden, sowie beim nächsten Character die Startflanke ausgelassen wird. Damit hätte ich das Problem erschlagen. Nur wie schaff ich das unter Windows, ohne direkt nen Treiber zu schreiben?</p>
<p>Hab ich da auch irgend so ne Möglichkeit? Irgendwie hab ich ein - zwei Sachen gefunden, war mir aber nirgends sicher... (weder SetCommBreak noch TransmitCommChar lösen - zumindest gemäss meiner INterpretation - das Problem...)</p>
<p>Danke für die Antworten.</p>
<p>-junix</p>
<p>[edit]ASCII-Art korrektur[/edit]</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/76163/rs232-ohne-startbit</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 10:20:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/76163.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 08 Jun 2004 13:03:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to RS232 ohne Startbit on Tue, 08 Jun 2004 13:10:52 GMT]]></title><description><![CDATA[<p>Tach auch.</p>
<p>ICh hab ein kleines Problem: Ich möchte mit der RS232-Schnittstelle eines Standard PCs auf ein LIN-Bus-Slave zugreifen. Das Problem ist nun, dass ich als master zunächst eine Synch/Break-Kombination versenden muss, die etwa so aussieht:</p>
<pre><code>Break-Sequenz               | Sync-Sequenz, 0x55
log 1 | --\                                /---\     /---\     /---\     /---\    
log 0 |    \-----------------||-----------/     \---/     \---/     \---/
           ^
           Kommunikationsstart
</code></pre>
<p>Das Problem ist nun, dass die Break-Sequenz mindestens 13 Bit auf log 0 liegen muss. Die Frage ist nun: Wie kann ich es schaffen, dass ich die 13 oder Mehr Bit ausschliesslich 0 habe?<br />
Beim uC hab ich die Möglichkeit in meinen UART eine Art von &quot;Break&quot; zu laden, bei dem 10 (oder 11? naja egal) 0-Bit versendet werden, sowie beim nächsten Character die Startflanke ausgelassen wird. Damit hätte ich das Problem erschlagen. Nur wie schaff ich das unter Windows, ohne direkt nen Treiber zu schreiben?</p>
<p>Hab ich da auch irgend so ne Möglichkeit? Irgendwie hab ich ein - zwei Sachen gefunden, war mir aber nirgends sicher... (weder SetCommBreak noch TransmitCommChar lösen - zumindest gemäss meiner INterpretation - das Problem...)</p>
<p>Danke für die Antworten.</p>
<p>-junix</p>
<p>[edit]ASCII-Art korrektur[/edit]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/535963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/535963</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Tue, 08 Jun 2004 13:10:52 GMT</pubDate></item><item><title><![CDATA[Reply to RS232 ohne Startbit on Wed, 09 Jun 2004 05:55:53 GMT]]></title><description><![CDATA[<p>Wenn Du ALLE Daten über TxD mit WriteFile() versenden willst: Dann geht es nicht.<br />
Wenn Du TxD verwendest und das Pin mit EscapeCommFunction() setzt geht es. Aber das übrige serielle &quot;Protokoll&quot; mußt Du dann auch selber mit eben dieser Funktion zeitgesteuert erzeugen.<br />
Statt TxD geht auch RTS oder DTR.<br />
Eine weitere Lösung wäre die Verwendung von TxD mit WriteFile() und gleichzeitiger Verwendung eines weiteren Pins, welches über eine Dioden-Widerstandskombination die TxD-Leitung für eine bestimmte Zeitdauer auf log. 0 zieht.</p>
<p>Blackbird</p>
]]></description><link>https://www.c-plusplus.net/forum/post/536454</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/536454</guid><dc:creator><![CDATA[Blackbird]]></dc:creator><pubDate>Wed, 09 Jun 2004 05:55:53 GMT</pubDate></item><item><title><![CDATA[Reply to RS232 ohne Startbit on Wed, 09 Jun 2004 06:03:42 GMT]]></title><description><![CDATA[<p>Hier gleich die &quot;Schaltung&quot; zur letzten Variante:</p>
<pre><code class="language-cpp">ca. 1,5 kOhm
                    ______
TxD (vom PC) ------|______|-------*--------   TxD-Ausgang
                                  |
DTR (vom PC) -------------|&lt;|------
                        1N4148 o.ä.
</code></pre>
<p>Blackbird</p>
]]></description><link>https://www.c-plusplus.net/forum/post/536457</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/536457</guid><dc:creator><![CDATA[Blackbird]]></dc:creator><pubDate>Wed, 09 Jun 2004 06:03:42 GMT</pubDate></item><item><title><![CDATA[Reply to RS232 ohne Startbit on Wed, 09 Jun 2004 15:04:52 GMT]]></title><description><![CDATA[<p>Naja, die Hardwarelösung wär nur n Notnagel...</p>
<p>Die Variante mit EscapeCommFunction klingt interessant. Allerdings kann ich - gemäss MSDN - da nur CLRDTR, CLRRTS, SETDTR, SETRTS, SETXOFF, SETXON, SETBREAK und CLRBREAK setzen?</p>
<p>-junix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/536864</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/536864</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Wed, 09 Jun 2004 15:04:52 GMT</pubDate></item><item><title><![CDATA[Reply to RS232 ohne Startbit on Thu, 10 Jun 2004 05:11:07 GMT]]></title><description><![CDATA[<p>EscapeCommFunction (hCom, CLRDTR) und EscapeCommFunction (hCom, SETDTR) reichen doch aus. Eine Timer-Callback-Funktion (oder eine Multimediatimer-Callback-Funktion - die ist auf die Millisekunde genau) schreiben und dort die beiden Funktionen im Wechsel aufrufen. Die Prio der Funktion hochsetzten und für unterbrechungsfreie Abarbeitung sorgen. So sollte es gehen. Oder sind die Zeitanforderungen genauer als eine Millisekunde?</p>
<p>Blackbird</p>
]]></description><link>https://www.c-plusplus.net/forum/post/537192</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/537192</guid><dc:creator><![CDATA[Blackbird]]></dc:creator><pubDate>Thu, 10 Jun 2004 05:11:07 GMT</pubDate></item><item><title><![CDATA[Reply to RS232 ohne Startbit on Thu, 10 Jun 2004 05:43:29 GMT]]></title><description><![CDATA[<p>Ah, stop. ich dachte du wolltest TxD über EscapeCommFunction setzen... ok, misverstanden.</p>
<p>[edit]Merkwürdig... jetzt hab ich grad ne Software vor mir liegen die genau die 14 Low-Bit versendet... aber Irgendwie glaub ich nicht, dass der gross direkt auf der Hardware rumwuselt... Naja mal weiter suchen.[/edit]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/537199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/537199</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Thu, 10 Jun 2004 05:43:29 GMT</pubDate></item><item><title><![CDATA[Reply to RS232 ohne Startbit on Thu, 10 Jun 2004 05:52:48 GMT]]></title><description><![CDATA[<p>TxD kann man auch mit EscapeCommFunction setzen/rücksetzten. Würde ich aber nicht machen. Damit verschenkt man sich die Hälfte der Funktionalität der Schnittstelle.</p>
<p>Hardware ist NICHT notwendig bei der Lösung mit EscapeCommFunction am Pin DTR. O.K., eine 9pol. Sub-D-Buchse und Kabel sind immer notwendig. Eventuell auch irgendwas zum Pegelanpassen und/oder -invertieren. Ich kenne die elektrischen Parameter des LIN-Bus nicht.</p>
<p>Blackbird</p>
]]></description><link>https://www.c-plusplus.net/forum/post/537201</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/537201</guid><dc:creator><![CDATA[Blackbird]]></dc:creator><pubDate>Thu, 10 Jun 2004 05:52:48 GMT</pubDate></item><item><title><![CDATA[Reply to RS232 ohne Startbit on Thu, 10 Jun 2004 05:55:28 GMT]]></title><description><![CDATA[<p>Vielleicht hab' ich das grad mißverstanden: Du meinst die PC-Hardware?</p>
<p>Auch da ist (unter Windows) kein direkter Hardwarezugriff notwendig. Ein ganz normales Anwenderprog reicht, in DOS32 oder Windows.</p>
<p>Blackbird</p>
]]></description><link>https://www.c-plusplus.net/forum/post/537202</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/537202</guid><dc:creator><![CDATA[Blackbird]]></dc:creator><pubDate>Thu, 10 Jun 2004 05:55:28 GMT</pubDate></item><item><title><![CDATA[Reply to RS232 ohne Startbit on Thu, 10 Jun 2004 06:48:50 GMT]]></title><description><![CDATA[<p>Ich glaub wir reden aneinander vorbei. Wie kann man TxD über EscapeCommFunction setzen? SETTXD und CLRTXD sind meines Wissens keine spezifizierten Parameter?</p>
<p>Mit &quot;Hardwarelösung&quot; meinte ich die Widerstand/Diodenkombination.</p>
<p>Ich habs jetzt gefunden. Nachdem ich mich nun mit dem KO und nem Testprogramm hingesetzt, und mir eine neue Interpretation der MSDN-Texte zum Thema SetCommBreak() durch den Kopf gehen lassen habe, konnte ich nun feststellen, dass SetCommBreak offensichtlich die Tx Leitung auf 0 zieht, während ClearCommBreak() die Leitung wieder los lässt. So kann ich - mit der eingestellten Baudrate einfach errechnen wie lange ich im break-Zustand bleiben will et voilà, hab ich meinen Break-Character für LIN...</p>
<p>-junix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/537206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/537206</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Thu, 10 Jun 2004 06:48:50 GMT</pubDate></item><item><title><![CDATA[Reply to RS232 ohne Startbit on Thu, 10 Jun 2004 13:01:16 GMT]]></title><description><![CDATA[<blockquote>
<p>TxD kann man auch mit EscapeCommFunction setzen/rücksetzten</p>
</blockquote>
<p>War falsch von mir, entschuldige. Hab's auch noch nie so gemacht (siehe weiter oben).<br />
Deine Lösung ist O.K., wenn sie softwaretechnisch machbar ist.</p>
<p>Was ich mit der DTR-Leitung und EscapeCommFunction (hCom, CLRDTR), EscapeCommFunction (hCom, SETDTR) meinte ist folgendes:</p>
<p>Du bildest Dir damit eine &quot;TxD&quot;-Leitung nach, indem Du zeitgesteuert Bit für Bit Deines Protokolls mit EscapeCommFunction (hCom, CLRDTR) und EscapeCommFunction (hCom, SETDTR) erzeugst.<br />
Wenn die kleinste Bitdauer über mehreren Millisekunden liegt, kann man so jedes beliebige Protokoll erzeugen.<br />
So ist es möglich, AD-Wandler, LCD-Module, Lichterketten mit Schieberegistern usw. anzusteuern, die nix mit Start-, Stop- und Datenbits zu tun haben (wollen).</p>
<p>Blackbird<br />
PS: Mit einer kleinen Hardware ist es (auch unter Windows!) möglich, (fast) beliebige serielle Protokolle zeitlich exakt bis in den Bereich von wenigen 10 Mikrosekunden zu erzeugen. Die Systemauslastung bleibt dabei nahe Null. So kann man z.B.: das DCC- und Motorola-Format für die digitale Modellbahn und das Control-A1-Format von Sony erzeugen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/537426</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/537426</guid><dc:creator><![CDATA[Blackbird]]></dc:creator><pubDate>Thu, 10 Jun 2004 13:01:16 GMT</pubDate></item><item><title><![CDATA[Reply to RS232 ohne Startbit on Thu, 10 Jun 2004 13:11:15 GMT]]></title><description><![CDATA[<p>Jo, der Rest war mir schon klar. Mach ja nicht das erste mal was mit der seriellen bzw. Hardware (als Elektronikerwär das irgendwie merkwürdig... *hrm* (o; )</p>
<p>Softwaretechnisch knall ich die Kommunikation ohnehin in einen Thread mit RT-Priorität... dürfte also kein wirkliches Problem darstellen, da alles zu erwischen (o:</p>
<p>-junix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/537436</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/537436</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Thu, 10 Jun 2004 13:11:15 GMT</pubDate></item></channel></rss>