jmpiecco Posted February 12, 2014 at 04:00 PM Report #545052 Posted February 12, 2014 at 04:00 PM 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.
Gnrtuga Posted February 13, 2014 at 07:29 AM Report #545111 Posted February 13, 2014 at 07:29 AM Boas, não é a minha praia, mas espreita aqui: http://code.msdn.microsoft.com/windowsdesktop/TCP-Communication-in-VBNET-f6c48ca0 e http://www.nullskull.com/articles/20020323.asp Boa sorte. Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!) Nunca mais é verão outra vez.. :)
jmpiecco Posted February 13, 2014 at 08:13 AM Author Report #545113 Posted February 13, 2014 at 08:13 AM Obrigado Gnrtuga. Já tinha andado a ver um desses link's. A solução ao meu problema não foge muito da solução via Socket's, esta-me é a escapar uns pormenores.
nelsonr Posted February 13, 2014 at 11:27 AM Report #545126 Posted February 13, 2014 at 11:27 AM Que problema estás a ter exactamente? Fazes ligação ao IP/porta ou nem isso consegues?
jmpiecco Posted February 13, 2014 at 12:09 PM Author Report #545133 Posted February 13, 2014 at 12:09 PM 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)..
jmpiecco Posted February 20, 2014 at 09:04 PM Author Report #545986 Posted February 20, 2014 at 09:04 PM Pessoal, mais solucoes nao há? Obrigado
nelsonr Posted February 20, 2014 at 09:56 PM Report #545993 Posted February 20, 2014 at 09:56 PM 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
jmpiecco Posted February 21, 2014 at 10:49 AM Author Report #546033 Posted February 21, 2014 at 10:49 AM '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
nelsonr Posted February 21, 2014 at 10:53 AM Report #546034 Posted February 21, 2014 at 10:53 AM - Quando mostrares código no forum, coloca sempre entre as tags CODE - Esse código não tem nada sobre uso de sockets. Não chegaste a experimentar?
jmpiecco Posted February 21, 2014 at 10:54 AM Author Report #546035 Posted February 21, 2014 at 10:54 AM 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)??
nelsonr Posted February 21, 2014 at 10:54 AM Report #546036 Posted February 21, 2014 at 10:54 AM - Esse código apenas abre e fecha a ligação à porta série. Não era suposto haver comunicação?
jmpiecco Posted February 21, 2014 at 11:03 AM Author Report #546037 Posted February 21, 2014 at 11:03 AM 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
nelsonr Posted February 21, 2014 at 11:10 AM Report #546041 Posted February 21, 2014 at 11:10 AM 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
jmpiecco Posted February 21, 2014 at 11:14 AM Author Report #546042 Posted February 21, 2014 at 11:14 AM Muito obrigado Nelson. Depois digo como correu. Cumprimentos
jmpiecco Posted February 21, 2014 at 04:55 PM Author Report #546069 Posted February 21, 2014 at 04:55 PM 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.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now