# RS232 / USB / Bezvadu komunikācija >  RS-232 un VB6 problēma.

## konis22

Sveiki visapkārt.
Ir projekts kurā vēlos komunicēt ar kontrolieri no datora caur com.Ir uzrakstīts viss kas vajadzīgs lai kontrolieris saņemtu komandas un atbildētu uz tām.Consoles variantā viss strādā.
Tagad uzveidoju vb grafisko vidi ar pogām un dažādiem logiem.Spaidot pogas kontroliers visu dara tā kā nākas un arī atbild.Tik tālu viss ok.Problēma sākas kad gribu ielasīt buferī to ko sūta man kontrolieris atpakaļ.
Saņemu tikai vienu baitu.To parāda viss ok.Bet man vajadzētu tā lai atsūta buferī teiksim 64 baitus un ja tur ir iekļauts teksts tunerOn tad lai šo saprotot attiecīgā logā parādas ON.Ar viena baita komunikāciju viss strādā ar if funkciju bet kā lai ielasa tos vairākus baitus.
Kādi ir jūsu ieteikumi.Nezinu kā būtu pareizāk jo ja es te ievietošu kautkādus citus ascii simbolus tad man komandrindā būs nesmuki  :: 
Šādi te man viņš strādā.

Private Sub MSComm1_OnComm()
  Dim StrData As Variant 'define variable type as it is variant
       StrData = MSComm1.Input
       Text9.Text = StrData
        MSComm1.Output = StrData    'Aizsuta atpakall uztverto
        If StrData = "2" Then
            Text2.Text = "On"
                    End If
        If StrData = "3" Then
            Text3.Text = "On"
                    End If
        If StrData = "4" Then
            Text4.Text = "On"
                    End If
        If StrData = "5" Then
            Text5.Text = "On"
                    End If
        If StrData = "6" Then
            Text6.Text = "On"
                    End If
        If StrData = "7" Then
            Text7.Text = "On"
                    End If
        If StrData = "8" Then
            Text8.Text = "On"

        End If


End Sub

Private Sub Form_Load()
  MSComm1.Settings = "9600,N,8,1"
       MSComm1.CommPort = 1
       MSComm1.InputLen = 1
       MSComm1.PortOpen = True
       MSComm1.RThreshold = 1
End Sub

----------


## ansius

> MSComm1.InputLen = 1


 njaa, pat lasīt nemākam ko paši uzrakstījuši... nez ko nozīmē šī rindiņa? varu derēt, ka liela daļa koda tev ir copy/paste

----------


## JDat

Tas nekas ka input LEN=1.
Idejai:



> StrData = MSComm1.Input
> Text9.Text = text9.text + StrData
> if instr(text9.text,"tunerON") then txtTunerStatus.text="ON"
> if len(text9.text)>100 then text9.text=""   'te vajag kurtāk organizēt. Izdomā kā, jo man sāp galva


 Nav tas korektākais, bet ceru ka ideju saprati.

----------


## ansius

vo jautājums VB ".=" konstrukciju saprot?

----------


## Texx

> vo jautājums VB ".=" konstrukciju saprot?


 Nekad neesmu redzējies iekš VB tādu. Domāju, ka nesaprot.

----------


## Slowmo

Vai ir kāds pamatojums, kāpēc jāizmanto VB6, ja ir pieejama modernāka valoda - VB.NET, pie tam bez maksas?
Pirmajā fremworkā (1.1) bija nedaudz problemātiski ar seriālo portu, bet sākot jau ar 2.0 ir pieejams System.IO.Ports "namespace", kurā ir seriālā porta klase.

Starp citu, ļoti nelabi ar If'iem esi uztaisījis kodu. Ja nu vienīgi kompilators nenooptimizē, sanāk neefektīvs kods. Ir taču Select Case konstrukcija pieejama.
Kaut kā šādi:


```
Select Case StrData
    Case "2"
        Text2.Text = "On"
    Case "3"
        Text3.Text = "On"
    'U.t.t
End Select
```

 
Un atbilde ansiusam - VB.NET saprot &= operatoru (VB6 nē), kas ir tas pats .= tikai VB.NET notācijā.
Text9.Text &= StrData

----------


## konis22

Paldies JDat!!!
Viss ok strādā tā kā vajag.Runājot par to kopēšanu tas par to 1 es jau sen domāju ka tas ir vainīgs bet diemžēl tā nebija.Tad jau nerakstītu.Kāda nozīme par to vai copy paste vai nē galvenais ka viss strādā un tā kā man vajag.
Runājot par NET versiju biju pamanijis bet pagaidām pietiks ar šo.Asm + vb6 + c būs ok!!
Paldies par komentāriem.

