<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Теряются пакеты при чтении с /dev/ttyS0 если больше 100 в сек</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9598.html</link>
    <description>День добрый. Подскажите советом куда смотреть.&lt;br&gt;От устройства приходят данные пакетами по 8 байт.&lt;br&gt;Параметры порта стоят следующие &lt;br&gt;===========================================================================================&lt;br&gt;&#091;root&#064;i7 ~&#093;# stty -F /dev/ttyS0&lt;br&gt;speed 57600 baud;&lt;br&gt;intr = ^C; quit = ^&#092;; erase = ^?; kill = ^U; eof = ^D; eol = &amp;lt;undef&amp;gt;; eol2 = &amp;lt;undef&amp;gt;; start = ^Q; stop = ^S; susp = ^Z;&lt;br&gt;rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 8; time = 0;&lt;br&gt;ignbrk -brkint -icrnl -imaxbel&lt;br&gt;-opost -onlcr&lt;br&gt;-isig -icanon -iexten -echo -echoe -echok -echoctl -echoke&lt;br&gt;===========================================================================================&lt;br&gt;&lt;br&gt;Если пакетов идет приблиз 80-100 в сек то все ок , если больше начинает идти то начинает терять кучу пакетов.&lt;br&gt;</description>

<item>
    <title>Теряются пакеты при чтении с /dev/ttyS0 если больше 100 в сек (Alex_S_reg)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9598.html#15</link>
    <pubDate>Tue, 18 Dec 2012 23:34:23 GMT</pubDate>
    <description>&amp;gt;&amp;gt;&amp;gt;&amp;gt; терять кучу пакетов.&lt;br&gt;&amp;gt;            if &amp;gt; (FD_ISSET(fd_io, &amp;con)).&lt;br&gt;&amp;gt;            &#123;  &lt;br&gt;&amp;gt;           &lt;br&gt;&amp;gt;  unsigned char data&#091;8&#093;;        &lt;br&gt;&amp;gt;  int d = read(fd_io, &amp;data&#091;0&#093;, 8);         &lt;br&gt;&amp;gt;  if ( data&#091;0&#093; == 83 ) &lt;br&gt;&amp;gt;           &lt;br&gt;&amp;gt;&lt;br&gt;&lt;br&gt; кароче ... &lt;br&gt; &quot;Почему четыре?&quot;  .. в смысле - почему 8 байт ?  там еще может быть, выгребай до конца, &lt;br&gt;   пока read() не вернет ощибку.&lt;br&gt;&lt;br&gt; да и результат read() в любом случае полезно проверять . &lt;br&gt;&lt;br&gt; успехов !&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Теряются пакеты при чтении с /dev/ttyS0 если больше 100 в сек (greenetc)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9598.html#14</link>
    <pubDate>Fri, 14 Dec 2012 09:57:08 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt; struct sched_param prm; &lt;br&gt;&amp;gt; prm.sched_priority =  sched_get_priority_max(SCHED_FIFO); &lt;br&gt;&amp;gt; pthread_setschedparam(pthread_self(), SCHED_FIFO, &amp;prm); &lt;br&gt;&amp;gt; for (;;) &#123; &lt;br&gt;&amp;gt;         struct timeval timeout = &lt;br&gt;&amp;gt; &#123; 0 &#125;; &lt;br&gt;&amp;gt;         fd_set con; &lt;br&gt;&amp;gt; ...&lt;br&gt;&amp;gt; &#125; &lt;br&gt;&amp;gt; # chrt -p -f 99 &#096;pgrep &quot;&#091;irq&#093;/4&quot;&#096; иль как-то так...&lt;br&gt;&lt;br&gt;ммм ... не подумал над приоритетом .. стояло так&lt;br&gt;&lt;br&gt;struct sched_param pamparam;&lt;br&gt;param.sched_priority = sched_get_priority_min(SCHED_FIFO);&lt;br&gt;pthread_attr_setschedparam(&amp;attr, &amp;pamparam);&lt;br&gt;pthread_attr_setdetachstate(&amp;attr, PTHREAD_CREATE_DETACHED);&lt;br&gt;pthread_t idle;&lt;br&gt;if (pthread_create(&amp;idle, &amp;attr, &amp;idleThread, 0) != 0) &#123;&lt;br&gt;   pthread_attr_setschedpolicy(&amp;attr, SCHED_OTHER);&lt;br&gt;   param.sched_priority = 0;&lt;br&gt;   pthread_attr_setschedparam(&amp;attr, &amp;pamparam);&lt;br&gt;   pthread_create(&amp;idle, &amp;attr, &amp;idleThread, 0);&lt;br&gt;&#125;&lt;br&gt;pthread_attr_destroy(&amp;attr);&lt;br&gt;&lt;br&gt;попробую sched_get_priority_max&lt;br&gt;</description>
</item>

<item>
    <title>Теряются пакеты при чтении с /dev/ttyS0 если больше 100 в сек (pavlinux)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9598.html#13</link>
    <pubDate>Thu, 13 Dec 2012 20:47:05 GMT</pubDate>
    <description>&amp;gt;&amp;gt; чем читаешь и как определяешь, что пакеты теряются ?&lt;br&gt;&amp;gt; Читаю в потоке.&lt;br&gt;&amp;gt; pthread_create(&amp;idle, &amp;attr, &amp;idleThread, 0); &lt;br&gt;&amp;gt; ...&lt;br&gt;&lt;br&gt;А программную модель работы отлаживал, без прибора, &lt;br&gt;через пайп/фифо иль для полного кайфа по нуль-модему?&lt;br&gt;&lt;br&gt;&amp;gt;  for (;;) &#123;&lt;br&gt;&amp;gt;             printf(&quot;&#037;.f&#092;n&quot;, counter++);&lt;br&gt;&amp;gt; &#125;&lt;br&gt;&lt;br&gt;counter++ не переполняется? &lt;br&gt;&lt;br&gt;Если counter глобальная, где мутексы иль спинлоки? &lt;br&gt;</description>
</item>

<item>
    <title>Теряются пакеты при чтении с /dev/ttyS0 если больше 100 в сек (pavlinux)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9598.html#12</link>
    <pubDate>Thu, 13 Dec 2012 20:40:56 GMT</pubDate>
    <description>&amp;gt;&amp;gt; low_latency регулировал ?&lt;br&gt;&amp;gt; просто включал &lt;br&gt;&amp;gt; setserial /dev/ttyS0 low_latency &lt;br&gt;&amp;gt; никакого эфекта не заметил &lt;br&gt;&lt;br&gt;struct sched_param prm;&lt;br&gt;prm.sched_priority =  sched_get_priority_max(SCHED_FIFO);&lt;br&gt;pthread_setschedparam(pthread_self(), SCHED_FIFO, &amp;prm);&lt;br&gt;&lt;br&gt;for (;;) &#123;&lt;br&gt;        struct timeval timeout = &#123; 0 &#125;;                &lt;br&gt;        fd_set con;&lt;br&gt;...&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;# chrt -p -f 99 &#096;pgrep &quot;&#091;irq&#093;/4&quot;&#096; иль как-то так...&lt;br&gt;</description>
</item>

