Ошибка в том что у тебя нет цикла приема 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();
{
Спасибо большое!!!
Вот так сделал:
Всё заробило!!!!!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 секуды) проскакивают непонятные цифры, а потом всё отлично работает!
http://s55.radikal.ru/i150/1112/dc/faf71f05764a.jpg
http://s017.radikal.ru/i422/1112/de/b1088c7a9ae0.jpg
Можно перед началом данных посылать дескриптор размером 2 байта например 170, 204 или что то в этом роде
А почему именно два байта? А если один?
А как ты один байт от байта данных отличишь?
Надо подумать.............а если это буква будет? ......Хотя я наверно чего-то не понимаю!
Байт - это значение от 0 до 255 и такие же байты в данных, так как отличить дескриптор?
а дескриптор это два байта идентификации. Вероятность подобной комбинации в массиве равна нулю.
Не 100% , чем длинней дескриптор тем меньше вероятность совпадения.
Думаю что предложенный тобой вариант в этом случаи более интересен.