<div>Zamykani je dobrovolne, aplikace musi soubor testovat a sama odmitnout otevrit port.<br/>
Jeste zkuste sudo lsof /dev/ttyS1, jestli si ho neotevrel nekdo dalsi.<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 19:08<br/>Subject: Re: Linux seriovy port<br/><br/></div>Jeste jeden dotaz - zkousel jsem vyvorit odpovidajici soubor ve <br/>
/var/lock po spusteni aplikace s cislem procesu (mezery, cislo, nl - <br/>
celkem 11 znaku jak jsem nasel) a nezabranilo to pouziti portu kdyz jsem <br/>
znovu spustil aplikaci v jine konzoli. To takto nefunguje?<br/>
Jina aplikace uz tam ma odpovidajici soubor pro modem.<br/>
Zda se, ze ale ucinkuje API fce flock(...)<br/>
<br/>
Dne 30.03.2020 v 18:14 Jaroslav Buchta napsal(a):<br/>
> 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 <br/>
> uz posunuty. Ale zase je divne, ze celkovy pocet znaku asi prijde, <br/>
> protoze jinak by to vypadlo na timeout. Na strane slave (STM32) <br/>
> problem nepredpokladam, pres jiny port to stejnym zpusobem komunikuje <br/>
> s PC a 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 <br/>
>>> v pripade, ze dela reset modemu a to je velmi sporadicky - ta <br/>
>>> funguje 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 <br/>
>>> jednoho 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 <br/>
>>>>> z 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/>
<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/>