<item>
    <title>Теряются пакеты при чтении с /dev/ttyS0 если больше 100 в сек (greenetc)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9598.html#11</link>
    <pubDate>Thu, 13 Dec 2012 08:43:09 GMT</pubDate>
    <description>&amp;gt;&amp;gt;&amp;gt; терять кучу пакетов.&lt;br&gt;&amp;gt;&amp;gt; если это аллегория на тему &quot;недостаточно скорости работы порта&quot; то 800 байт &lt;br&gt;&amp;gt;&amp;gt; в секунду против 57600 скорости порта не ровня. Игры с параметрами &lt;br&gt;&amp;gt;&amp;gt; icanon и vmin и vtime не привели к результату.&lt;br&gt;&amp;gt; чем читаешь и как определяешь, что пакеты теряются ?&lt;br&gt;&amp;gt; low_latency регулировал ?&lt;br&gt;&lt;br&gt;просто включал &lt;br&gt;&lt;br&gt;setserial /dev/ttyS0 low_latency&lt;br&gt;&lt;br&gt;никакого эфекта не заметил&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Теряются пакеты при чтении с /dev/ttyS0 если больше 100 в сек (greenetc)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9598.html#10</link>
    <pubDate>Thu, 13 Dec 2012 07:51:19 GMT</pubDate>
    <description>&amp;gt;&amp;gt;&amp;gt; терять кучу пакетов.&lt;br&gt;&amp;gt;&amp;gt; если это аллегория на тему &quot;недостаточно скорости работы порта&quot; то 800 байт &lt;br&gt;&amp;gt;&amp;gt; в секунду против 57600 скорости порта не ровня. Игры с параметрами &lt;br&gt;&amp;gt;&amp;gt; icanon и vmin и vtime не привели к результату.&lt;br&gt;&amp;gt; чем читаешь и как определяешь, что пакеты теряются ?&lt;br&gt;&lt;br&gt;Читаю в потоке.&lt;br&gt;&lt;br&gt;pthread_create(&amp;idle, &amp;attr, &amp;idleThread, 0);&lt;br&gt;...&lt;br&gt;...&lt;br&gt;...&lt;br&gt;extern &quot;C&quot; void *idleThread(void *me).&lt;br&gt;&#123;     &lt;br&gt;&lt;br&gt;    for (;;) &#123;&lt;br&gt;        struct timeval timeout = &#123; 0 &#125;;                &lt;br&gt;        fd_set con;&lt;br&gt;        FD_ZERO(&amp;con);&lt;br&gt;        FD_SET(0, &amp;con);&lt;br&gt;        FD_SET(fd_io, &amp;con);&lt;br&gt;        int result = select(MAX(fd_io+1), &amp;con, 0, 0, &amp;timeout);&lt;br&gt;        if ( result )&lt;br&gt;        &#123;&lt;br&gt;           if (FD_ISSET(fd_io, &amp;con)).&lt;br&gt;           &#123;&lt;br&gt;                        unsigned char data&#091;8&#093;;&lt;br&gt;                        int d = read(fd_io, &amp;data&#091;0&#093;, 8);&lt;br&gt;                        if ( data&#091;0&#093; == 83 )&lt;br&gt;                        &#123;&lt;br&gt;                              if (  data&#091;1&#093; == 75 )                                           &lt;br&gt;  </description>
</item>

<item>
    <title>Теряются пакеты при чтении с /dev/ttyS0 если больше 100 в сек (Andrey Mitrofanov)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9598.html#9</link>
    <pubDate>Thu, 13 Dec 2012 05:30:17 GMT</pubDate>
    <description>&amp;gt; low_latency регулировал ?&lt;br&gt;&lt;br&gt;...или приоритет читающей программы поднять?&lt;br&gt;</description>
</item>

<item>
    <title>Теряются пакеты при чтении с /dev/ttyS0 если больше 100 в сек (ACCA)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9598.html#8</link>
    <pubDate>Thu, 13 Dec 2012 02:35:51 GMT</pubDate>
    <description>&amp;gt; С этой стороны, как я понял, впаянный в чипсет иль рядом UART &lt;br&gt;&amp;gt; 16550A, с другой стороны кто?&lt;br&gt;&lt;br&gt;Не факт. Может оказаться какая-то самопальная железяка, а то и очень б/у хня на i386 с 8250, что и создаёт проблему.&lt;br&gt;</description>
</item>

<item>
    <title>Теряются пакеты при чтении с /dev/ttyS0 если больше 100 в сек (Alex_S)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9598.html#7</link>
    <pubDate>Wed, 12 Dec 2012 23:45:47 GMT</pubDate>
    <description>&amp;gt;&amp;gt; терять кучу пакетов.&lt;br&gt;&amp;gt; если это аллегория на тему &quot;недостаточно скорости работы порта&quot; то 800 байт &lt;br&gt;&amp;gt; в секунду против 57600 скорости порта не ровня. Игры с параметрами &lt;br&gt;&amp;gt; icanon и vmin и vtime не привели к результату.&lt;br&gt;&lt;br&gt;чем читаешь и как определяешь, что пакеты теряются ?&lt;br&gt;&lt;br&gt;low_latency регулировал ?&lt;br&gt;&lt;br&gt;</description>
</item>

</channel>
</rss>
