RS232

EXPRESSO340 08/12/2013 15:47:29
#431913
Caros amigos tenho uma aplicação onde uso a porta serial para acionar um relé. O problema é que toda vez que ligo o computador, a porta serial emite sinais e fica ligando e desligando meu relé. Preciso fazer algo para impedir acionamento do relé na ocasião em que o computador é ligado. Alguém tem uma soluçao ?
Minha aplicação é simples :
serialport1.open
serialport1.rtsenable=true

Aguardo e agradeço se puderem;
OCELOT 09/12/2013 11:24:43
#431920
Acredito que não tenha como, afinal não tem como controlar a porta serial durante o boot, eu diria que pode simplesmente ser o sistema operacional tentando encontrar um mouse nesta porta que está fazendo com que o seu rele acione.

Como você não usa comunicação serial e sim apenas liga e desliga o sinal em 1 pino do cabo acho que não tem o que fazer, ou você aprende a conviver com isso durante o boot ou você vai ter que dar um jeito de realmente fazer uma comunicação serial
EXPRESSO340 09/12/2013 12:24:23
#431923
Sua resposta aguçou meu conhecimento. Para mim eu já estava usando uma comunicação serial. Como transformo meu código em uma comunicação serial jovem ?

Aguardo;
OCELOT 09/12/2013 14:12:27
#431926
Não tem como transformar o código, isso depende da outra ponta, o aparelho que está ligado na porta serial precisa dar este recurso, e pelo que eu entendi no seu caso você tem um rele que usa apenas o sinal do rts para saber se deve ligar ou não, como o rts é apenas um sinal, basicamente ligado ou desligado eu diria que não se pode considerar isso comunicação serial, já que na comunicação serial você envia e recebe bytes.

O que você precisaria era que ele em vez de usar o sinal do rts ele recebesse comandos, na forma de bytes, e ai sim acionasse ou não o rele de acordo com o comando recebido, mas ai provavelmente precisaria ser um microcontrolador ou algo do tipo para fazer a comunicação com o PC, o que já vai além do meu conhecimento.
EXPRESSO340 09/12/2013 17:03:07
#431937
Obrigado garoto
FOXMAN 13/12/2013 11:40:36
#432061
Faça um teste.

Desative a porta de comunicação no windows. De um boot no pc e verifique se mesmo assim o sinal é emitido.
Caso não seja emitido sinal algum, você poderá a partir do seu sistema ATIVAR e DESATIVAR a porta de comunicação.

EXPRESSO340 13/12/2013 11:50:28
#432062
Obrigado amigo pelo interesse. Vou testar sim e dou um retorno aqui para todos tirarem proveito.

Agradeço;
EXPRESSO340 15/12/2013 00:58:10
#432090
Foxman fiz o texte e deu certo. Mas passei boa parte da noite procurando um código vb.net que faça isso e não encontrei. Você tem algum ? Ou alguém tem ?
FOXMAN 15/12/2013 18:50:32
#432104
Citação:

:
Foxman fiz o texte e deu certo. Mas passei boa parte da noite procurando um código vb.net que faça isso e não encontrei. Você tem algum ? Ou alguém tem ?



Acho que a partir do link abaixo tu conseguirá alguma coisa.

http://stackoverflow.com/questions/252185/how-do-i-disable-a-system-device

Link do Exemplo : http://www.codeproject.com/KB/cs/HardwareHelper.aspx
DANIKULL 15/12/2013 19:27:17
#432105
Resposta escolhida
Amigo, boa noite.

Você tem conhecimentos de eletrônica?
O que você precisa fazer para resolver seu problema é ter na outra ponta um hardware embarcado que trabalhe com comunicação RS232 trabalhando no modo escravo, ou seja só faz o que o seu software mandar ele fazer.

abraços.
EXPRESSO340 16/12/2013 11:42:51
#432131
DANIKULL agradeço jovem , mas para mim não vai dar não. Vou tentar a opção do FOXMAN.
Caro FOXMAN à partir de suas instruções eu achei um código já em VB.net, mas não tenho idéia de como preparar ele para ativar a porta no momento em que meu programa rodar. Você sabería complementar para mim, ou me dar mais dicas ?
Segue o código abaixo ( código completo )
Agradeço;

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
DataGridView1.DataSource = Device.GetAllDevices
[ô]DataGridView1.DataSource = Device.GetNonWorkingDevices
End Sub
End Class

Public Class Device

Private mName As String
Private mManufacturer As String
Private mDescription As String
Private mService As String
Private mDeviceID As String
Private mPNPDeviceID As String
Private mClassGUID As String

Public Property Name() As String
Get
Return mName
End Get
Set(ByVal value As String)
mName = value
End Set
End Property

Public Property Manufacturer() As String
Get
Return mManufacturer
End Get
Set(ByVal value As String)
mManufacturer = value
End Set
End Property

Public Property Description() As String
Get
Return mDescription
End Get
Set(ByVal value As String)
mDescription = value
End Set
End Property

Public Property Service() As String
Get
Return mService
End Get
Set(ByVal value As String)
mService = value
End Set
End Property

Public Property DeviceID() As String
Get
Return mDeviceID
End Get
Set(ByVal value As String)
mDeviceID = value
End Set
End Property

Public Property PNPDeviceID() As String
Get
Return mPNPDeviceID
End Get
Set(ByVal value As String)
mPNPDeviceID = value
End Set
End Property

Public Property ClassGUID() As String
Get
Return mClassGUID
End Get
Set(ByVal value As String)
mClassGUID = value
End Set
End Property
Public Shared Function GetAllDevices() As List(Of Device)
Dim pc As String = [Ô].[Ô] [ô]local
Dim wmi As Object = GetObject([Ô]winmgmts:\\[Ô] & pc & [Ô]oot\cimv2[Ô])
Dim allDevices As New List(Of Device)
Dim devices As Object = wmi.ExecQuery([Ô]Select * from Win32_PnPEntity[Ô])
[ô]Dim devices As Object = wmi.ExecQuery([Ô]Select * from [Ô] & [Ô]Win32_SerialPort where Name = [ô]COM1[ô][Ô])
Dim device As Device
For Each d As Object In devices
device = New Device
With device
.mClassGUID = IIf(IsDBNull(d.ClassGuid), 0, d.ClassGuid)
.mDescription = IIf(IsDBNull(d.Description), 0, d.Description)
.DeviceID = IIf(IsDBNull(d.DeviceID), 0, d.DeviceID)
.Manufacturer = IIf(IsDBNull(d.Manufacturer), 0, d.Manufacturer)
.Name = IIf(IsDBNull(d.Name), 0, d.Name)
.PNPDeviceID = IIf(IsDBNull(d.PNPDeviceID), 0, d.PNPDeviceID)
.Service = IIf(IsDBNull(d.Service), 0, d.Service)
End With
allDevices.Add(device)
Next
Return allDevices
End Function

Public Shared Function GetNonWorkingDevices() As List(Of Device)
Dim pc As String = [Ô].[Ô] [ô]local
Dim wmi As Object = GetObject([Ô]winmgmts:\\[Ô] & pc & [Ô]oot\cimv2[Ô])
Dim notWorking As New List(Of Device)
[ô]Dim devices As Object = wmi.ExecQuery([Ô]Select * from [Ô] & [Ô]Win32_USBControllerDevice[Ô])
Dim devices As Object = wmi.ExecQuery([Ô]Select * from [Ô] & [Ô]Win32_PnPEntity WHERE ConfigManagerErrorCode <> 0[Ô])
[ô]Dim devices As Object = wmi.ExecQuery([Ô]Select * from [Ô] & [Ô]Win32_SerialPort[Ô])
Dim device As Device
For Each d As Object In devices
device = New Device
With device
.mClassGUID = IIf(IsDBNull(d.ClassGuid), 0, d.ClassGuid)
.mDescription = IIf(IsDBNull(d.Description), 0, d.Description)
.DeviceID = IIf(IsDBNull(d.DeviceID), 0, d.DeviceID)
.Manufacturer = IIf(IsDBNull(d.Manufacturer), 0, d.Manufacturer)
.Name = IIf(IsDBNull(d.Name), 0, d.Name)
.PNPDeviceID = IIf(IsDBNull(d.PNPDeviceID), 0, d.PNPDeviceID)
.Service = IIf(IsDBNull(d.Service), 0, d.Service)
End With
notWorking.Add(device)
Next
Return notWorking
End Function
End Class




Obrigado;
Tópico encerrado , respostas não são mais permitidas