2013-07-23 2 views
0

Я следую за sparkfun tutorial for connecting an arduino to electric imp. У меня есть только один arduino и imp, поэтому я пытаюсь получить все, что я набираю в серийном мониторе arduino, для отображения в узле imp с использованием server.show().Использование ElectricImp server.show() и Arduino

Я изменил один из функций в коде SparkFun, чтобы выглядеть следующим образом:

function pollUart() 
{ 
    imp.wakeup(0.00001, pollUart.bindenv(this)); // schedule the next poll in 10us 

    local byte = hardware.uart57.read(); // read the UART buffer 
    // This will return -1 if there is no data to be read. 

    while (byte != -1) // otherwise, we keep reading until there is no data to be read. 
    { 
     // server.log(format("%c", byte)); // send the character out to the server log. Optional, great for debugging 
     // impeeOutput.set(byte); // send the valid character out the impee's outputPort 

     server.show(byte) 
     byte = hardware.uart57.read(); // read from the UART buffer again (not sure if it's a valid character yet) 
     toggleTxLED(); // Toggle the TX LED 
    } 
} 

server.show(byte) только отображение, казалось бы, случайных чисел. У меня есть идея, почему это так, я просто не знаю, как это исправить, потому что я не знаком с UART и белкой.

local byte = hardware.uart57.read(); читает символы ascii из arduino в байтовой форме (я думаю), и они не переводятся в их символы ascii до того, как я использую server.show(byte). Как это сделать в белке? Кроме того, я думаю, что опрос каждого 10us - неправильный путь. Я бы хотел только опросить, когда появится новая информация, но я также не знаю, как это сделать в белке. Может ли кто-нибудь указать мне пример, где это происходит?

Спасибо!

+0

Вы могли подключить свой электрический усилитель к беспроводному маршрутизатору, поскольку я не смог настроить Electric Imp с помощью моего Wi-Fi-маршрутизатора. – shailendra

ответ

1

Я думаю, что вы передаете неправильный тип данных методу show объекта сервера. Электрический импедант docs утверждает, что он принимает строку, server.show(string). Я думаю, что local - правильный тип, чтобы получить значение от hardware.uart57.read(). Вы можете сказать и с docs. Итак, вам нужно найти способ передать свой байт в строку. Бьюсь об заклад, вы можете найти ответ here. Из того, что я читаю Unicode, использую Squirrel, поэтому существует, вероятно, функция, которая принимает байты Unicode и загружает их в строковый объект.