Подключение Arduino к прибру пор RS232

mikolaki

✩✩✩✩✩✩✩
25 Янв 2022
18
0
Добрый день. Есть прибор E7-20 и ардуино нано. У E7-20 есть com-порт. Необходимо данные, которые он измеряет писать на карту памяти. Купил конвертор RS232 to TTL, перепаял на нём разъём мама на папа, соединил с Е7-20 комплектным кабелем и через SoftwareSerial сделал программный Serial. Пытаюсь принять данные, но не получается. На ардуино моргает TX, но это, как я понимаю, данные передаются на комп.
скетч:
#include <microDS18B20.h>
#define BUF_SIZE 22

SoftwareSerial mySerial(10, 11); // RX, TX

//массив полученных данных
byte buf[BUF_SIZE];

void setup()
{
    Serial.begin(9600);     
    mySerial.begin(9600); 
}
void loop()
{
    if(mySerial.available())
    {
        mySerial.readBytes(buf, BUF_SIZE);
        for(int i = 0; i < BUF_SIZE; i++)
        {
            Serial.print(buf[i]);
            Serial.print(":");
        }
        Serial.print("END\n");
    } 
}
На комп бесконечно приходит такая строка, независимо от того, что показывает Е7-20.
Код:
255:255:255:255:255:255:255:255:255:255:255:255:255:255:255:255:255:255:255:255:255:255:END
Через родную программу работает, значит порт и кабель исправны. Посоветуйте, куда копать дальше. Просьба пинать не сильно, и в нужном направлении, это мой первый проект на ардуино
В инструкции есть описание протокола
Протокол обмена прибора с компьютером
Прибор непрерывно находится в режиме передачи. Формат передаваемого кадра: 0xAA,
Offset, Level, Frequency, Flags, Mode, Limit, ImParam, SecParam, SecParam_Value,
ImParam_Value, onChange, CS, где;
0xAA – байт синхронизации;
Offset – младший и старший байт значения смещения;
Level – байт значения уровня измерительного сигнала;
Frequency – младший, старший байт значения частоты и байт множителя 10 частоты;
Flags – байт флагов:
4-й бит – автовыбор схемы замещения;
3-й бит – допуск;
2-й бит – параллельная/последовательная схема замещения;
1-й бит – автоматический режим переключения поддиапазонов;
Mode – режим работы прибора: 0х1 – режим измерения;
Limit – предел измерения;
ImParam – измеряемый параметр:
0х0 – Ср;
0х1 – Lp;
0x2 – Rp;
0x3 – Gp;
0x4 – Bp;
0x5 – |Y|;
0x6 – Q;
0x7 – Cs;
0x8 – Ls;
0x9 – Rs;
0xA – ;
0xB – Xs;
0xC – |Z|;
0xD – D;
0xE – I;
SecParam – дополнительный измеряемый параметр;
SecParam_Value – старший, средний, младший байты и байт множителя 10
дополнительного измеряемого параметра в дополнительном коде;
ImParam_Value – старший, средний, младший байты и байт множителя 10 измеряемого
параметра в дополнительном коде;
OnChange – байт флагов редактирования:
3-й бит – изменение поддиапазона;
2-й бит – изменение частоты;
1-й бит – изменение смещения;
0-й бит – изменение уровня;
CS – контрольная сумма.
Прибор принимает однобайтные команды соответствующие нажатию клавиш управления:
0х0 – Меню;
0х1 – Вправо;
0х2 – Z/;
0х3 – режим R;
0х4 – Вниз;
0х5 – Ввод;
0х6 – Вверх;
0х7 – режим L;
0х8 – калибровка;
0х9 – Влево;
0хА – режим I;
0хВ – режим С;
0хС – изменение смещения;
0хD – изменение частоты;
0xE – изменение уровня сигнала;
0xF – изменение поддиапазона.
 

Normalek

★✩✩✩✩✩✩
6 Авг 2021
140
39
@mikolaki, скорость меняй, и так же выводи в Serial.print(buf, HEX) и и бонусом вот тебе интересный файл
 

Вложения

  • 17.1 KB Просмотры: 34