Linux seriovy port

Ladislav Vaiz spam na nagano.cz
Pondělí Březen 30 20:37:20 CEST 2020


Zamykani je dobrovolne, aplikace musi soubor testovat a sama odmitnout otevrit port.
Jeste zkuste sudo lsof /dev/ttyS1, jestli si ho neotevrel nekdo dalsi.
L.

--
Stručně naklofáno na mobilu

-----Original Message-----
From: Jaroslav Buchta <jaroslav.buchta na hascomp.cz>
To: hw-list na list.hw.cz
Sent: po, 30 bře 2020 19:08
Subject: Re: Linux seriovy port

Jeste jeden dotaz - zkousel jsem vyvorit odpovidajici soubor ve 
/var/lock po spusteni aplikace s cislem procesu (mezery, cislo, nl - 
celkem 11 znaku jak jsem nasel) a nezabranilo to pouziti portu kdyz jsem 
znovu spustil aplikaci v jine konzoli. To takto nefunguje?
Jina aplikace uz tam ma odpovidajici soubor pro modem.
Zda se, ze ale ucinkuje API fce flock(...)

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


_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20200330/b3b9c197/attachment.html>


Další informace o konferenci Hw-list