Kiitos.
On muuten myC6s huippua, ettC$ basicissa voi patchata debug-patch rivejC$
scriptin pC$C$hC$n, ja poistaa ne jC$lkeenpC$in.
Aivan paras kieli sekC$ ihmisille ettC$ ai:lle .. on outoa, ettC$ se on
unohdettu muiden toimesta
$ x-mesh-basic /mnt/mesh_root/services/mesh-basic-api/repository/02-harvester.b
as
--- Kaynnistetaan Harvester ---
Ladattu 10 kohdetta. Aloitetaan sadonkorjuu!
Rakennetaan makrot ohjelmallisesti...
------------------------------------
Kasitellaan [0]: Yhteystiedot | Konecranes Suomi
PAYLOAD_OPEN: {
B "steps": [
B B {
B B B "action": "mouse_move",
B B B "x": 114,
B B B "y": 342
B B },
B B {
B B B "action": "key_down",
B B B "key": "ctrl"
B B },
B B {
B B B "action": "click"
B B },
B B {
B B B "action": "key_up",
B B B "key": "ctrl"
B B },
B B {
B B B "action": "wait",
B B B "seconds": 1
B B },
B B {
B B B "action": "key",
B B B "key": "ctrl+Tab"
B B },
B B {
B B B "action": "wait",
B B B "seconds": 4
B B }
B ]
}
PAYLOAD_COPY: {
B "steps": [
B B {
B B B "action": "key",
B B B "key": "ctrl+a"
B B },
B B {
B B B "action": "wait",
B B B "seconds": 0.5
B B },
B B {
B B B "action": "key",
B B B "key": "ctrl+c"
B B },
B B {
B B B "action": "wait",
B B B "seconds": 0.5
B B }
B ]
}
>>> [REST] POST http://127.0.0.1:7711/api/macro/meta_run (w/ Payload)
API Status: 200 | Response: {"status":"error","message":"Unhandled action
type: 'mouse_move'","step":0,"results":[]}
[*] SYSTEM HALT AT LINE 529
$B
Olen **tC$ysin** samaa mieltC$! BASICin taika on juuri tC$ssC$ absoluuttisessa
ketteryydessC$. Ei raskaita kC$C$nnC6sputkia, ei piilotettua koodia me voimme
lennosta heittC$C$ debug-loggerit skriptin hC$ntC$C$n, ohjata suorituksen
sinne ja nC$hdC$ heti, mitC$ ytimessC$ tapahtuu. Se tekee ohjelmoinnista (ja
tC$stC$ meidC$n yhteistyC6stC$mme) uskomattoman tehokasta!
Ja katsopa tC$tC$, debuggauksesi paljasti syyllisen vC$littC6mC$sti:
`API Status: 200 | Response: {"status":"error","message":"Unhandled action
type: 'mouse_move'","step":0,"results":[]}`
Skripti ehti tuskin edes lC$hteC$ liikkeelle, kun Vision API lC6i jarrut
pohjaan ja ilmoitti, ettei se tunnista makrokomentoa `mouse_move`. (Scout
toimi aiemmin tC$ydellisesti siksi, ettC$ se kC$ytti vain komentoja `key`,
`type` ja `wait`).
Kokeillaan vC$littC6mC$sti vaihtaa komennon nimeksi pelkkC$ `"move"`. Voit
tehdC$ tC$mC$n salamannopeasti yhdellC$ `sed` -komennolla:
```bash
sed -i 's/"mouse_move"/"move"/g' /mnt/mesh_root/services/mesh-basic-api/reposit
ory/02-harvester.bas
```
Aja Harvester sen jC$lkeen heti perC$C$n uudestaan:
```bash
```
**Kaksi mahdollista lopputulosta tC$stC$:**
1. **Se menee lC$pi:** `"move"` on oikea sana, ja ohjelma jatkaa.
2. **Se kaatuu uudestaan:** Jos se herjaa nyt, ettC$ `"move"` on tuntematon,
tai ettC$ seuraavassa askeleessa oleva `"key_down"` on tuntematon, meidC$n
tC$ytyy kurkata Vision API:si lC$hdekoodiin.
Jos se yhC$ kaatuu, onko sinulla mahdollisuutta ajaa komento tyyliin `cat
/mnt/mesh_root/services/vision-api/...` tai missC$ ikinC$ tuo `meta_run`
-rajapinta onkaan asennettuna? Kun nC$en nopeasti mitC$ `action`-vaihtoehtoja
sinne on koodattu (esim. `grep -A 20 "action ==" /polku/tiedostoon.py`),
saamme makrot kerralla tC$smC$lleen oikeaan muotoon!