Public Function NumTo32Bits(Numero As String) As String
Dim Valor As Double
Dim Resto(31) As Double
Dim Dividendo(31) As Long
Dim iContador As Integer
Dim Aux As String
'Verifica se o número pode ser convertido
If IsNumeric(Numero) Then
Valor = CDbl(Numero)
Else
NumTo32Bits = "Valor incompatível"
Exit Function
End If
'Efetua a conversão
For iContador = 0 To 31
Resto(iContador) = Valor - (Int(Valor / 2) * 2)
Dividendo(iContador) = Fix(Valor / 2)
Valor = Dividendo(iContador)
Next
'Pega os bits na ordem inversa e retorna
For iContador = 31 To 0 Step -1
Aux = Aux & Resto(iContador)
Next iContador
NumTo32Bits = Aux
End Function
terça-feira, 20 de outubro de 2015
quinta-feira, 8 de outubro de 2015
Tornar o fundo de uma imagem transparente em VB.NET
Private Sub form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim imagem As New Bitmap("c:\imagem.jpg")
imagem.MakeTransparent(Color.White) 'Para colocar a cor branca como transparente
picturebox1.Image = imagem 'Carrega a imagem para um PictureBox
End Sub
Dim imagem As New Bitmap("c:\imagem.jpg")
imagem.MakeTransparent(Color.White) 'Para colocar a cor branca como transparente
picturebox1.Image = imagem 'Carrega a imagem para um PictureBox
End Sub
Função em VBA no Process Book para escrever um valor em um tag
Fazer
referência á Biblioteca: PISDK 1.3
Type Library
Menu Tools --> References
Public Sub EscreveValor(NomeTag As String, Valor As Variant)
Dim srv As Server
Dim tag As PIPoint
Dim timestamp As String
Dim startTime As String
Set srv = PISDK.Servers.DefaultServer
startTime = srv.servertime
Set tag = srv.PIPoints(NomeTag)
Tag.Data.UpdateValue Valor, startTime, dmReplaceDuplicates
End Sub
Menu Tools --> References
Public Sub EscreveValor(NomeTag As String, Valor As Variant)
Dim srv As Server
Dim tag As PIPoint
Dim timestamp As String
Dim startTime As String
Set srv = PISDK.Servers.DefaultServer
startTime = srv.servertime
Set tag = srv.PIPoints(NomeTag)
Tag.Data.UpdateValue Valor, startTime, dmReplaceDuplicates
End Sub
Função em VBA no Process Book para ler o TimeStamp de um tag
Fazer referência á Biblioteca: PISDK 1.3 Type Library
Menu Tools --> References
Function LeTimeStamp(NomeDoTag As String) As String
Dim tag As PIPoint
Dim srv As Server
Dim timestamp As Variant
Set srv = Servers("TADCIPI01")
Set tag = srv.PIPoints(NomeDoTag)
timestamp = tag.Data.Snapshot.timestamp.LocalDate
LeTimeStamp = timestamp
End Function
Dim tag As PIPoint
Dim srv As Server
Dim timestamp As Variant
Set srv = Servers("TADCIPI01")
Set tag = srv.PIPoints(NomeDoTag)
timestamp = tag.Data.Snapshot.timestamp.LocalDate
LeTimeStamp = timestamp
End Function
Função em VBA no ProcessBook para ler o valor de um tag
Fazer referência á Biblioteca: PISDK 1.3 Type Library
Menu Tools --> References
Function LeValor(NomeDoTag As String) As String
Dim tag As PIPoint
Dim srv As Server
'Dim Valor As PIValues
Dim Valor As Variant
Dim timestamp As Variant
Set srv = Servers("TADCIPI01")
Set tag = srv.PIPoints(NomeDoTag)
Valor = tag.Data.Snapshot.Value
'Set Valor = Tag.Data.Snapshot.Value
If Valor <> "Bad" Then
LeDado = Valor
Else
LeDado = "-1"
End If
End Function
Dim tag As PIPoint
Dim srv As Server
'Dim Valor As PIValues
Dim Valor As Variant
Dim timestamp As Variant
Set srv = Servers("TADCIPI01")
Set tag = srv.PIPoints(NomeDoTag)
Valor = tag.Data.Snapshot.Value
'Set Valor = Tag.Data.Snapshot.Value
If Valor <> "Bad" Then
LeDado = Valor
Else
LeDado = "-1"
End If
End Function
terça-feira, 13 de janeiro de 2015
O Campo TTL do Comando PING
TTL – É um
campo existente no cabeçalho do Pacote IP que tem por finalidade evitar que o mesmo
fique rodando em loop infinito na rede.
Ele é decrementado de uma unidade por segundo toda vez que passa por uma
gateway.
“Pois bem,
há uma certa confusão com relação ao TTL que faz muita gente relaciona-lo com o
numero de saltos, visto que, ao passar por cada gateway, ao menos um valor
de TTL deve ser decrementado, ainda que o pacote não tenha ficado
por lá por 1 segundo. Entretanto, o roteador pode decrementar mais de uma
unidade TTL por segundo que este pacote tenha permanecido por lá. Assim, o
TTL realmente expressa unidades de tempo e não de saltos”
http://netfindersbrasil.blogspot.com.br/2009/12/entendendo-o-campo-ttl-time-to-live.html
O padrão de alguns sistemas operacionais para o campo TTL do Ping:
·
UNIX – Valor = 255
·
WINDOWS – Valor = 128
·
LINUX – Valor = 64
Este
campo pode ser usado por um invasor para descobrir o sistema operacional usado.
Para evitar isto, pode-se alterar o valor do TTL padrão dificultando um pouco a
vida dos invasores.
Para
alterar o o valor de TTl no Windows, é necessário alterar o registro:
1 Iniciar
– executar – regedit.exe
2 Localize
a seguinte chave:
HKEY_LOCAL_MACHINE\SYSTEM\CorrentControlSet\Services\Tcpip\Parameters
3
Localize
a DWORD chamado DefaultTTL e edite o seu valor
Se
ela não existir, Clique em Editar, Novo – Valor da Cadeia de Caracteres, depois coloque o valor desejado para o TTL.
Função Excel para retornar o último dia do mês
Function UltimoDiaDoMes(Ano As Integer, Mes As Integer) As Integer
'1) Para um ano ser bisexto, ele deve ser divisível por 4,
' não pode ser por 100, exceto se for por 400
'2) Retorna -1 se o mês for menor que 1 ou maior que 12
Dim bEbissexto As Boolean
If Ano Mod 4 = 0 Then
If Ano Mod 100 = 0 Then
If Ano Mod 400 = 0 Then
bEbissexto = True
Else
bEbissexto = False
End If
Else
bEbisexto = True
End If
Else
bEbissexto = False
End If
Select Case Mes
Case 1 'Janeiro
UltimoDiaDoMes = 31
Case 2 'Fevereiro
If bEbissexto = True Then
UltimoDiaDoMes = 29
Else
UltimoDiaDoMes = 28
End If
Case 3 'Março
UltimoDiaDoMes = 31
Case 4 'Abril
UltimoDiaDoMes = 30
Case 5 'Maio
UltimoDiaDoMes = 31
Case 6 'Junho
UltimoDiaDoMes = 30
Case 7 'Julho
UltimoDiaDoMes = 31
Case 8 'Agôsto
UltimoDiaDoMes = 31
Case 9 'Setembro
UltimoDiaDoMes = 30
Case 10 'Outubro
UltimoDiaDoMes = 31
Case 11 'Novembro
UltimoDiaDoMes = 30
Case 12 'Dezembro
UltimoDiaDoMes = 31
Case Else
UltimoDiaDoMes = -1
End Select
End Function
'1) Para um ano ser bisexto, ele deve ser divisível por 4,
' não pode ser por 100, exceto se for por 400
'2) Retorna -1 se o mês for menor que 1 ou maior que 12
Dim bEbissexto As Boolean
If Ano Mod 4 = 0 Then
If Ano Mod 100 = 0 Then
If Ano Mod 400 = 0 Then
bEbissexto = True
Else
bEbissexto = False
End If
Else
bEbisexto = True
End If
Else
bEbissexto = False
End If
Select Case Mes
Case 1 'Janeiro
UltimoDiaDoMes = 31
Case 2 'Fevereiro
If bEbissexto = True Then
UltimoDiaDoMes = 29
Else
UltimoDiaDoMes = 28
End If
Case 3 'Março
UltimoDiaDoMes = 31
Case 4 'Abril
UltimoDiaDoMes = 30
Case 5 'Maio
UltimoDiaDoMes = 31
Case 6 'Junho
UltimoDiaDoMes = 30
Case 7 'Julho
UltimoDiaDoMes = 31
Case 8 'Agôsto
UltimoDiaDoMes = 31
Case 9 'Setembro
UltimoDiaDoMes = 30
Case 10 'Outubro
UltimoDiaDoMes = 31
Case 11 'Novembro
UltimoDiaDoMes = 30
Case 12 'Dezembro
UltimoDiaDoMes = 31
Case Else
UltimoDiaDoMes = -1
End Select
End Function
Assinar:
Postagens (Atom)