----------


## ansius

Kaut kā man grūti nosaukt to par programmēšanu, jo ja nesaproti visu kas tur rakstīts - sanāk ķert gļukus kurus pats esi sarakstījis. es nesaku, ka ir jāzin iekšejā uzbūve bibliotēkām, pietiek ka zinam piekļuves galus. Otrs kaut ka nespēju iebraukt VB fanātismā. tupa valoda, etc... ASM - to ir vērts priekš uC un advancētām lietām, C neesmu mācijies, bet +/- saprotu, Perl / PHP tā jau cita lieta.

programmēšanas sāls ir algoritms, kas tev tāds ļoti neveikls, kā jau slowmo izteicās...

----------


## JDat

no vienas pue lieka tupi, no otras... nav jau ātrākais veids, bet kā tur ir ar tiem stringiem? uztaisam tupu FIFO buferi un miers, ja nevar savādāk.

a.=b
Kas tas?
Iekš gambas2 bija kaut ka tml a+=b
Un? Ko tālāk?
Gambas ir cool, VB6 sux tāpēc? Huju! Gambas - pingvīnam, VB6 - logiem.
Na nav tāda kontrukcija tad raksti kā māki. Vot problēma... Neiet runa par dažu demitu CLK iepišanu uz Gigahercu datora priekš vieglas programmiņas...

Man pie kājas ka .NET var labāk. Savulaik apguvu VB6 un zinu ka tas strādās gan uz win98, gan uz WINE, gan uz XP. Uz win7? Well neesmu tik tālu uzaudzis. Ja esi apguvi vienu un programmē konkrētu uzdevumu sasniegšanai, nevis programmēšanas dēļ, tad kāda vella pēc dzīties pēc jaunākā.

Ja strādā, tad nemēģini uzlabot. Vai arī taii labāk no nulles.

Vrag horošo, eto lučše. Kā mani Didzis mācīja.

PS: cepiens par .NET jau bija blakusforumā...

----------


## egilssk

Pārej tomēr uz VB.NET, jo Win7 never vaļā VB6 rakstītos failus. Pats iekritu.

----------


## Slowmo

Kaut kā neloģiski. Fails jau ir no programmēšanas valodas neatkarīga lieta. Ja nevēra vaļā, tādad nepareizi kaut ko darīji. Kas tie par failiem bija, ja drīkst zināt?

----------


## egilssk

Ne jau failus, bet nokompilēto programmu. paskaties GOOGLE, pilns ar jautājumiem.
http://www.google.lv/#hl=lv&cp=8&gs_...w=1366&bih=643

----------


## JDat

> Pārej tomēr uz VB.NET, jo Win7 never vaļā VB6 rakstītos failus. Pats iekritu.


 Padies, bet citreiz. Es vairāk skatos Gambas virzienā uz pigvīna... Neko nepadarīs...

----------


## Slowmo

Ir oficiāls paziņojums no MS, ka VB6 tiek supportēts Win7 un arī Win8 to supportēs. http://msdn.microsoft.com/en-us/vstudio/ms788708
Un pēc pieredzes zinu, ka strādā VB6 programmas uz Win7. Vajag tikai VB runtime uzinstalēt (SP6 laikam pēdējais) un VB6 Common Controls. Bet es tāpat nekad negribētu pie VB6 atgriezties.

----------


## konis22

Nu cik cilvēku tik viedokļu.
Win 7 jau pats par sevi normāli nestrādā kur nu vēl ar kādu vecāku tūli ja kas saveidots.Nu man iesākumam derēs tas pats.Ja ir kas uz pingvīna tāds tad domāju papētīšu nākamo to.
Bet ir lietas kas man nepatīk šajā forumā!!!!!ja es jautāju vb6 tad nevajag braukt uzreiz virsū.Paskatoties rus forumus tad tur tā to nemana kā lv starpā!!!
Ja es prasītu lums vb.net vai gambā tad prasītu bet ja prasu vb6 un nav kas atbild tad nevajag uzreiz uzbraukt.Tad jau labāk nerakstat neko kā nokritizē līdz ārprātam.
Bet visā visumā atbildi dabuju.Man vajag tikai lai ir vienkārša exe kas iet uz xp platformas.

----------


## Texx

konis22 taisnība par to, ka tēma atkal aizpeldēja nepareizā virzienā.
Runājot par windows, man septītais ļoti patīk un nav ar nevienu softu bijušas problēmas. Pie xp atgriezties negribas, kaut arī tam, "uztūnētam", nav ne vainas.

----------

