Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: MScomm

Filerator [12.08.2009 13:57:03]

#

Terve,
Tarvittaisiin taas apuja viisaammilta ja kokeneemmilta:

Vastaanotan binääridataa työstökoneelta, joka käyttää vanhaa EIA-koodia.
EIA_ASCII_CONVERT funktio muuntaa tulevan datan byte kerrallaan ascii-koodiksi.

Vastaanotto ja muunto toimii hyvin kerran, kun koneelta lähettää EIA-tiedoston, mutta kun vastaan otan seuraavaa tiedostoa Dim DimensionedByteArray() As Byte kasvaa kohtuuttoman suureksi ja homma ei toimi.
Jos asetan Dim DimensionedByteArray(7) As Byte ja jätän ReDim:n pois ensimmäinen siirto menee ok, mutta toisella kertaa tulee owerflowta.

MSComm1.InputLen = 1
MSComm1.RThreshold = 1

        Dim Buffer As Variant
        Dim InBuffer
 '-------------------------------------------------
             Case comEvReceive

            Buffer = MSComm1.Input

            If eiakoodaus = True Then

            Dim DimensionedByteArray() As Byte
            Dim intCount As Integer
            Dim intDecimal As Byte
            ReDim DimensionedByteArray(LenB(Buffer))
            Dim i As Integer

            InBuffer = Buffer
            muunnettu = ""

           For intCount = 0 To (LenB(InBuffer) - 1)
            DimensionedByteArray(intCount) = CByte(InBuffer(intCount))
            intDecimal = DimensionedByteArray(intCount)
            muunnettu = muunnettu + EIA_ASCII_CONVERT(intDecimal)  ' EIA ASCII muunnos

            Next intCount

            save_eia 'tallentaa muunnetun datan

            Else 'ascii koodia
            FilterData ' suodattaa ja tallentaa datan
           End If

Jos joku kertoo paremman tavan poimia jokainen vastaanotettu byte tai syyn miksi homma ei toimi kuin yhden siirron, olen erittäin kiitollinen.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta