Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sending "ENTER" key through serial port

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);
like image 648
Mustafa İrer Avatar asked Jan 26 '11 14:01

Mustafa İrer


2 Answers

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

like image 180
matthias.lukaszek Avatar answered Sep 21 '22 08:09

matthias.lukaszek


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.

like image 24
Kibbee Avatar answered Sep 21 '22 08:09

Kibbee