Avatar billede william_munny Nybegynder
19. april 2004 - 13:27 Der er 4 kommentarer og
1 løsning

Com kommunikation med mscomm32.ocx

Hej Eksperter,
Jeg er ved at lave en applikation som skal kommunikere med en "slags" måle instrument. Hvis jeg forbinder med hyperterminal kan jeg fint få kontakt med instrumentet men hvis jeg benytter mscomm32.ocx kontrollen får jeg ingen kontakt overhovedet.
Har nu prøvet at bruge en anden computer og her får jeg fint kontakt med instrumentet fra min kode? Er der nogle specielle ting der skal tages højde for når man bruger mscomm32.ocx? Det skal lige siges at begge computere køre win 2k med visualbasic 6.0 installeret.
Avatar billede edl Nybegynder
19. april 2004 - 13:31 #1
Hvorledes kommer datastrømmen fra måle instrumenterne.

Option Explicit


Dim COMBuf1 As String    'COM-buffer 1 - buffer med modtagne data
Dim COMBuf2 As String    'COM-buffer 2 - buffer med modtagne data



Private Sub Form_Load()
  MSComm1.CommPort = 1                  'set COM-port
  MSComm1.Settings = "19200,n,8,1"      'set COM-parametre
  MSComm1.InputMode = comInputModeText  'alm. tekst modtages
  MSComm1.RThreshold = 1                'interrupt for hver 1 karakter der modtages
  MSComm1.PortOpen = True              'åbn COM-port

'  MSComm2.CommPort = 4                  'set COM-port
'  MSComm2.Settings = "19200,n,8,1"      'set COM-parametre
'  MSComm2.InputMode = comInputModeText  'alm. tekst modtages
'  MSComm2.RThreshold = 1                'interrupt for hver 1 karakter der modtages
'  MSComm2.PortOpen = True              'åbn COM-port
End Sub



'COM port 1
'Denne rutine er en interrupt rutine der kaldes når der modtages én karakter
'på COM-porten. Rutinen henter karakteren og placerer den i en buffer.
Private Sub MSComm1_OnComm()
  Dim COMInput
 
  If MSComm1.CommEvent = comEvReceive Then  'interrupt når karakter modtages
    COMInput = MSComm1.Input      'hent karakter fra receive buffer
    COMBuf1 = COMBuf1 + COMInput  'kopier til receive buffer
    'If COMInput = "#" Then        'led efter exit karakter (#)
      Text1.Text = "MSComm1 - I got you - you little %#&(!!" + vbCrLf + COMBuf1
    'End If
  End If
End Sub
Avatar billede william_munny Nybegynder
19. april 2004 - 13:36 #2
Min kode ser således ud, og den virker på pc nr 2?

Private Const cComSetting As String = "4800,n,8,1"
Private Const cComPort As Integer = 1

Private strResult As String

Private Sub Form_Load()
    'Close port, if open
    If MSComm1.PortOpen Then
        MSComm1.PortOpen = False
    End If
       
    With MSComm1
        .CommPort = 1 'cComPort
        .Settings = "9600,n,8,1" 'cComSetting
        .RThreshold = 1
    End With
   
    'Open port
    MSComm1.PortOpen = True

    MsgBox MSComm1.Settings & vbCr & MSComm1.CommPort
   
    strResult = ""
   
End Sub


Private Sub MSComm1_OnComm()
   
    strResult = strResult & MSComm1.Input
    Debug.Print "Result:    " & strResult
    txtResult.Text = strResult

End Sub
Avatar billede edl Nybegynder
19. april 2004 - 13:46 #3
Du skal vel også huske
MSComm1.InputMode = comInputModeText  'alm. tekst modtages


Prøv dette
  If MSComm1.CommEvent = comEvReceive Then 
    strResult = strResult & MSComm1.Input
    Debug.Print "Result:    " & strResult
    txtResult.Text = strResult
  end if
Avatar billede william_munny Nybegynder
19. april 2004 - 13:46 #4
Nå vi har lige prøvet at smide et nyt Com kort i og nu virker det :-) smid et svar som tak for hjælpen.
Avatar billede edl Nybegynder
19. april 2004 - 13:54 #5
OK .-)
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