TCP/IP - jak komunikovat v HEXA?   zodpovězená otázka

VB6/VBA

Zdravim, řešim už několik dní problém s komunikací přes TCP/IP.

Potřebuju implementovat protokol pro konkrétní zařízení.

Všechno mi funguje dobře až do doby než si protokol zažádá odpověď ve formátu hexa 5b003131305d (ascii - "[.110]")

Dělám to ve VB6 a používám běžný win socket a bohužel jsem nepřisel na jiný způsob jak odeslat správný kód než přes konverzi původního hexa na string:

For x = 1 To Len(sText) Step 2

HexToAsc = HexToAsc & Chr("&H" & Mid$(sText, x, 2))

Next x

Tímto dostanu správný kód pro odeslání, ale když se podívam co na port skutečně přijde (přes ethereal) pak socket odešle pouze "[" předpokládám, že je to tím, že kod hexa 00 je v socketu přeložen jako NULL a proto ignoruje odeslání zbytku kódu.

Tedy otázky zní:

1, jak dostat korektně kód "5b003131305d" do socketu

2, nesetkal jste se nahodou někdo s jiným socketem který by uměl funkci .SendData přímo v hexa?

A nebo:

3, uměl by třeba nějaký šikovný "Céčkař" (nevím jesli v .net to nebude stejné?) takový socket vytvořit (nebo přímo implementovat ten protokol do jednoduchého odpovídacího programku)? Jedná se o komunikaci s cca 20 různými kódy. Sám jsem to měl v Basicu udělané cca za 3 hodinky bohužel s výše popisovaným problémem). Nabízím cca 500,- případná další spolupráce možná. (časem budeme implementovat další protokoly pro jiné typy zařízení).

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A co vam brani si naalokovat pole charu/bajtu delky=delka_hexu/2; jednoduse (mozna i VB na to ma fci, nevim) prevest ten hexa kod do toho pole bajtu a pak to poslat pres funkci send() takovou, ze jako parametr bere ten socket, pointer na pole tech bajtu a pak delku toho pole bajtu? Urcite VB neco takoveho ma, minimalne takhle to je ve WINAPI - http://msdn.microsoft.com/en-us/library/....

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud to posíláte jako String, pak se někde řetězec ukončí právě tím nulovým bajtem. Tuším, že byla nějaká metoda SendData, která uměla poslat pole bajtů, tam by tento problém být neměl. Ale jak se ta metoda přesně jmenovala, to už si nevzpomínám, s VB6 jsem naposledy dělal před pěti lety.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback