Avatar billede dark_one Nybegynder
02. september 2004 - 21:11 Der er 8 kommentarer og
1 løsning

input fra comport fortsat

Hej jeg har fået et godt lille stykke kode her på siden :)

Dim PortTimeout As Boolean


Private Sub Command2_Click()
PortTimeout = False
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
    MSComm1.CommPort = 2
    MSComm1.Settings = "9600,N,8,1"
    MSComm1.InBufferSize = 1
    MSComm1.PortOpen = True
          Do
          Data = MSComm1.Input
          If Data <> "" Then
            Text1.Text = Text1.Text & Data
        End If
          DoEvents
          If PortTimeout Then Exit Do
        Loop
  MSComm1.PortOpen = False
End Sub

Private Sub Command3_Click()
PortTimeout = True
End Sub

Nu har jeg så bare det problem at input bliver splittet op forkert, jeg bruger en stregkodescanner, og vil sikre mig at den først går videre når den har modtaget hele koden ( eks slutkarakter er fast ¤) hvordan kan jeg gøre det
altså så den venter med at sende data videre indtil den møder et ¤
//Dark
Avatar billede kabbak Professor
03. september 2004 - 08:08 #1
Private Sub Command2_Click()
PortTimeout = False
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
    MSComm1.CommPort = 2
    MSComm1.Settings = "9600,N,8,1"
    MSComm1.InBufferSize = 1
    MSComm1.PortOpen = True
          Do
          Data = MSComm1.Input
          If Data <> "" Then
            Text1.Text = Text1.Text & Data
        End If
          DoEvents
          If PortTimeout Then Exit Do
         
        Loop Until Right(Text1.Text, 1) = "¤" ' eller find ascii koden for tegnet
        'Loop Until Len(Text1.Text) = 15 ' eller hvis du kender antal tegn
       
  MSComm1.PortOpen = False
End Sub
Avatar billede dark_one Nybegynder
03. september 2004 - 18:59 #2
ser fint ud, men kan den "undlade" at smide slutkarakteren med ?
altså inddata = "123456789#" men jeg vil have string ="123456789"

//Dark
Avatar billede kabbak Professor
03. september 2004 - 19:18 #3
Private Sub Command2_Click()
PortTimeout = False
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
    MSComm1.CommPort = 2
    MSComm1.Settings = "9600,N,8,1"
    MSComm1.InBufferSize = 1
    MSComm1.PortOpen = True
          Do
          Data = MSComm1.Input
          If data = "¤" then exit do
          If Data <> "" Then
            Text1.Text = Text1.Text & Data
        End If
          DoEvents
          If PortTimeout Then Exit Do
         
        Loop
           
  MSComm1.PortOpen = False
End Sub
Avatar billede dark_one Nybegynder
03. september 2004 - 19:18 #4
har fundet ud af den del, men der dukkede en anden sag op.
Den bryder jo do loopet :(
det vil jeg ikke, jeg skal blive ved med at have porten åben for input

//Dark
Avatar billede kabbak Professor
03. september 2004 - 19:24 #5
Hvad skal den da gøre i stedet, kalde en anden sub og derefter tømme Tekst1.Text og så rortsætte loopet
Avatar billede kabbak Professor
03. september 2004 - 19:26 #6
If data = "¤" then
Call Din sub
Data =""
Tekst1.text = ""
end if
Avatar billede dark_one Nybegynder
03. september 2004 - 19:36 #7
det ligner noget jeg kan bruge :D
Smider du et svar mester

//Dark
Avatar billede kabbak Professor
03. september 2004 - 20:02 #8
et svar. ;-))
Avatar billede kabbak Professor
03. september 2004 - 22:31 #9
Tak for point ;-))
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester