Agradezco primero el espacio de consulta. Estoy tratando de desarrollar un dispositivo con el circuito FT232 de manera de utilizar las líneas CTS, CD, RI, DSR como entradas para habilitar un cronómetro (hecho en Visual basic 2010). He verificado que la señal eléctrica es reconocida por medio de un software: Hercules utilidades SETUP. La idea es por medio de un If si se habilita CTS, por ejemplo, inicie el cronómetro. Por el momento el mismo se habilita con un Button_click. Una solución que pensé era que cuando CTS este en true active el Button_click, pero estoy trabado y no puedo avanzar. Un abrazo, Eduardo.
Hola Eduardo,
Gracias por tu amabilidad.
Dime el punto donde no puedes avanzar y veo como ayudarte.
Y si lo prefieres pasamos la conversación a privado.
Te envío parte del código, puntualmente necesitaríamos que frente a la variación de alguna señal
del puerto serie (CD, RI, DSR, CTS) se active el evento Button_click:
a modo de ejemplo:
Si la señal CD (he leído que existe CDHolding) es true entonces se active Button1_Click: de esta manera el cronómetro se iniciaría.
Luego si la señal CTS es true entonces vaya activando Button4_Click: para ir tomando la muestra del tiempo transcurrido.
Espero que me haya explicado correctamente, un abrazo, Eduardo.
Hola Eduardo,
En tu caso deberías estar usando : ‘SerialPingChanged’
Private Sub Button6_Click(..
SerialPort1.PortName = ComboBox1.Text
SerialPort1.BaudRate = ComboBox2.Text
SerialPort1.Open()
Button6.Enabled = False
Button7.Enabled = True
AddHandler SerialPort1.PinChanged, AddressOf SerialPort1_PinChanged
End Sub
Sub SerialPort1_PinChanged(sender As Object, e As SerialPinChangedEventArgs)
Select Case e.EventType
Case SerialPinChange.Break
'
Case SerialPinChange.CDChanged
'
Case SerialPinChange.CtsChanged
'
Case SerialPinChange.DsrChanged
'
Case SerialPinChange.Ring
'
Case Else
'
End Select
End Sub
Hola, buen día. Mi nombre es Marcelo y quería saber cómo puedo hacer para detectar en qué Puerto con esta conectado mi adaptador rs232 a USB (tipo prolific).
Siempre agradecidos a vuestras respuestas, te enviamos el código que hemos probado sin lograr disparar el timer por el cambio del pin CTS, opración que con el evento click se puede hacer.
Imports System
Imports System.Threading
Imports System.Threading.Thread
Imports System.IO.Ports
Imports System.ComponentModel
Public Class Form1
‘Dim WithEvents COMPort As New SerialPort
Dim NumClics As Integer
Private stopw As New Stopwatch ‘Creo mi nuevo stopwatch
‘Se usa para listar los puertos disponibles
Dim myPort As Array
‘Se usa para lanzar el timer desde el evento del PinChanged
Dim myThread As Thread
Delegate Sub SetTextCallback(ByVal [text] As String) ‘Added to prevent threading errors during receiveing of data
‘————————————————
‘TODO: Correr el cronometro dentro de este método
Private Sub ModemLamps(ByVal sender As Object, ByVal e As SerialPinChangedEventArgs) Handles SerialPort1.PinChanged
If SerialPort1.CtsHolding Then
MsgBox(«Bienvenidos Alumnos de 3º»)
Console.WriteLine(«CtsHolding»)
‘Button1_Click(sender, e)
‘Este If no estaba, lo agregamos porque se lanza el evento muchas veces y puede ser un problema que se repita, igual no cambió nada
If Timer1.Enabled = False Then
Timer1.Enabled = True
‘Este código se probó y no funciona
Timer1.Interval = 1
Timer1.Enabled = True
Timer1.Start() ‘inicio el timer
stopw.Start() ‘Inicio el stopwatch, aqui es donde empieza a contar el tiempo
‘Probamos lanzar el timer desde un Thread y tampoco funciona
‘myThread = New Thread(New ThreadStart(AddressOf Me.ThreadProcUnsafe))
‘myThread.Start()
‘Sleep(0)
End If
Else
Console.WriteLine(«Otro Pin»)
MsgBox(«HASTA LUEGO»)
End If
End Sub
‘ This method is executed on the worker thread and makes
Private Sub ThreadProcUnsafe()
‘Inicialmente desabilitamos el Timer
Timer1.Enabled = False
End Sub
‘————————————————
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
‘Inicializar el puerto, esto està tomado del otro programa
If SerialPort1.IsOpen Then
‘COMPort.RtsEnable = False
‘COMPort.DtrEnable = False
SerialPort1.Close()
‘ NOTE. Because of the use of Invoke, the port should normally be closed from a different thread, see
‘ MaxiTesterClosing, but to ensure that the following delay works, this is not done in this case.
‘ Empty the message queue before the UI thread goes to sleep to update the modem lamps and the ComboBox.
Application.DoEvents()
Sleep(200) ‘ Wait 0.2 second for port to close as this does not happen immediately.
End If
Try
SerialPort1.Open()
Button6.Enabled = False
Button7.Enabled = True
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
‘————————————————
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
SerialPort1.Close()
Button6.Enabled = True
Button7.Enabled = False
End Sub
‘Private Sub SerialPort1_DataReceived(sender As System.Object, e As System.IO.Ports.SerialDataReceivedEventArgs) Handles
‘SerialPort1.DataReceived().
‘ReceivedText(SerialPort1.ReadExisting())
‘End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Console.WriteLine(«Button1 click»)
Timer1.Interval = 1 ‘declaro intervalo en 1
Timer1.Enabled = True
Timer1.Start() ‘inicio el timer
stopw.Start() ‘Inicio el stopwatch, aqui es donde empieza a contar el tiempo
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
‘Aqui imprimo el valor de los minutos,segundos y milisegundos del stopwatch
‘mientras este sigue avanzando sin interrupciones
Label1.Text = stopw.Elapsed.Minutes.ToString & » : » _
& stopw.Elapsed.Seconds.ToString & » : » _
& stopw.Elapsed.Milliseconds.ToString
Console.WriteLine(«Timer tick»)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
‘Con este boton detengo el timer y el stopwatch
stopw.Stop()
Timer1.Stop()
Timer1.Enabled = False
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
stopw.Reset()
Label1.Text = stopw.Elapsed.Minutes.ToString & » : » _
& stopw.Elapsed.Seconds.ToString & » : » _
& stopw.Elapsed.Milliseconds.ToString
TextBox1.Text = » »
TextBox2.Text = » »
TextBox3.Text = » »
TextBox4.Text = » »
NumClics = 0
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
NumClics = NumClics + 1
Select Case NumClics
Case 1
TextBox1.Text = Label1.Text
Case 2
TextBox2.Text = Label1.Text
Case 3
TextBox3.Text = Label1.Text
Case 4
TextBox4.Text = Label1.Text
End Select
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Dim oExcel As Object
Dim oBook As Object
Dim oSheet As Object
‘Iniciar un nuevo libro en Excel
oExcel = CreateObject(«Excel.Application»)
oBook = oExcel.Workbooks.Add
‘Agregar datos a las celdas de la primera hoja en el libro
oSheet = oBook.Worksheets(1)
‘Se agrega título de la columna
oSheet.Range(«B2»).Value = «TIEMPOS»
‘ Agregamos Los datos que queremos agregar
oSheet.Range(«B3»).Value = TextBox1.Text
oSheet.Range(«B4»).Value = TextBox2.Text
oSheet.Range(«B5»).Value = TextBox3.Text
oSheet.Range(«B6»).Value = TextBox4.Text
‘ hacemos visible el documento
oExcel.Visible = True
oExcel.UserControl = True
‘Guardaremos el documento en el escritorio con el nombre prueba
oBook.SaveAs(Environ(«UserProfile») & «EscritorioPrueba.xls»)
End Sub
Private Sub Panel1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Panel1.Paint
End Sub
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
MsgBox(«entro»)
Em pesquisa na internet achei o blog de onde pude aproveitar várias dicas em uma aplicação que estou desenvolvendo usando C# (visual studio express 2015). Trata-se de comunicação serial onde envio uma mensagem para um dispositivo e preciso verificar se houve resposta e daí comparar a resposta com o esperado validando a comunicação. Espero seu contato para que eu possa detalhar melhor o meu problema e talvez contar com sua ajuda. Espero que o idioma não seja um problema para nossa comunicação…
Ejodoa,
Ya respondi su pregunta en un post posterior. No dude en continuar la conversación si puedo serle útil. Y por supuesto el idioma no es ningún problema.
Estou desenvolvendo uma aplicação em c# no visual studio express 2015 onde comunico com um dispositivo pela porta serial. Envio uma mensagem, verifico se houve resposta é daí comparo com a resposta esperada validando a comunicação. Estou enviando a mensagem mas não estou conseguindo fazer as devidas verificações na resposta. Se pude me ajudar envio mais detalhes para você dar uma olhada. Desde já agradeço.
Hola ejodoa,
Obrigado. Por su pregunta.
Para poder descartar problemas de tiempo de proceso, en primer lugar deberías hacer las pruebas de envio/recepción desde el mismo programa cortocircuitando los pines 2/3 del conector serie. Si en las pruebas envias/recibes correctamente, entonces es muy probable que el equipo sea muchísimo mas rápido en procesar la primera recepción respecto al dispositivo, por lo que en estas condiciones no descartaría insertar algún tipo de retardo en el evento de recepción de datos.
Hola Sebastian,
En primer lugar deberías enumerar los ports disponibles en tu equipo, a continuación en la operación de «open» deberías enviar una petición tipo @ATI a tu lectora de códigos entendiendo que si responde esta disponible. 🙂
Soy Jorge Artieda y acabo de asistir a tu workshop «Reloaded : Connect things to Azure IoT HUB with Arduino and Visual Studio Code».
Yo también soy del mundo .Net, como te comentaba.
Muy interesante! He aprendido mucho!
Buenas noches, primero que todo muchas gracias por tan excelentes temas y ayudas que nos entregas a miles de personas.
Estoy tratando de conseguir un programa o tutorial para conectar una balanza y un computador por puerto serial. Logicamente para que el computador pueda recibir el peso de la balanza y este a su vez pueda copiar los datos recibidos de la balanza a un programa de facturacion. Seria como un programa que actuara de conector en donde a su vez al momento de pesar un producto, la balanza envie los datos al programa conector y este programa conector envie el peso al portapapeles o al programa de facturacion. Seria mejor que se recibiera al portapapeles, ya que existen cientos de programas de facturacion. Si me pudieras colaborar o guiar con este tema, te lo agradeceria inmensamente y ayudarias a muchas personas nuevamente, ya que he tratado de buscar en foros pero no hay un tema exactamente como te comento para poder conectar cualquier balanza. Muchas gracias, quedo atento
Hola Juan Carlos,
Lamentablemente no dispongo de demasiado tiempo para responder. Atendiendo que ha pasado casi un mes de tu petición. Como ves que pueda ayudarte? Necesitaria que me concretaras un poquito mas… hardware..etc.
Muchas gracias por tu ayuda, si en general te comente, existen varios modelos y marcas de balanzas. Pero en este caso las balanzas mas utilizadas son de la marca Torrey y Datalogic. En general casi todas siempre van a manejar la misma transmisión de datos que son:
Bits por segundo: 9600
Bits de datos: 8
Paridad: Ninguno
Bits de parada: 1
Control de Flujo: Ninguno.
Entonces por Ejemplo para obtener el peso de una Balanza de Marca Datalogic, lo que hago es por ejemplo con el programa Hyperterminal mandarle el comando desde un archivo .txt que contenga S11, ese comando lo que hara es obtener el Peso, las Balanzas siempre tienen un comando especial para llamar el peso. Pero cual es el desafio, de poder tener un programa que este mandando ese codigo automaticamente cuando detecte peso sobre la balanza, y que uno manualmente pueda cambiarle ese codigo. Es decir cambiar el codigo del comando para obtener el peso, ya que son infinidad de Balanzas en el mercado que existen. Ese programa como te digo debera pasar la informacion al portapapeles.
Muchas gracias por tu atencion , Saludos desde Colombia
Hola PepLluis espero que estes muy bien. He seguido tus tutoriales sobre conexión de balanzas a puerto serial para capturar datos y me han funcionado perfecto. Gracias por estos aportes.
Mi pregunta es la siguiente, estoy tomando datos en tiempo real de una balanza Mettler y los visualizo en un textbox de la misma forma que los muestra la balanza, lo que deseo es que cuando el valor de peso sea diferente de 0.0 g y sea estable el programa capture ese peso y lo ponga en un textbox. Por ejemplo: si coloco un peso sobre la bascula que sea 124.6 g quiero que ese valor se almacene en un textbox diferente al que me muestra el valor en tiempo real. Agradezco mucho tus comentarios y ayuda.
Cordial saludo.
Hola PepLluis:
Estoy haciendo una aplicación para poder recibir una trama..
Quisiera saber como hacer para recibir la trama completa desde el puerto serial Gracias por a tu atención.
Hola Luis,
Te he respondido en privado.
Saludos,
Buenas tardes:
Agradezco primero el espacio de consulta. Estoy tratando de desarrollar un dispositivo con el circuito FT232 de manera de utilizar las líneas CTS, CD, RI, DSR como entradas para habilitar un cronómetro (hecho en Visual basic 2010). He verificado que la señal eléctrica es reconocida por medio de un software: Hercules utilidades SETUP. La idea es por medio de un If si se habilita CTS, por ejemplo, inicie el cronómetro. Por el momento el mismo se habilita con un Button_click. Una solución que pensé era que cuando CTS este en true active el Button_click, pero estoy trabado y no puedo avanzar. Un abrazo, Eduardo.
Hola Eduardo,
Gracias por tu amabilidad.
Dime el punto donde no puedes avanzar y veo como ayudarte.
Y si lo prefieres pasamos la conversación a privado.
Un Saludo,
PepLluis,
-Buenas tardes Pep Lluis:
Te envío parte del código, puntualmente necesitaríamos que frente a la variación de alguna señal
del puerto serie (CD, RI, DSR, CTS) se active el evento Button_click:
a modo de ejemplo:
Si la señal CD (he leído que existe CDHolding) es true entonces se active Button1_Click: de esta manera el cronómetro se iniciaría.
Luego si la señal CTS es true entonces vaya activando Button4_Click: para ir tomando la muestra del tiempo transcurrido.
Espero que me haya explicado correctamente, un abrazo, Eduardo.
Hola Eduardo,
En tu caso deberías estar usando : ‘SerialPingChanged’
Private Sub Button6_Click(..
SerialPort1.PortName = ComboBox1.Text
SerialPort1.BaudRate = ComboBox2.Text
SerialPort1.Open()
Button6.Enabled = False
Button7.Enabled = True
AddHandler SerialPort1.PinChanged, AddressOf SerialPort1_PinChanged
End Sub
Sub SerialPort1_PinChanged(sender As Object, e As SerialPinChangedEventArgs)
Select Case e.EventType
Case SerialPinChange.Break
'
Case SerialPinChange.CDChanged
'
Case SerialPinChange.CtsChanged
'
Case SerialPinChange.DsrChanged
'
Case SerialPinChange.Ring
'
Case Else
'
End Select
End Sub
Hola, buen día. Mi nombre es Marcelo y quería saber cómo puedo hacer para detectar en qué Puerto con esta conectado mi adaptador rs232 a USB (tipo prolific).
Muchas gracias!
Buenos días PepLluis:
Siempre agradecidos a vuestras respuestas, te enviamos el código que hemos probado sin lograr disparar el timer por el cambio del pin CTS, opración que con el evento click se puede hacer.
Imports System
Imports System.Threading
Imports System.Threading.Thread
Imports System.IO.Ports
Imports System.ComponentModel
Public Class Form1
‘Dim WithEvents COMPort As New SerialPort
Dim NumClics As Integer
Private stopw As New Stopwatch ‘Creo mi nuevo stopwatch
‘Se usa para listar los puertos disponibles
Dim myPort As Array
‘Se usa para lanzar el timer desde el evento del PinChanged
Dim myThread As Thread
Delegate Sub SetTextCallback(ByVal [text] As String) ‘Added to prevent threading errors during receiveing of data
‘————————————————
‘TODO: Correr el cronometro dentro de este método
Private Sub ModemLamps(ByVal sender As Object, ByVal e As SerialPinChangedEventArgs) Handles SerialPort1.PinChanged
If SerialPort1.CtsHolding Then
MsgBox(«Bienvenidos Alumnos de 3º»)
Console.WriteLine(«CtsHolding»)
‘Button1_Click(sender, e)
‘Este If no estaba, lo agregamos porque se lanza el evento muchas veces y puede ser un problema que se repita, igual no cambió nada
If Timer1.Enabled = False Then
Timer1.Enabled = True
‘Este código se probó y no funciona
Timer1.Interval = 1
Timer1.Enabled = True
Timer1.Start() ‘inicio el timer
stopw.Start() ‘Inicio el stopwatch, aqui es donde empieza a contar el tiempo
‘Probamos lanzar el timer desde un Thread y tampoco funciona
‘myThread = New Thread(New ThreadStart(AddressOf Me.ThreadProcUnsafe))
‘myThread.Start()
‘Sleep(0)
End If
Else
Console.WriteLine(«Otro Pin»)
MsgBox(«HASTA LUEGO»)
End If
End Sub
‘ This method is executed on the worker thread and makes
Private Sub ThreadProcUnsafe()
Console.WriteLine(«ThreadProcUnsafe»)
Timer1.Interval = 100
Timer1.Start()
stopw.Start()
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
myPort = IO.Ports.SerialPort.GetPortNames()
ComboBox1.Items.AddRange(myPort)
ComboBox2.Text = «9600»
‘Inicialmente desabilitamos el Timer
Timer1.Enabled = False
End Sub
‘————————————————
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
‘Inicializar el puerto, esto està tomado del otro programa
If SerialPort1.IsOpen Then
‘COMPort.RtsEnable = False
‘COMPort.DtrEnable = False
SerialPort1.Close()
‘ NOTE. Because of the use of Invoke, the port should normally be closed from a different thread, see
‘ MaxiTesterClosing, but to ensure that the following delay works, this is not done in this case.
‘ Empty the message queue before the UI thread goes to sleep to update the modem lamps and the ComboBox.
Application.DoEvents()
Sleep(200) ‘ Wait 0.2 second for port to close as this does not happen immediately.
End If
SerialPort1.PortName = ComboBox1.Text
SerialPort1.BaudRate = ComboBox2.Text
Try
SerialPort1.Open()
Button6.Enabled = False
Button7.Enabled = True
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
‘————————————————
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
SerialPort1.Close()
Button6.Enabled = True
Button7.Enabled = False
End Sub
‘Private Sub SerialPort1_DataReceived(sender As System.Object, e As System.IO.Ports.SerialDataReceivedEventArgs) Handles
‘SerialPort1.DataReceived().
‘ReceivedText(SerialPort1.ReadExisting())
‘End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Console.WriteLine(«Button1 click»)
Timer1.Interval = 1 ‘declaro intervalo en 1
Timer1.Enabled = True
Timer1.Start() ‘inicio el timer
stopw.Start() ‘Inicio el stopwatch, aqui es donde empieza a contar el tiempo
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
‘Aqui imprimo el valor de los minutos,segundos y milisegundos del stopwatch
‘mientras este sigue avanzando sin interrupciones
Label1.Text = stopw.Elapsed.Minutes.ToString & » : » _
& stopw.Elapsed.Seconds.ToString & » : » _
& stopw.Elapsed.Milliseconds.ToString
Console.WriteLine(«Timer tick»)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
‘Con este boton detengo el timer y el stopwatch
stopw.Stop()
Timer1.Stop()
Timer1.Enabled = False
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
stopw.Reset()
Label1.Text = stopw.Elapsed.Minutes.ToString & » : » _
& stopw.Elapsed.Seconds.ToString & » : » _
& stopw.Elapsed.Milliseconds.ToString
TextBox1.Text = » »
TextBox2.Text = » »
TextBox3.Text = » »
TextBox4.Text = » »
NumClics = 0
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
NumClics = NumClics + 1
Select Case NumClics
Case 1
TextBox1.Text = Label1.Text
Case 2
TextBox2.Text = Label1.Text
Case 3
TextBox3.Text = Label1.Text
Case 4
TextBox4.Text = Label1.Text
End Select
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Dim oExcel As Object
Dim oBook As Object
Dim oSheet As Object
‘Iniciar un nuevo libro en Excel
oExcel = CreateObject(«Excel.Application»)
oBook = oExcel.Workbooks.Add
‘Agregar datos a las celdas de la primera hoja en el libro
oSheet = oBook.Worksheets(1)
‘Se agrega título de la columna
oSheet.Range(«B2»).Value = «TIEMPOS»
‘ Agregamos Los datos que queremos agregar
oSheet.Range(«B3»).Value = TextBox1.Text
oSheet.Range(«B4»).Value = TextBox2.Text
oSheet.Range(«B5»).Value = TextBox3.Text
oSheet.Range(«B6»).Value = TextBox4.Text
‘ hacemos visible el documento
oExcel.Visible = True
oExcel.UserControl = True
‘Guardaremos el documento en el escritorio con el nombre prueba
oBook.SaveAs(Environ(«UserProfile») & «EscritorioPrueba.xls»)
End Sub
Private Sub Panel1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Panel1.Paint
End Sub
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
MsgBox(«entro»)
End Sub
End Class
PepLluis,
Em pesquisa na internet achei o blog de onde pude aproveitar várias dicas em uma aplicação que estou desenvolvendo usando C# (visual studio express 2015). Trata-se de comunicação serial onde envio uma mensagem para um dispositivo e preciso verificar se houve resposta e daí comparar a resposta com o esperado validando a comunicação. Espero seu contato para que eu possa detalhar melhor o meu problema e talvez contar com sua ajuda. Espero que o idioma não seja um problema para nossa comunicação…
Att,
Ejodoa,
Ya respondi su pregunta en un post posterior. No dude en continuar la conversación si puedo serle útil. Y por supuesto el idioma no es ningún problema.
Un Saludo,
PepLluis,
Peplluis
Estou desenvolvendo uma aplicação em c# no visual studio express 2015 onde comunico com um dispositivo pela porta serial. Envio uma mensagem, verifico se houve resposta é daí comparo com a resposta esperada validando a comunicação. Estou enviando a mensagem mas não estou conseguindo fazer as devidas verificações na resposta. Se pude me ajudar envio mais detalhes para você dar uma olhada. Desde já agradeço.
Hola ejodoa,
Obrigado. Por su pregunta.
Para poder descartar problemas de tiempo de proceso, en primer lugar deberías hacer las pruebas de envio/recepción desde el mismo programa cortocircuitando los pines 2/3 del conector serie. Si en las pruebas envias/recibes correctamente, entonces es muy probable que el equipo sea muchísimo mas rápido en procesar la primera recepción respecto al dispositivo, por lo que en estas condiciones no descartaría insertar algún tipo de retardo en el evento de recepción de datos.
Saludos,
PepLluis,
Buenos días PepLluis:
Tengo un formulario el cual me permite leer el codigo de barras de la cedula
necesito saber o aprender como puedo identificar en que puerto tengo mi lectora de codigo de barras
Hola Sebastian,
En primer lugar deberías enumerar los ports disponibles en tu equipo, a continuación en la operación de «open» deberías enviar una petición tipo @ATI a tu lectora de códigos entendiendo que si responde esta disponible. 🙂
http://blogs.msmvps.com/peplluis/2009/03/16/como-enumerar-los-com-s-de-nuestro-equipo-en-vb-y-en-c/
Saludos,
Hola Pep Lluis,
Soy Jorge Artieda y acabo de asistir a tu workshop «Reloaded : Connect things to Azure IoT HUB with Arduino and Visual Studio Code».
Yo también soy del mundo .Net, como te comentaba.
Muy interesante! He aprendido mucho!
Un placer Jorge!
Nos vemos en el siguiente.
Gracias.
Buenas noches, primero que todo muchas gracias por tan excelentes temas y ayudas que nos entregas a miles de personas.
Estoy tratando de conseguir un programa o tutorial para conectar una balanza y un computador por puerto serial. Logicamente para que el computador pueda recibir el peso de la balanza y este a su vez pueda copiar los datos recibidos de la balanza a un programa de facturacion. Seria como un programa que actuara de conector en donde a su vez al momento de pesar un producto, la balanza envie los datos al programa conector y este programa conector envie el peso al portapapeles o al programa de facturacion. Seria mejor que se recibiera al portapapeles, ya que existen cientos de programas de facturacion. Si me pudieras colaborar o guiar con este tema, te lo agradeceria inmensamente y ayudarias a muchas personas nuevamente, ya que he tratado de buscar en foros pero no hay un tema exactamente como te comento para poder conectar cualquier balanza. Muchas gracias, quedo atento
Hola Juan Carlos,
Lamentablemente no dispongo de demasiado tiempo para responder. Atendiendo que ha pasado casi un mes de tu petición. Como ves que pueda ayudarte? Necesitaria que me concretaras un poquito mas… hardware..etc.
Muchas gracias por tu ayuda, si en general te comente, existen varios modelos y marcas de balanzas. Pero en este caso las balanzas mas utilizadas son de la marca Torrey y Datalogic. En general casi todas siempre van a manejar la misma transmisión de datos que son:
Bits por segundo: 9600
Bits de datos: 8
Paridad: Ninguno
Bits de parada: 1
Control de Flujo: Ninguno.
Entonces por Ejemplo para obtener el peso de una Balanza de Marca Datalogic, lo que hago es por ejemplo con el programa Hyperterminal mandarle el comando desde un archivo .txt que contenga S11, ese comando lo que hara es obtener el Peso, las Balanzas siempre tienen un comando especial para llamar el peso. Pero cual es el desafio, de poder tener un programa que este mandando ese codigo automaticamente cuando detecte peso sobre la balanza, y que uno manualmente pueda cambiarle ese codigo. Es decir cambiar el codigo del comando para obtener el peso, ya que son infinidad de Balanzas en el mercado que existen. Ese programa como te digo debera pasar la informacion al portapapeles.
Muchas gracias por tu atencion , Saludos desde Colombia
Hola PepLluis espero que estes muy bien. He seguido tus tutoriales sobre conexión de balanzas a puerto serial para capturar datos y me han funcionado perfecto. Gracias por estos aportes.
Mi pregunta es la siguiente, estoy tomando datos en tiempo real de una balanza Mettler y los visualizo en un textbox de la misma forma que los muestra la balanza, lo que deseo es que cuando el valor de peso sea diferente de 0.0 g y sea estable el programa capture ese peso y lo ponga en un textbox. Por ejemplo: si coloco un peso sobre la bascula que sea 124.6 g quiero que ese valor se almacene en un textbox diferente al que me muestra el valor en tiempo real. Agradezco mucho tus comentarios y ayuda.
Cordial saludo.