L.P. Programování Mosaic 20. 1. 2025 19:21 21. 1. 2025 10:28

Dobrý den,

snažím se použít funkci OpenUniChannel z knihovny ComLib. Chci dosáhnout toho, abych nemusel mít napevno definované ETH kanály a vytvářel si je dynamicky podle potřeby a využití. Zkouším to na jednotce CP-2090.

Zkusil jsem tedy použít funkci OpenUniChannel následovně:
    chanHandle := OpenUniChannel( chanCode := ETH1_uni,  myPort   := 0, hisIP    := STRING_TO_IPADR('192.168.33.5'), hisPort  := 61111, protocol := UNI_TCP_CLIENT);

chanHandle pořád vrací hodnotu 32 896 resp. 16#8080...což mi nedává smysl, protože jsem čekal, že to vrátí ETH1_UNI0 - ETH1_UNI7 (takže 16#07E1 nebo něco takového).

Zkoušel jsem různě měnit vstupní parametry (IP adresu na prázdnou, ANYIP, čísla portů atp.) ale vždy to vrátí chanHandle  32 896. chanCode := ETH1_uni by měl být správně, protože do sítě je tecomat připojen přes port ETH1.
 

Kde dělám chybu? Je potřeba ještě někde něco nastavit?

 

Odpovědi 1

M.B. 21. 1. 2025 10:28

Dobrý den,

chybu neděláte. Čísla vracená funkcí OpenUniChannel jsou unikátní identifikátory, které nijak nesouvisí s tím jaké parametry spojení má. Narozdíl od konstant vyhrazených pro spojení založené přes I/O Configurátor, jsou tyto identifikátory přidělovány dynamicky, tak jak se volají funkce OpenUniChannel. Pokud je identifikátor uvolněn funkcí CloseUniChannel, může být stejný identifikátor zase přidělen dalšímu volání OpenUniChannel. V systémech Foxtrot 2 a TC800 je k dispozici těchto identifikátorů 128. Počet využitých identifikátorů je možné zjistit voláním funkce GetUniSocketInfo.

Vaše odpověď

Pro vložení odpovědi je nezbytné být přihlášený. Pokračujte na přihlášení.