Ошибка в том что у тебя нет цикла приема 8-ми байт , ты принимаешь каждый раз по 1 байту
используй цикл for
PHP код:
if (Serial.available() > 7) //priem ot kompa
{
for (byte i=0; i < 9; i++)
{
serialInArray[i] = Serial.read();
{
Ошибка в том что у тебя нет цикла приема 8-ми байт , ты принимаешь каждый раз по 1 байту
используй цикл for
PHP код:
if (Serial.available() > 7) //priem ot kompa
{
for (byte i=0; i < 9; i++)
{
serialInArray[i] = Serial.read();
{
Последний раз редактировалось Chip; 25.12.2011 в 14:34.
Спасибо большое!!!
Вот так сделал:
Всё заробило!!!!!PHP код:
if (Serial.available() > 7) //priem ot kompa
{
for (byte i=0; i < 9; i++)
{
serialInArray[i] = Serial.read();
}
}
watertemp = serialInArray[0]; //senstvaz
turbo = serialInArray[1]; //kpa
pboost = serialInArray[2]; //pboost
volts = serialInArray[3]; //volts
result = serialInArray[7];
result = (result << 24) | serialInArray[6];
result = (result << 16) | serialInArray[5];
result = (result << 8) | serialInArray[4];
// Serial.flush();
delay(10);
}
А можно ещё какую-нибудь проверку сделать, для надёжности?
Если проводок между приёмником и передатчиком, отключать и снова втыкать, то кратковременно (1-2 секуды) проскакивают непонятные цифры, а потом всё отлично работает!
Можно перед началом данных посылать дескриптор размером 2 байта например 170, 204 или что то в этом роде
Последний раз редактировалось Chip; 26.12.2011 в 01:21.
А почему именно два байта? А если один?
А как ты один байт от байта данных отличишь?
Надо подумать.............а если это буква будет? ......Хотя я наверно чего-то не понимаю!
Байт - это значение от 0 до 255 и такие же байты в данных, так как отличить дескриптор?
Мои проекты - Катер для рыбалки
а дескриптор это два байта идентификации. Вероятность подобной комбинации в массиве равна нулю.
Мои проекты - Катер для рыбалки
Не 100% , чем длинней дескриптор тем меньше вероятность совпадения.
Думаю что предложенный тобой вариант в этом случаи более интересен.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)