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