¿Como hacer esto?
Publicado: Jue Oct 26, 2006 11:36 am
Saludos:
Estoy usando un aparato externo que para leerlo utilizo una DLL que
suministra el fabricante del aparato, el tema del uso del mismo con la
DLL esta resuelto gracias a la ayuda de José Lalín así que por esa parte
sin problemas mi pregunta va en la forma de implementar uno de los
valores que devuelve para saber los puertos que están abiertos en el
ordenador ya que emplea una técnica que es la que debo implementar, la
casa suministra para que sepas como lo hace el siguiente código para
Visual Basic.
Private Sub Command3_Click()
Dim puertos As Long
'This function try to open till 6 ComPorts and returns the open_com_port
'// COMPort 6 5 4 3 2 1 open_port_code F..Free = 1 N..Not Free = 0
'// N N N N N N 0
'// N N N N N F 1
'// N N N N F N 2
'// N N N F F F 3 ..
puertos = dll.check_com_port()
If (puertos And 32) = 0 Then
com6.Enabled = False
End If
If (puertos And 16) = 0 Then
com5.Enabled = False
End If
If (puertos And 8) = 0 Then
com4.Enabled = False
End If
If (puertos And 4) = 0 Then
com3.Enabled = False
End If
If (puertos And 2) = 0 Then
com2.Enabled = False
End If
If (puertos And 1) = 0 Then
com1.Enabled = False
MsgBox ("No hay puertos disponibles")
End If
End Sub
Si yo evalúo la variable puertos me devuelve en el caso de mi ordenador
el número 3 (puertos 1 y 2) que corresponde a la trasformación del valor
binario representado por 000011 que es tres en decimal, pero que quiere
decir que la posición primera y segunda son un uno y así seguiríamos
hasta completar toda la gama de posibilidades, con arreglo a esto yo
necesito en un RadioMenu con los seis botones de los puertos,
deshabilitar los que no pueda usar el operador y de los que queden coger
por defecto en mas bajo de los que queden lEnabled.
Alguna idea, ya se que puedo hacer una función que evalúe las 32
posibilidades y según eso devolver un array con los puertos, pero viendo
la rutina que ellos emplean me parece demasiado.
El operador "And" en Visual Basic se emplea para evaluar la posición
binaria del número si corresponde a un uno un cero, ¿tendría algo que
ver con el tema las Funciones de Aritmética de Bits ? si es así como
puedo emplearlas en este caso.
Gracias.
José Ramón Castro.
Estoy usando un aparato externo que para leerlo utilizo una DLL que
suministra el fabricante del aparato, el tema del uso del mismo con la
DLL esta resuelto gracias a la ayuda de José Lalín así que por esa parte
sin problemas mi pregunta va en la forma de implementar uno de los
valores que devuelve para saber los puertos que están abiertos en el
ordenador ya que emplea una técnica que es la que debo implementar, la
casa suministra para que sepas como lo hace el siguiente código para
Visual Basic.
Private Sub Command3_Click()
Dim puertos As Long
'This function try to open till 6 ComPorts and returns the open_com_port
'// COMPort 6 5 4 3 2 1 open_port_code F..Free = 1 N..Not Free = 0
'// N N N N N N 0
'// N N N N N F 1
'// N N N N F N 2
'// N N N F F F 3 ..
puertos = dll.check_com_port()
If (puertos And 32) = 0 Then
com6.Enabled = False
End If
If (puertos And 16) = 0 Then
com5.Enabled = False
End If
If (puertos And 8) = 0 Then
com4.Enabled = False
End If
If (puertos And 4) = 0 Then
com3.Enabled = False
End If
If (puertos And 2) = 0 Then
com2.Enabled = False
End If
If (puertos And 1) = 0 Then
com1.Enabled = False
MsgBox ("No hay puertos disponibles")
End If
End Sub
Si yo evalúo la variable puertos me devuelve en el caso de mi ordenador
el número 3 (puertos 1 y 2) que corresponde a la trasformación del valor
binario representado por 000011 que es tres en decimal, pero que quiere
decir que la posición primera y segunda son un uno y así seguiríamos
hasta completar toda la gama de posibilidades, con arreglo a esto yo
necesito en un RadioMenu con los seis botones de los puertos,
deshabilitar los que no pueda usar el operador y de los que queden coger
por defecto en mas bajo de los que queden lEnabled.
Alguna idea, ya se que puedo hacer una función que evalúe las 32
posibilidades y según eso devolver un array con los puertos, pero viendo
la rutina que ellos emplean me parece demasiado.
El operador "And" en Visual Basic se emplea para evaluar la posición
binaria del número si corresponde a un uno un cero, ¿tendría algo que
ver con el tema las Funciones de Aritmética de Bits ? si es así como
puedo emplearlas en este caso.
Gracias.
José Ramón Castro.