12. april 2008 - 12:25Der er
20 kommentarer og 1 løsning
comport problem
hej E.
Jeg har et problem, jeg har en kode fra VBA hvor jeg opretter forbindelse til en comport, men den vil ikke vrke i Access nogen som kan lave denne kode om:
Private Sub Command1_Click()
PortTimeout = False If MSComm1.PortOpen = True Then MSComm1.PortOpen = False MSComm1.CommPort = port MSComm1.Settings = "9600,N,8,1" MSComm1.InBufferSize = 1 MSComm1.PortOpen = True MSComm1.RThreshold = 500
Are you sure the component is registered correctly? Do you have a reference to the control?
By brother happens to be an experet at serial comms and I asked him if the code you gave is correct, this is his answer.
It's a little more complicated than that. It depends what he wants to do.
Private Sub Command1_Click() Dim Port as Integer Port = 1 '// His example shows him using a variable called 'Port' but it '// doesn't show whether this is being set elsewhere ? '// so I'll do it here. 1, 2 or 3 or whatever for whichever com port '// he wants to use.
PortTimeout = False '// What's this 'PortTimeout' ? Is it a global variable declared elsewhere ? '// It doesn't have anthing to do with MSComm '// so what is he expecting it to do ?
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False MSComm1.CommPort = port MSComm1.Settings = "9600,n,8,1" MSComm1.InBufferSize = 8192 MSComm1.InputLen = 0 MSComm1.RThreshold = 500 MSComm1.PortOpen = True End If
Exit Sub
In this example I've declared a receive buffer (InBufferSize) of 8k If RTHreshold is set to any value above zero then the receive buffer needs to be big enough to hold at least that much data. But because Windows is not very responsive he needs to be generous so I'd never use less than 8k
I'm actually nervous of using RThreshold at all. I'd set that to 0 which means that a receive 'OnComm' event will be triggered as soon as any data arrives.
He doesn't set any flow control. The remote device might have Flow control enabled so if he doesn't want to use flow control then he must also set mscomm1.rtsenable = true mscomm1.dtrenable = true Only actually of use if his cable is wired for hardware flow control but setting these won't harm anything so I'd do that anyway.
if you look at the link I gave 21/04-2008 19:39:11 it contains code to a VB program which should also work in Access VBA. This code uses API calls so that MSCOMM isnt needed.
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.