Soros port (rs232)
Köszönöm a választ!kefeur írta:Kedves DmANn
Lehet gondod a vezeték hosszakkal is , nekem is okozott pronlémát.
Picike ferrit gyűrű megoldotta.
Itt ez nem tudom mennyire lehet gond, jelenleg az usb-soros átalakítóba egy régi egér vezetékét dugtam. Csak a másik oldalon már nem az egér van
38kbps-on is ugyanígy hibázik, nem értem.
Hogy lehet, hogy 1 karaktert mindig tökéletesen átvisz, bármilyen gyorsan is gépelem a terminalba?
Karaktervesztés nincs, vagyis a pc felől valószínűleg megfelelően jön a sorozat, csak néha tévesen. A hibák hamming távolsága pedig egy 20 hosszú stringnél max 3, de pont azért menne kristályról, hogy precíz legyen..
Ha elvágom a kábelt, mekkora hosszt hagyjak neki?
Köszi,
DmANn
Az Egér kábelek tudnak nagyon gyenge minőségűek lenni. Ha nem árnyékolt szerintem el is dobhatod. Szerez vagy csinálj árnyékolt kábelből. Rossz tápegységből vagy monitorból termelj ki zavarszűrő ferritgyűrűt és húzd rá a kábel mindkét végére. PC-nél (pláne ha noti) lehet, hogy nincs meg a +-12V az Soros kimeneten. A hossza elvileg lehetne akár 2 – 3m-is.
Köszi a tippeket, ezzel így lehet hogy sikerülkapu48 írta:Az Egér kábelek tudnak nagyon gyenge minőségűek lenni. Ha nem árnyékolt szerintem el is dobhatod. Szerez vagy csinálj árnyékolt kábelből. Rossz tápegységből vagy monitorból termelj ki zavarszűrő ferritgyűrűt és húzd rá a kábel mindkét végére. PC-nél (pláne ha noti) lehet, hogy nincs meg a +-12V az Soros kimeneten. A hossza elvileg lehetne akár 2 – 3m-is.
Egyelőre nincsenek közelben ilyen cuccok, de jövő héten beszerzek és kipróbálom.
További kellemes napot,
DmANn
Egyben küldöm a 8 karaktert.
Amit észre vettem :
Vételi moldal :
if a="a" then...
if a="b"then...
ha a-t küldök jó
ha b-t küldök jó
ha bab-ot küldök (print"bab") akkor a kapcsol 1-et b pedig 2-t
ezek szerint a vételi oldalon van gond!
1 karaktereket fogad csak nem pedig szavakat
Vagy az adó oldalon megy ki hibásan:
print "bab" az így mehet b;a;b
Amit észre vettem :
Vételi moldal :
if a="a" then...
if a="b"then...
ha a-t küldök jó
ha b-t küldök jó
ha bab-ot küldök (print"bab") akkor a kapcsol 1-et b pedig 2-t
ezek szerint a vételi oldalon van gond!
1 karaktereket fogad csak nem pedig szavakat
Vagy az adó oldalon megy ki hibásan:
print "bab" az így mehet b;a;b
Kefeur
Szia, kefeur!
Nem lehet, hogy a karakterenkénti fogadás azért van, mert inkey-t használsz?
Az előző oldalon küldött kódodban még az volt, nem maradt benne véletlenül?
Mert ezesetben pontosan az általad leírt módon működne.
Küldesz neki 'bab'-ot,
Akkor:
it
1 karakter beolvas, kiír.
it
1 karakter beolvas, kiír.
it
1 karakter beolvas, kiír.
Vagyis 'bab' esetén 'a' egyszer, 'b' kétszer.
Esetleg PC-vel nem tudod kipróbálni? Jó ellenpróba lehet.
Szép napot:
DmANn
Nem lehet, hogy a karakterenkénti fogadás azért van, mert inkey-t használsz?
Az előző oldalon küldött kódodban még az volt, nem maradt benne véletlenül?
Mert ezesetben pontosan az általad leírt módon működne.
Küldesz neki 'bab'-ot,
Akkor:
it
1 karakter beolvas, kiír.
it
1 karakter beolvas, kiír.
it
1 karakter beolvas, kiír.
Vagyis 'bab' esetén 'a' egyszer, 'b' kétszer.
Esetleg PC-vel nem tudod kipróbálni? Jó ellenpróba lehet.
Szép napot:
DmANn
Szabály: Amilyen formában küldjük az adatot, ugyanolyan formában is vesszük!
Ha karaktereket küldesz, akkor karaktereket is vegyél.
Ha stringet küldesz, akkor stringet vegyél! És ne alkalmaz ; -öt utána, mert akkor nem lesz elküldve automatikusan a vége karakter. És a vevő nem tudja hol az adat vége.
Ha karaktereket küldesz, akkor karaktereket is vegyél.
Ha stringet küldesz, akkor stringet vegyél! És ne alkalmaz ; -öt utána, mert akkor nem lesz elküldve automatikusan a vége karakter. És a vevő nem tudja hol az adat vége.
Ha maradsz a karaktereknél akkor:
Vagy mindég egyforma mennyiséget küldesz.
Vagy először küldesz egy értéket, hogy menyi karakter fog jönni.
Vagy kijelölsz egy karaktert, ami jelzi a sorozat végét.
Vevő oldalon az adásnak megfelelő ciklust szervezel.
Egyenként veszed a karaktereket, és összefűzöd őket 1 stringbe.
Vagy mindég egyforma mennyiséget küldesz.
Vagy először küldesz egy értéket, hogy menyi karakter fog jönni.
Vagy kijelölsz egy karaktert, ami jelzi a sorozat végét.
Vevő oldalon az adásnak megfelelő ciklust szervezel.
Egyenként veszed a karaktereket, és összefűzöd őket 1 stringbe.
Ha már mindenáron a megszakításban akarod feldolgozni akkor legalább Select case-be szervezd. Lényegesen gyorsabb, mint az If-ek sorozata.
És a feldolgozást csak akkor kezd el ha már minden karakter átjött!
És a feldolgozást csak akkor kezd el ha már minden karakter átjött!
A hozzászólást 1 alkalommal szerkesztették, utoljára kapu48 2009. június 7. vasárnap, 18:26-kor.
Köszi az infót.
Nézd át kérlek .
a küldés egyszerűen : print"valami"
a vétel :
on urxc vétel
főprogi:
do
csinál sokmindent
loop
end
vétel:
a=inkey()
select case a
case"a" 2...
case"b"
case "muhely"...
end select
return
Ez lenne a náza a proginak.
8 karaktert kellene tudnia pl.:"hatsajto"
És ha ez jött akkor toggle 1 jelzőbit
Fontos hogy ne 1 karakter-ek legyenek!
Nézd át kérlek .
a küldés egyszerűen : print"valami"
a vétel :
on urxc vétel
főprogi:
do
csinál sokmindent
loop
end
vétel:
a=inkey()
select case a
case"a" 2...
case"b"
case "muhely"...
end select
return
Ez lenne a náza a proginak.
8 karaktert kellene tudnia pl.:"hatsajto"
És ha ez jött akkor toggle 1 jelzőbit
Fontos hogy ne 1 karakter-ek legyenek!
Kefeur
Kód: Egész kijelölése
Dim I As Byte
Dim A As String * 1
Dim uzenet as String * 8
I = 0
Uzenet = ""
Vetel:
A = Inkey()
Uzenet = Uzenet + A
I = I + 1
If I = 8 Then ' Fontos, hogy mindég 8 karaktert küldj mert csak akkor kezdődik a feldolgozás.
Select Case Uzenet 'Feldolgozás
Case "a " : 2...
Case "b_______" :
Case "muhely " : ...
End Select
I = 0 ' Itt alaphelyzetbe állítod és kezdődik elölröl
Uzenet = ""
End If
Return