Sending "ENTER" key through serial port

61,674

Solution 1

The microsoft version of enter or new line is \r\n which is 0x0d 0x0a in hex.

  • \r is the carriage return

    In a shell or a printer this would put the cursor back to the beginning of the line.

  • \n is the line feed

    Puts the cursor one line below, in some shells this also puts the cursor to the beginning of the next line. a printer would simply scroll the paper a bit.

So much for the history lesson. Current windows systems still use these characters to indicate a line ending. Dos generated this code when pressing enter.

The key code is a bit different. Beginning with the esc key being the 1. Enter is 28.

Source: linux hlkeycodes from www.comptechdoc.org

Solution 2

To send the enter key, you would have to use

serial.Write(new byte[]{13,10}, 0, 2);

Assuming your syntax for Control + E is correct. The enter key is interpreted and usually saved in a file as CR-LF. However, depending on your device, it may only require CR=13, or LF=10. You should try all 3 combinations with your device to see what it expects.

If you are looking for the actual scan code of the enter key, it's "43" on a PC 102/104 key keyboard. Depending on the actually computer you are using, it may be different. For instance on a Commodore 64 the scan code for the Return key is "1", which has the equivalent use of Enter on a PC keyboard.

Solution 3

Thanks guys.

This works:

serial.Write("\r\n") 

Note: if you want to send a command through serial port, I use the line below works for me.

serial.Write("your_command\r\n");

Solution 4

What the previous answers have told you is how to send a NEWLINE character - this is not the same as "the enter key". If what you want to do is to actually indicate to the remote machine that the "enter key" on the keyboard has been pressed, that is entirely different, and may not be possible, depending on your operating system and hardware.

Share:
61,674
Mustafa İrer
Author by

Mustafa İrer

Senior SW Design Engineer

Updated on July 09, 2022

Comments

  • Mustafa İrer
    Mustafa İrer almost 2 years

    Hi I want to send some command to my device which is connected via serial port. How to send it?

    For example i found this on google search but for me it's useless.

    Control + E is a keyboard shortcut for 5, so:

    serial.Write(new byte[]{ 5 }, 0, 1);
    
  • kaoD
    kaoD over 13 years
    A little correction, I suspect that the third argument in the Write method could be the number of bytes to be written. If my guess is right, you should change it from 1 to 2.
  • Kibbee
    Kibbee over 13 years
    Probably right, I'll change that. I don't know the API in this case, but that is a good assumption.
  • Mustafa İrer
    Mustafa İrer over 13 years
    Thank you i got my answer Matthias.