[ oggie @ 05.02.2009. 12:51 ] @
Treba na serijski port da posaljem neku komandu u specificnom formatu ali imam problem jer ne prihvata celu komandu:

Komanda = "blabla blabla -b 0x60000 -r 0x80000 -l 0x230000 -f 0x60030000 blabla"

1. Kada kazem MSComm.output = "blabla blabla -b 0x60000 -r 0x80000 -l 0x230000 -f 0x60030000 blabla" i kada sa inputa procitam sta je dobio, on dobije nesto ovako
"blabla blabla -b 00 -r 0x80000 -l 00 -f 0x60030000 blabla" , drugim recima neke brojeve skrati

2. Onda posaljem kao niz bajtova

dim a () as byte
a= strconv("blabla blabla -b 0x60000 -r 0x80000 -l 0x230000 -f 0x60030000 blabla",vbfromunicode)
MSComm.output =a

ali se opet desava isto

Onda vidim da ima property OutBufferSize=512, pa se postavlja pitanje da li je to dovoljno?

U kom obliku poslati gore navedenu komandu da radi kako treba?



[ oggie @ 05.02.2009. 13:33 ] @
Sad sam probao:

MSComm.Output="123456789123456789123456789" a on sa inputa vrati "123456789123456456789".

Isprobano vise stringova i uvek na 15 poziciji nesto skrati po random algoritmu. O cemu se ovde radi?
[ stefanpn @ 05.02.2009. 17:16 ] @
Problem je verovatno u tome sto ti nije isti baudrate na oba uradjaja, a moze da se desi i da imas elektromagnetne smetnje.
[ oggie @ 05.02.2009. 17:51 ] @
Baudrate je isti 57600 .....izgleda da ima neke veze sa velicinom buffera, ali jos uvek nisam otkrio resenje.
[ mulaz @ 05.02.2009. 18:01 ] @
jesi probao da podelis string na vise manjih podstringova, i saljes jedan po jedan?
[ oggie @ 05.02.2009. 18:07 ] @
Probao, ali i dalje ne radi.
[ mulaz @ 05.02.2009. 18:16 ] @
a da ubacis delay izmedju? koliki je recieve buffer na prijemniku? Koliki je delay kod recieva? A da implementiras "nesto", da reciever posalje neki podatak, kad primi prvih recimo 14 simbola, pa da onda saljes dalje?
[ vujkev @ 05.02.2009. 18:40 ] @
Ako se dobri sećam MSComm kontrola ima property InputLen sa kojom možeš da definišeš koliko karaktera odjednom čitas sa buffer-a. Predpostavljam da je on kod tebe namešten na 15, a ti ga postavi na 0 kako bi čitao sve odjednom
[ oggie @ 05.02.2009. 19:32 ] @
InputLen je setovan na 0.

Kod mene se sve desava u petlji:

MSComm.output = " ona gore komanda" & vbCrLf

NekoVreme = Timer
While Instr(1,Odgovor, "Nesto sto ocekujem")=0

DoEvents
odgovor= odgovor & MSComm.input

if Timer - NekoVreme > 50 Then
' otisao u timeout izbacim neku gresku
endif

wend
[ oggie @ 05.02.2009. 19:35 ] @
Ovo sto sam detektovao da se desava na 15 karakteru.... ne mora da znaci da je neko pravilo. Pokusao sam na tom mestu da u output string ubacim neke space-ove.... ali nije proslo.
[ icobh @ 05.02.2009. 20:42 ] @
Moraćeš raditi drugačije. Probaj ovako: Šalješ jedan byte i čekaš echo, a taj drugi kad primi byte, on ga dodaje u svoj neki bafer, u programu, i vraća taj byte nazad. Tako će da radi malo sporije ali ćeš dobiti zaštitu...