Tak jako dovoluje CAN skript snadno komunikovat pomocí TCP protokolu, jak jsme si popsal v předchozím díle, je možné snadno komunikovat i pomocí sériové linky. Ukázkový skript používá pro příjem dat frontu - deque. Jakmile má poslední prvek ve frontě hodnotu 0x0A, což je v našem případě ukončovací znak příkazu, řetězec se přesune do vektoru a ověří se zda obsahuje řetězec $PCAN,C,VER, s dotazem na verzi. Pokud ano, skript odpoví zasláním verze řetězcem $PCAN,C,VER,1.234.
script:
type = TIMER_SCRIPT;
end
// Definice promennych
variables:
bool rs_ok;
char c;
int i;
end
// Definice objektu
objects:
obj_rs232 rs;
obj_deque_int data_in;
obj_vector_int data_out;
obj_vector_int data_processing;
end
init:
rs_ok = rs.open(4,57600);
// Test zda byl port opravdu otevren.
if(rs_ok==false)
{
prints("Chyba otevreni portu.");
stop();
}
end
body:
if(rs_ok==true)
{
if(rs.data_received()==true)
{
data_in = rs;
if(data_in.size()>0)
{
if(data_in.at(data_in.size()-1)==0x0A)
{
prints("Data");
data_processing = data_in;
while(data_in.size()>0)
{
logc(i2c(data_in.pop_front()),true);
//logs("-");
}
log_endl();
i = data_processing.find_string("VER,");
if(i<0)
{
prints("Unknown command");
}
else
{
prints("Version request");
data_out.from_string("$PCAN,C,VER,1.234,*00");
rs=data_out;
rs.send(0x0D);
rs.send(0x0A);
}
}
}
}
}
end
// Shutdown sekce skriptu
shutdown:
if(rs_ok==true)
{
rs.close();
}
end
Další díly seriálu:
- Díl 1: Periodické generování dat na CAN sběrnici.
- Díl 2: Uživatelské prvky pro řízení skriptu
- Díl 3: Simulace joysticku dle SAE J1939
- Díl 4: Monitorování a zápis událostí do souboru CSV
- Díl 5: Měření periody a zápis do CSV pomocí přiřazení objektu
- Díl 6: Komunikace pomocí TCP
- Díl 7: Komunikace pomocí sériové linky
- Díl 8: PID regulátor
- Díl 9: Výpočet CRC a objekt obj_dataset
- Díl 10: Volání funkce z externí DLL
- Díl 11: Odeslání emailu s hlášením
