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