none
como escribo caracteres de control para enviarlos por serialport RRS feed

  • Pregunta

  • Carácter de control

    De Wikipedia, la enciclopedia libre

    Un carácter de control es, en el ámbito de la informática, un carácter no imprimible que sirve para uso interno del computador, por ejemplo para controlar un dispositivo específico, indicar el valor nulo (NULL), el final de una línea (EOF, siglas en inglés de end of file) o el fin del archivo.

    A continuación se muestra la tabla de caracteres de control del código ASCII

    Binario Decimal Hex Abreviatura Repr AT Nombre/Significado
    0000 0000 0 00 NUL ^@ Carácter Nulo
    0000 0001 1 01 SOH ^A Inicio de Encabezado
    0000 0010 2 02 STX ^B Inicio de Texto
    0000 0011 3 03 ETX ^C Fin de Texto
    0000 0100 4 04 EOT ^D Fin de Transmisión
    0000 0101 5 05 ENQ ^E Enquiry
    0000 0110 6 06 ACK ^F Acknowledgement
    0000 0111 7 07 BEL ^G Timbre
    0000 1000 8 08 BS ^H Retroceso
    0000 1001 9 09 HT ^I Tabulación horizontal
    0000 1010 10 0A LF ^J Line feed
    0000 1011 11 0B VT ^K Tabulación Vertical
    0000 1100 12 0C FF ^L Form feed
    0000 1101 13 0D CR ^M Carriage return
    0000 1110 14 0E SO ^N Shift Out
    0000 1111 15 0F SI ^O Shift In
    0001 0000 16 10 DLE ^P Data Link Escape
    0001 0001 17 11 DC1 ^Q Device Control 1 — oft. XON
    0001 0010 18 12 DC2 ^R Device Control 2
    0001 0011 19 13 DC3 ^S Device Control 3 — oft. XOFF
    0001 0100 20 14 DC4 ^T Device Control 4
    0001 0101 21 15 NAK ^U Negative Acknowledgement
    0001 0110 22 16 SYN ^V Synchronous Idle
    0001 0111 23 17 ETB ^W End of Trans. Block
    0001 1000 24 18 CAN ^X Cancel
    0001 1001 25 19 EM ^Y End of Medium
    0001 1010 26 1A SUB ^Z Substitute
    0001 1011 27 1B ESC ^[ or ESC Escape
    0001 1100 28 1C FS ^\ File Separator
    0001 1101 29 1D GS ^] Group Separator
    0001 1110 30 1E RS ^^ Record Separator
    0001 1111 31 1F US ^_ Unit Separator
    0111 1111 127 7F DEL ^?, Delete, or Backspace Delete
    nececito saber como ago para que estos caracteres los tome el puerto serie
    • Cambiado PepLluisModerator martes, 26 de octubre de 2010 7:03 Corresponde al foro comunicaciones (De:Lenguaje VB.NET)
    sábado, 2 de octubre de 2010 16:48

Respuestas

  • hola

    en este link se realiza una pregunta similar

    http://www.daniweb.com/forums/thread221136.html

    por ahi convirtiendo a string desde el encoding podrias enviarlo por el puerto serie

    Dim s As String = ASCIIEncoding.ASCII.GetString(New Byte() {4})

     

    http://social.msdn.microsoft.com/Forums/en/vblanguage/thread/67fab3c7-339d-40a2-9d8a-e61676cd5e2b

    en este vera que envia directamente ACK o sea la abreviatura del coamndo por el puerto, por ahi en tu caso sea util usarlo de esta forma

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta smithjhon sábado, 2 de octubre de 2010 22:14
    sábado, 2 de octubre de 2010 18:23

Todas las respuestas

  • hola

    en este link se realiza una pregunta similar

    http://www.daniweb.com/forums/thread221136.html

    por ahi convirtiendo a string desde el encoding podrias enviarlo por el puerto serie

    Dim s As String = ASCIIEncoding.ASCII.GetString(New Byte() {4})

     

    http://social.msdn.microsoft.com/Forums/en/vblanguage/thread/67fab3c7-339d-40a2-9d8a-e61676cd5e2b

    en este vera que envia directamente ACK o sea la abreviatura del coamndo por el puerto, por ahi en tu caso sea util usarlo de esta forma

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta smithjhon sábado, 2 de octubre de 2010 22:14
    sábado, 2 de octubre de 2010 18:23
  • hola

    en este link se realiza una pregunta similar

    http://www.daniweb.com/forums/thread221136.html

    por ahi convirtiendo a string desde el encoding podrias enviarlo por el puerto serie

    Dim s As String = ASCIIEncoding.ASCII.GetString(New Byte() {4})

     

    http://social.msdn.microsoft.com/Forums/en/vblanguage/thread/67fab3c7-339d-40a2-9d8a-e61676cd5e2b

    en este vera que envia directamente ACK o sea la abreviatura del coamndo por el puerto, por ahi en tu caso sea util usarlo de esta forma

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina


    tengo una pregunta cada caracter tengo que agregarlo por aparte por ejemplo tu pusiste el {4} yo lo cambien por el 127 y me escribio el 7f que era lo que yo nececitaba pero si tengo que mandar 30 caracteres especiales los ago 1 por uno o como los mando en cadena 

    sábado, 2 de octubre de 2010 22:24
  • hola

    lo que envias es un array de byte, imagino que si en ese array defines mas de un caracter deberia funcionar

    la verdad no lo he probado por eso no puedo confirmarlo 100%, pero solo seria cuestion de hacer la prueba

    define en el New Byte() {127, 127, 127}

    validando que envia el mismo caracter 3 veces

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    sábado, 2 de octubre de 2010 22:31
  • hola

    lo que envias es un array de byte, imagino que si en ese array defines mas de un caracter deberia funcionar

    la verdad no lo he probado por eso no puedo confirmarlo 100%, pero solo seria cuestion de hacer la prueba

    define en el New Byte() {127, 127, 127}

    validando que envia el mismo caracter 3 veces

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    todo bien, pero no puedo mandar el ascii 211 y 219 los caracteres mayores a 127 no puedo escrivirlos que puedo hacer cuando mando estos caracteres sales  con 2E de 127 asi arriba intente varias cosas pero nada de 127 asi arriba todo sale  como 2E?
    domingo, 3 de octubre de 2010 6:43
  • Hola Smithjhon,

    Esta pregunta responde a la equivalente sobre como enviar/recibir de la segunda pagina de caracteres ASCII, que tambien formulaste en otro post y se repite. Aqui tienes dos post de mi blog que responden tu pregunta. No dudes en continuar la conversacion si necesitas mas informacion sobre el tema.

    http://msmvps.com/blogs/peplluis/search.aspx?q=Encoding&o=Relevance

    Debes asignar el encoding al objecto del puerto serie :

    SerialPort1.Encoding = System.Text.Encoding.Default

    Luego enviar caracteres de la 2da pagina de ASCII es sencillo si utilizas hexadecimales

            Dim MiPuerto = My.Computer.Ports.OpenSerialPort("COM1")

            MiPuerto.Write(&HFF)    'Enviar valor hex FF

            Dim Valor As Byte = 255

            MiPuerto.Write(Valor)   'Enviar byte 255

    En otro caso puedes usar las funciones 'Chr' y 'Asc' para realizar las traducciones en un sentido u otro.

    Saludos,
    Pep Lluis,

    martes, 26 de octubre de 2010 6:53