/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
mscomm.ocx
Fra : Morten Snedker


Dato : 09-04-02 22:06

Hej igen,

Jeg har for en rum tid siden lavet et lille vb-program, der hele tiden
står og læser fra com1-porten. Input kommer fra en stregkode-læser.

Pludselig - efter det har virket upåklageligt i lang tid, fejler
programmet permanent.

Ex. karaktererne 1, 2, 4, 7 og 8 bliver til andre karakterer. Jeg har
midlertidig løst problemet ved at konverterer karaktererne til deres
rette værdi - men det er jo en klude-løsning, som det vil kunne ses
fra min kode nedenfor.

Problemet sker på flere maskiner.

Men: hvis jeg lader HyperTerminal læse input'et fra stregkodelæseren,
så bliver det læst som det skal. Derfor min mistanke til ocx'et. Med
mindre nogen kan se noget fejl i koden ?? Eller mangler der måske en
eller anden setting på mit ocx i designet?

Stregkoden er af typen Code39.

Den væsentlige kode ser således ud:


*****************************************
Private Sub MSComm1_OnComm()


If MSComm1.CommEvent = 2 Then
strbuffer = strbuffer & MSComm1.Input
End If

End Sub

Private Sub Timer1_Timer()

'1=177
'2=178
'4=180
'7=183
'8=184

If Len(strbuffer) > 0 Then
Timer1.Interval = 0

For x = 1 To Len(strbuffer)
If Mid(strbuffer, x, 1) = Chr(177) Then
strbuffer = Left(strbuffer, x - 1) & "1" &
Mid(strbuffer, x + 1)
End If
If Mid(strbuffer, x, 1) = Chr(178) Then
strbuffer = Left(strbuffer, x - 1) & "2" &
Mid(strbuffer, x + 1)
End If
If Mid(strbuffer, x, 1) = Chr(180) Then
strbuffer = Left(strbuffer, x - 1) & "4" &
Mid(strbuffer, x + 1)
End If
If Mid(strbuffer, x, 1) = Chr(183) Then
strbuffer = Left(strbuffer, x - 1) & "7" &
Mid(strbuffer, x + 1)
End If
If Mid(strbuffer, x, 1) = Chr(184) Then
strbuffer = Left(strbuffer, x - 1) & "8" &
Mid(strbuffer, x + 1)
End If
Next x

strbuffer = Left(strbuffer, Len(strbuffer) - 2)
List1.AddItem Now & ": " & strbuffer
Call MaintList

Call HandleData(strbuffer)
Timer1.Interval = 1000
strbuffer = ""

End If


End Sub
*****************************************

mvh & på forhånd tak,

Morten Snedker

 
 
Carsten Jessen (10-04-2002)
Kommentar
Fra : Carsten Jessen


Dato : 10-04-02 09:28

Hej Morten
Jeg er ikke sikker på om dette hjælper dig, men jeg oplevede, da jeg
benyttede mscomm.ocx at ikke al informationen nåede frem til computeren før
min sub var færdig med at læse inbufferen, hvilket resulterede i nogle
mærkelige resultater. (Har du skiftet til en hurtigere computer?)

Prøv følgende for at tjekke om det er din kode eller din læser der er noget
galt med.

Private Sub MSComm1_OnComm()

mscomm1.inputlen=1
do until mscomm1.inbuffercount=0
label1=label1 & mscomm1.input
loop

End Sub

Jeg er ikke helt sikker på om ovenstående kode er Ok. Jeg har mulighed for
at svare igen i aften så kan jeg skrive hvad jeg præcis gjorde.

MVH Carsten




"Morten Snedker" <morten.nospam@dbconsult.dk> wrote in message
news:dcl6buskfsbp86m5bohh41fburi8d682gl@4ax.com...
> Hej igen,
>
> Jeg har for en rum tid siden lavet et lille vb-program, der hele tiden
> står og læser fra com1-porten. Input kommer fra en stregkode-læser.
>
> Pludselig - efter det har virket upåklageligt i lang tid, fejler
> programmet permanent.
>
> Ex. karaktererne 1, 2, 4, 7 og 8 bliver til andre karakterer. Jeg har
> midlertidig løst problemet ved at konverterer karaktererne til deres
> rette værdi - men det er jo en klude-løsning, som det vil kunne ses
> fra min kode nedenfor.
>
> Problemet sker på flere maskiner.
>
> Men: hvis jeg lader HyperTerminal læse input'et fra stregkodelæseren,
> så bliver det læst som det skal. Derfor min mistanke til ocx'et. Med
> mindre nogen kan se noget fejl i koden ?? Eller mangler der måske en
> eller anden setting på mit ocx i designet?
>
> Stregkoden er af typen Code39.
>
> Den væsentlige kode ser således ud:
>
>
> *****************************************
> Private Sub MSComm1_OnComm()
>
>
> If MSComm1.CommEvent = 2 Then
> strbuffer = strbuffer & MSComm1.Input
> End If
>
> End Sub
>
> Private Sub Timer1_Timer()
>
> '1=177
> '2=178
> '4=180
> '7=183
> '8=184
>
> If Len(strbuffer) > 0 Then
> Timer1.Interval = 0
>
> For x = 1 To Len(strbuffer)
> If Mid(strbuffer, x, 1) = Chr(177) Then
> strbuffer = Left(strbuffer, x - 1) & "1" &
> Mid(strbuffer, x + 1)
> End If
> If Mid(strbuffer, x, 1) = Chr(178) Then
> strbuffer = Left(strbuffer, x - 1) & "2" &
> Mid(strbuffer, x + 1)
> End If
> If Mid(strbuffer, x, 1) = Chr(180) Then
> strbuffer = Left(strbuffer, x - 1) & "4" &
> Mid(strbuffer, x + 1)
> End If
> If Mid(strbuffer, x, 1) = Chr(183) Then
> strbuffer = Left(strbuffer, x - 1) & "7" &
> Mid(strbuffer, x + 1)
> End If
> If Mid(strbuffer, x, 1) = Chr(184) Then
> strbuffer = Left(strbuffer, x - 1) & "8" &
> Mid(strbuffer, x + 1)
> End If
> Next x
>
> strbuffer = Left(strbuffer, Len(strbuffer) - 2)
> List1.AddItem Now & ": " & strbuffer
> Call MaintList
>
> Call HandleData(strbuffer)
> Timer1.Interval = 1000
> strbuffer = ""
>
> End If
>
>
> End Sub
> *****************************************
>
> mvh & på forhånd tak,
>
> Morten Snedker



Søg
Reklame
Statistik
Spørgsmål : 177557
Tips : 31968
Nyheder : 719565
Indlæg : 6408885
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste