ВВод данных по serial

evgta
Offline
Зарегистрирован: 02.09.2016

Никодда не занимался вводом данных да дуину по serial? и при вводе данных дуина мне возвращает обратно десятичные коды из ASCII таблицы, как нибудь можно по простому принимать на дуину данные и такие же возвращать? а то что-то таблицы перекодировки не хочется делать. 

  Да, загуллил , при быстром гуглении что-то ничего не нашел:((

evgta
Offline
Зарегистрирован: 02.09.2016

ввод данных с клавы идет

sadman41
Offline
Зарегистрирован: 19.10.2016

Что в вашем случае "данные"?

evgta
Offline
Зарегистрирован: 02.09.2016

циферки с цифровой клавитуры клавы

в общем хочется чтобы без лишнего гемора, что отправил по сериал то обратно и получать а не коды ASCII

sadman41
Offline
Зарегистрирован: 19.10.2016

По почерку вижу, что праздник уже начался.

Могу предположить, что вы хотите принять '1', а пульнуть назад 1. Тогда, в общем виде: Serial.print(Serial.read() - '0'));

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Что бы отправлять и принимать не  в виде кодов ASCII , надо отправлять их в таком виде. Но не забывайте отправляются они не пакетом а побайтно. Так что надо выделить байт-начало пакета, и байт- конец. Вот и получается что отправлять и не сбиваться можно только 254 из 256 вариантов. Или полубайтами.

evgta
Offline
Зарегистрирован: 02.09.2016

не, я хочу пульнуть в дуину 1 и получить обратно 1 а не 49. 2-50. 3-51 и тд

evgta
Offline
Зарегистрирован: 02.09.2016

и как с клавы через монитор порта отправить байт а не ASCII код? ну или как преобразовать его в дуине без написания таблици перекодировки?*

5N62V
Offline
Зарегистрирован: 25.02.2016

evgta пишет:

и как с клавы через монитор порта отправить байт а не ASCII код? ну или как преобразовать его в дуине без написания таблици перекодировки?*

Вам sandman41 уже написал как сделать - прочтите внимательно.

sadman41
Offline
Зарегистрирован: 19.10.2016

evgta пишет:

и как с клавы через монитор порта отправить байт а не ASCII код? ну или как преобразовать его в дуине без написания таблици перекодировки?*

Строго говоря - вы и так отправляете байт.

....
if (Serial.available()) {
  char cc = Serial.read();
  if ('0' <= cc && '9' >= cc ) {
    // Шлем (ASCII символа - ASCII '0') 
    Serial.write((byte) (cc - '0'));
    // Печатаем число, равное (ASCII символа - ASCII '0') 
    Serial.print(cc - '0');
  } 
} 
...


 

evgta
Offline
Зарегистрирован: 02.09.2016

спасибо , понял, надо было добавить перед переменной  char

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

evgta пишет:

в общем хочется чтобы без лишнего гемора, что отправил по сериал то обратно и получать

Всё именно так и происходит. Что отправляеете, то и получаете.