<div>Jeste me napada, ze se mi v linuxu nezdala kotrola parity. Myslim, ze se pres ioctl da nastavit znak, co se posle v pripade chyby parity. Zkuste zapatrat, tohle v hlave nemam.<br/>
Co na sbernici nasadit nejaky sniffer?<br/>
L.<br/>
<br/>
--<br/>
Stručně naklofáno na mobilu<br/><br/>-----Original Message-----<br/>From: Jaroslav Buchta <jaroslav.buchta@hascomp.cz><br/>To: hw-list@list.hw.cz<br/>Sent: po, 30 bře 2020 18:14<br/>Subject: Re: Linux seriovy port<br/><br/></div>Dekuji za informaci,<br/>
Zajimave je, ze mi prijde, jako by se ztratily nejake znaky - treba <br/>
tohle, odpoved na zapis 4 registru, az po adresu to sedi ale pocet je uz <br/>
posunuty. Ale zase je divne, ze celkovy pocet znaku asi prijde, protoze <br/>
jinak by to vypadlo na timeout. Na strane slave (STM32) problem <br/>
nepredpokladam, pres jiny port to stejnym zpusobem komunikuje s PC a <br/>
bezi to dny bez problemu.<br/>
<br/>
ERROR CRC received 0xAF8F != CRC calculated 0xAC8C<br/>
msg [8]: 01 10 9C 44 04 00 AF 8F<br/>
<br/>
Je pouzity  tento projekt <a href="https://github.com/stephane/libmodbus">https://github.com/stephane/libmodbus</a> , uz <br/>
jsem to pridal ve zdrojacich abych to mohl ladit ale nejak uplne <br/>
korektne mi ta RTU komunikace udelana neprijde - treba neresi <br/>
meziznakovy timeout atd. Nepouzil to nekdo z vas, ze by mel nejake <br/>
zkusenosti?<br/>
<br/>
Dne 30.03.2020 v 15:53 Ladislav Vaiz napsal(a):<br/>
> Dne 30.03.2020 v 15:16 Jaroslav Buchta napsal(a):<br/>
>> Takze v principu muzou 2 aplikace otevrit jeden port zaroven?<br/>
><br/>
> Ano, zamykání v linuxu je dobrovolné. Vždyť stačí fork() a hned jsou <br/>
> všechny soubory otevřené vícekrát. Sériák se zamyká souborem <br/>
> /var/lock/LCK..ttyS1 .<br/>
><br/>
>> Ono to tim ale asi nebude, ta druha aplikace pouziva komunikaci jen v <br/>
>> pripade, ze dela reset modemu a to je velmi sporadicky - ta funguje <br/>
>> stylem open-w-r-close. Podle logu casy nekoreluji s chybami.<br/>
><br/>
> Pak to tím zřejmě nebude.<br/>
><br/>
>> Jeste uplne nechapu API funkci select, ta skonci pri prichodu jednoho <br/>
>> a vice znaku nebo zadanem timeoutu? <br/>
><br/>
> Přesně tak plus dále<br/>
><br/>
>> Kdy vznikne chyba EINTR?<br/>
><br/>
> Proces dostal signal. Jaký vám řekne program strace (strace program <br/>
> nebo za běhu strace -p PID)<br/>
><br/>
>> A rset je nejake bitove pole se seznamem periferii na ktere se ceka?<br/>
><br/>
> Ano<br/>
><br/>
> <a href="https://linux.die.net/man/3/fd_set">https://linux.die.net/man/3/fd_set</a><br/>
> <a href="https://linux.die.net/man/2/select">https://linux.die.net/man/2/select</a><br/>
><br/>
> L.<br/>
><br/>
>> Pouzita je takto:<br/>
>>     while ((s_rc = select(ctx->s+1, rset, NULL, NULL, tv)) == -1) {<br/>
>>         if (errno == EINTR) {<br/>
>>             if (ctx->debug) {<br/>
>>                 fprintf(stderr, "A non blocked signal was caught\n");<br/>
>>             }<br/>
>>             /* Necessary after an error */<br/>
>>             FD_ZERO(rset);<br/>
>>             FD_SET(ctx->s, rset);<br/>
>>         } else {<br/>
>>             return -1;<br/>
>>         }<br/>
>>     }<br/>
>><br/>
>>     if (s_rc == 0) {<br/>
>>         /* Timeout */<br/>
>>         errno = ETIMEDOUT;<br/>
>>         return -1;<br/>
>>     }<br/>
>> #endif<br/>
>><br/>
>>     return s_rc;<br/>
>><br/>
>><br/>
>><br/>
>> Dne 30.03.2020 v 14:29 Ladislav Vaiz napsal(a):<br/>
>>> Hádal bych, že problém bude čtení z portu - data dostane vždy právě <br/>
>>> jedna aplikace a to bude ten problém. Lepší by bylo udělat nějakou <br/>
>>> proxy, která bude znát Modbus.<br/>
>>><br/>
>>> L.<br/>
>>><br/>
>>> Dne 30.03.2020 v 14:20 Jaroslav Buchta napsal(a):<br/>
>>>> Takova zasadni otazka - lze otevrit port napr. /dev/ttyS1 zaroven z <br/>
>>>> vice aplikaci? Predpokladam, ze ne ale chova se to divne jako by <br/>
>>>> ano (je to embeded system na ARM) Zase ale vzhledem k tomu, ze se <br/>
>>>> rychlost a dalsi parametry nastavuji az po otevreni, tak mi neni <br/>
>>>> jasne, kdy vlastne k fyzickemu otevreni HW portu dojde?<br/>
>>>><br/>
>>>> Je to modbus-rtu komunikace jako master, pouzivaji ji 2 aplikace, <br/>
>>>> jedna velmi sporadicky a druha by mela mit port otevreny stale (tu <br/>
>>>> momentalne ladim, ta druha je trosku black box). Zda se mi divne, <br/>
>>>> ze by to fungovalo, kazdopadne ta hlavni aplikace s castou <br/>
>>>> komunikaci nekdy hlasi chybu - bud CRC nebo neshoda cisla funkce, <br/>
>>>> prijata data v bufferu nedavaji smysl, jedine, co me jeste napada, <br/>
>>>> ze by si do komunikace nejak vzajemne kecaly... <br/>
>>><br/>
>>><br/>
>>> _______________________________________________<br/>
>>> HW-list mailing list  -  sponsored by <a href="http://www.HW.cz">www.HW.cz</a><br/>
>>> <a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><br/>
>>> <a href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a><br/>
>><br/>
>><br/>
>> _______________________________________________<br/>
>> HW-list mailing list  -  sponsored by <a href="http://www.HW.cz">www.HW.cz</a><br/>
>> <a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><br/>
>> <a href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a><br/>
><br/>
><br/>
><br/>
> _______________________________________________<br/>
> HW-list mailing list  -  sponsored by <a href="http://www.HW.cz">www.HW.cz</a><br/>
> <a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><br/>
> <a href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a><br/>
<br/>
<br/>
_______________________________________________<br/>
HW-list mailing list  -  sponsored by <a href="http://www.HW.cz">www.HW.cz</a><br/>
<a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><br/>
<a href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a><br/>