CAN Access Programming Language

CAPL (CAN Access Programming Language)

A CANalyzer több jól használható lehetőséget is kínál arra, hogy a CAN hálózatot ne csak megfigyeljük, hanem tetszés szerint be is avatkozzunk.
A mérés során a "virtuális autót" az analizátornak adott parancsokkal is vezethetjük.

A mérési elrendezésbe iktassunk be egy különböző eseményekre (billentyűlenyomás, időzítő lejárása) reagáló ún. CAPL programblokkot! A Send blokk előtti kis négyzeten jobb kattintás, majd "Insert CAPL node". Ekkor megkapjuk a P jelű blokkot. Ezen jobb gombot nyomva a "Block Active" pipa állításával bármikor ki/be kapcsolhatjuk a modult.

Duplán kattintva a P blokkra meg kell adni a futtatandó program nevét. Új blokk beillesztése esetén itt tetszőleges fájlnevet megadhatunk. Ezután feljön a CAPL programozási felülete.

A program eseményvezérelt, azt kell megadnunk, hogy mi történjék az egyes eseményekre. Pl. a System/Start-ra jobb gombbal kattintva, majd "New"-t választva létrehozunk egy függvényt, ami a mérés elején egyszer fut le. Fontos lesz még a Keyboard és a Timer-kezelés, ahol hasonló módon definiálhatunk eseményeket.

A jobb felső ablakban definiálhatunk változókat. Léteznek a C-ből ismert int, char típusok. Számunkra fontos típus a message, amivel egy CAN üzenetet definiálhatunk. A message kulcsszó után az üzenet ID-t vagy az adatbázisbeli nevét kell megadni.

message 0x100 msg;
message Wheel msg;

Az üzenet tartalmára ezek után úgy hivatkozhatunk, mint C-ben a struktúra elemeire. Hivatkozhatunk az adatbázisbeli nevekre vagy direkt az adatbájtokra. Az üzenetet az output paranccsal küldhetjük ki a buszra.

msg.BYTE(4)=8;
msg.Gas = 255;
output(msg);

Időzítéshez is külön típus áll rendelkezésre, az mstimer.

mstimer myTimer;

Ha periodikus működést szeretnénk, akkor indításkor és a timer lejártakor is "fel kell húzni" az időzítőt.

on start {
  setTimer(myTimer,100);
}

on timer myTimer {  
   output(msg);

  setTimer(myTimer,100);
}

Feladat: írjunk a CAPL segítségével olyan programot, amely lehetővé teszi, hogy a w, a, d, x billentyűkkel vezessük az autót!
(100 ms-onként küldjük ki a 0x100 üzenetet! Ne felejtsük sebességbe tenni az autót!)

© 2010-2024 BME MIT | Hibajelentés | Használati útmutató