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
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í.