seriovy port a VS2008 problem

Miroslav Draxal evik na volny.cz
Středa Duben 4 10:03:01 CEST 2012


Jo a ještě si vzpomínám, že prvotní reakce od převodníku na příjem byla dost
pomalá, uteklo dlouho času. Ve VS6 bylo zvykem vybírat z bufferu vždy 1 byt,
ten skládat do pole a to ...... NET podle mě neumí vybírat pouze 1 znak.
Vždy vysype celý bufer. Zde jsem musel komunikaci taky předělávat

--------------------------------------------------------------------
Vb6
    Select Case Comport1.CommEvent
    Case comEvReceive
' po sériové lince přišel byt
            InputString = Comport1.Input
' přišel datový byt
            If InputString <> vbCr Then
                ReceiveBufeer = ReceiveBufeer + InputString
                PrijmutyCheck = Asc(InputString)
                PocitamCheck = PocitamCheck + PrijmutyCheck
            Else
                PocitamCheck = PocitamCheck - PrijmutyCheck
                    If PrevedCisloNa2ASCII(PocitamCheck Mod 256).CisliceLo
<> PrijmutyCheck Then
                        Comport1.InBufferCount = 0
' chyba příjmu, vymaž celý příjmutý bufert
                    Else
                        InputData Left(ReceiveBufeer, Len(ReceiveBufeer) -
1)       ' příjem zprávy ok.,ořizni kontrolní součet
                    End If
                    PocitamCheck = 0
' vyčisti pro další příjem
                    ReceiveBufeer = ""
' vyčisti pro další příjem
            End If
	End Select
------------------------------------------------------
Po převedení do net tohle zásadně zazdí první relaci příjmu 
Musel jsem to předělat nějak takhle
------------------------------------------------------
        Com_InputString = COMpartiProcesor.ReadExisting()     ' přišel
datový byt, ovšem vysipe celý bufer
        Do
            Com_InputStringPitva = VB.Left(Com_InputString, 1)
            If VB.Len(Com_InputString) > 1 Then
                Com_InputString = VB.Right(Com_InputString,
VB.Len(Com_InputString) - 1)
            Else
                Com_InputString = ""
            End If
            If Com_InputStringPitva = vbCr Then
                PocitamCheck = PocitamCheck - PrijmutyCheck
                If PrevedCisloNa2ASCII(PocitamCheck Mod 256).CisliceLo =
PrijmutyCheck Then
                    InputData(VB.Left(ReceiveBufeer, Len(ReceiveBufeer) -
1)) ' příjem zprávy ok.,ořizni kontrolní součet
                Else
                    Debug.Print("CHYBA KONTROLNÍHO SOUČTU PŘI PŘÍJMU")
                End If
                PocitamCheck = 0 ' vyčisti pro další příjem
                ReceiveBufeer = "" ' vyčisti pro další příjem
            Else
                ReceiveBufeer = ReceiveBufeer & Com_InputStringPitva
                PrijmutyCheck = Asc(Com_InputStringPitva)
                PocitamCheck = PocitamCheck + PrijmutyCheck
            End If
        Loop While VB.Len(Com_InputString)

-----Original Message-----
From: hw-list-bounces na list.hw.cz [mailto:hw-list-bounces na list.hw.cz] On
Behalf Of Miroslav Draxal
Sent: Wednesday, April 04, 2012 9:45 AM
To: 'HW-news'
Subject: RE: seriovy port a VS2008 problem

Dobrý den,
 VS6 a net jsou nekompaktibilni. Co funguje pod vb6 nemusí fungovat pod net.
Už jenom to, že vb6 byl jednovlaknový. Pokud přišlo něco na com, potom se
přerušilo probíhání programu a vzniklo jakoby přerušení, proběhlo událost
příjmutí z comu a pak se to vrátilo odkud si to odskočilo. V net vzniká při
příjmu vždy nové vlákno a tam je podle mě chyba. Sám jsem se s tím potýkal.
Chtělo by to nahlídnout do programu, ale musím podotknout, že kolikrát je to
dosti podstatná změna programu. Míra

-----Original Message-----
From: hw-list-bounces na list.hw.cz [mailto:hw-list-bounces na list.hw.cz] On
Behalf Of Bohumil Fulin
Sent: Wednesday, April 04, 2012 9:25 AM
To: hw-list
Subject: seriovy port a VS2008 problem


Narazil jsem na problem se kterym si nevim rady.

Mam napsanou seriovou komunikaci pod VB.net ve VS2008. Program ma periodicky
vycitat zarizeni jednou za 100ms a delka vety je par bytu. Pro seriovou
komunikaci pouzivam externi knihovnu kterou jiz pouzivam mnoho let. Ted ale
po prechodu n VS2008 se mi stava ze seriova komunikace je necim narusovana,
jako kdyby ji VS2008 prerusovalo a mizeji byty. Na HW seriovy port to dela
chyby obcas a po pouziti USB rs232 prevodiku je to nepouzitelne

Presne prepsani programu do VB6 ma za nasledek ze vsechno funguje jak ma. Na
HW seriovy port i USB prevodnik.

Tusite nekdo v cem muze byt problem?

b
_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list
 

__________ Informace od ESET NOD32 Antivirus, verze databaze 7025 (20120404)
__________

Tuto zpravu proveril ESET NOD32 Antivirus.

http://www.eset.cz
 
 

__________ Informace od ESET NOD32 Antivirus, verze databaze 7025 (20120404)
__________

Tuto zpravu proveril ESET NOD32 Antivirus.

http://www.eset.cz
 

_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list
 

__________ Informace od ESET NOD32 Antivirus, verze databaze 7025 (20120404)
__________

Tuto zpravu proveril ESET NOD32 Antivirus.

http://www.eset.cz
 
 

__________ Informace od ESET NOD32 Antivirus, verze databaze 7025 (20120404)
__________

Tuto zpravu proveril ESET NOD32 Antivirus.

http://www.eset.cz
 



Další informace o konferenci Hw-list