Jump to content

Recommended Posts

Posted

Boas pessoal

Sou novo cá mas é com muito agrado que me registei porque a vossa ajuda vai ser útil concerteza.

Tenho uma aplicação (que não foi desenvolvida por mim) que comunica via porta série com um controlador RFID.

A aplicação funciona muito bem, mas neste momento tenho em mãos um novo controlador RFID (mais moderno) que comunica por porta Ethernet.

Estou a tentar adaptar a aplicação para o novo controlador mas não está fácil. Estou a explorar a comunicação via sockets, mas até ver não deu em nada.

Alguém já teve em mãos algo do género ou pode me dar uma ajuda?

obrigado, Cumprimentos a todos.

Posted

numa aplicação á parte atravéz do IP e da porta consigo comunicar com o controlador RFID.

Mas no programa que funciona com porta série, na zona onde é aberta a porta COM e tudo mais, não consigo substituir toda a programação relativa a porta série, por algo liga a porta Ethernet (sockts, etc)..

Posted

Vais ter de ser mais específico em relação ao que não consegues.

não consigo substituir toda a programação relativa a porta série, por algo liga a porta Ethernet (sockts, etc)..

Não consegues porque? Mostra código

Posted
'Change settings and Open Serial Port
Private Sub ButtonConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonConnect.Click

	If SerialPort1.IsOpen Then
		SerialPort1.Close()
	End If
	Try
		SerialPort1.PortName = ComboBox1.SelectedItem
		SerialPort1.BaudRate = 9600
		SerialPort1.Parity = IO.Ports.Parity.None
		SerialPort1.DataBits = 8
		SerialPort1.StopBits = IO.Ports.StopBits.One
		SerialPort1.Encoding = System.Text.Encoding.Default

		SerialPort1.Open()

		LabelMessage.ForeColor = Color.Green
		LabelMessage.Text = ComboBox1.Text & " connected."
		ButtonConnect.Enabled = False
		ButtonDisconnect.Enabled = True
		ButtonReadTag.Enabled = True
		ButtonSaveTag.Enabled = True
	Catch ex As Exception
		ButtonReadTag.Enabled = False
		ButtonSaveTag.Enabled = False
		MsgBox(ex.ToString)
	End Try

End Sub

'Close Serial Port
Private Sub ButtonDisconnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonDisconnect.Click
	Try
		SerialPort1.Close()
		LabelMessage.ForeColor = Color.Orange

		LabelMessage.Text = SerialPort1.PortName & " disconnected."
		ButtonConnect.Enabled = True
		ButtonDisconnect.Enabled = False
		ButtonReadTag.Enabled = False
		ButtonSaveTag.Enabled = False
	Catch ex As Exception
		ButtonReadTag.Enabled = True
		ButtonSaveTag.Enabled = True
		MsgBox("Não foi possível desconectar da Porta " + SerialPort1.PortName + " ! Erro: ", ex.ToString)
	End Try
End Sub
Posted

Preciso substituir esta funcionalidade para usar antes a porta Ethernet (TCP).

Usando porta série há necessidade de abrir e fechar a porta série. Usando a porta Ethernet também há essa necessidade? ou a comunicacao está sempre estabelecida(porta sempre aberta e á escuta)??

Posted

sim, este é o original que quero alterar. Já fiz outra versao em que uso sockets com o IP e a porta respectiva do equipamento, mas nao comunica.

Ao longo do código quando houver linhas do tipo serial. ..., nao ha maneira de substituir por algo identico do tipo: ethernet. .... ou socket. .... ?

Mas inicialmente queria adaptar o programa, abrindo e fechando a porta ethernet (como faco abrindo a porta série).

dps ao longo do código a comunicacao náo é muita e a que há é do tipo:

SerialPort1.Write(Chr(StartByte) & Chr(ReadCommand) & NullByte & Chr(StartAddress) & NullByte & Chr(DataLenght) _

& Chr(7) & Chr(208) & Chr(digitTerminator) & Chr(digitTerminator)) 'Read CHIP Data

Havendo uma maneira de substituir SerialPort1.Write..... por EthernetPort1.Write.... conseguia resolver o meu problema

Posted

A meu ver, primeiro faz testes num projecto à parte, em que fazes ligação ao IP/porta, envias/recebes dados e fechas.

Querer implementar o uso de sockets sem perceber o minimo do funcionamento, torna um bocado mais complicado.

Tens ai o connect para fazer a ligação

http://msdn.microsoft.com/en-us/library/fkbhht5w%28v=vs.110%29.aspx

Para enviar informação

http://msdn.microsoft.com/en-us/library/w93yy28a%28v=vs.110%29.aspx

Para fechar a ligação

http://msdn.microsoft.com/en-us/library/system.net.sockets.tcpclient.close%28v=vs.110%29.aspx

Posted
Imports System.Net.IPAddress
Imports System.Int32
Imports System
Imports System.Text
Imports System.Net
Imports System.Net.Sockets


Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
	'Uses the IP address and port number to establish a socket connection.
	Dim tcpClient As New TcpClient
	Dim ipAddress As IPAddress = Dns.GetHostEntry("192.168.253.200").AddressList(0)
	tcpClient.Connect(ipAddress, 50200)
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click


	' Create a client that will connect to a  
	' server listening on the contosoServer computer
	' at port 11000.
	Dim tcpClient As New TcpClient()
	tcpClient.Connect("192.168.253.200", 50200)
	' Get the stream used to read the message sent by the server.
	Dim networkStream As NetworkStream = tcpClient.GetStream()
	' Set a 10 millisecond timeout for reading.
	networkStream.ReadTimeout = 10
	' Read the server message into a byte buffer.
	Dim bytes As Byte() = New Byte(1023) {}
	networkStream.Read(bytes, 0, 1024)
	'Convert the server's message into a string and display it.
	Dim data As String = Encoding.UTF8.GetString(bytes)
	Console.WriteLine("Server sent message: {0}", data)
	networkStream.Close()
	tcpClient.Close()

End Sub

End Class

Nelson, a abertura e o encerramento da porta Ethernet estará bem?

O IP do controlador ë 192.168.253.200 e a pota é 50200.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.