Hogy kaphatnál meg egyszerűen sh-ban egy eszközdrl olvasott karakter kódját úgy, hogy számolni lehessen vele?
A konkrét szituáció: egy ASUS WL-500g Premium routeren, openwrt firmware-en szeretnék funkciókat rendelni az EZSetup és a Restore gombokhoz. Úgy tűnik, a gombok felengedett/lenyomott állapotát a /dev/gpio/in eszközről olvasott bájt alulról 1., ill. 5. bitjéből lehet megtudni, viszont a többi bit általam ismeretlen okokból nem mindig ugyanaz. Tehát egy innen olvasott karakter kódjával kéne bitenkénti műveleteket végeznem.
Mivel egy beágyazott eszközről van szó, minél egyszerűbben szeretném megoldani, és csak a busybox ash és néhány segédprogram áll rendelkezésre.
- 1826 megtekintés
Hozzászólások
Workaround (nem ismerem a shelleket): crossplatform gcc-vel lefordítod - esetedben mipsel platformra - az alábbi kétsoros c programot, ami megoldja a problémát.
#include <stdio.h>
int main() { printf("%d", getchar()); }
- A hozzászóláshoz be kell jelentkezni
Nem tudom a busybox-ba bele van-e forditva, vagy onalloan elerheto a printf nevu parancs. Ha igen, akkor igy (vigyazat, kisse trukkos):
$ printf '%d\n' '"A"'
65
vagy "'a'" formaban is lehet, de a lenyeg kell a belso idezojel/aposztrof *is*.
Amugy meg szerintem van azon a dogon perl is, az is tud ugyanilyet. Vagy:
$ echo -n A | od -d
0000000 65
0000001
Szoval van par eszkoz, nyilvan az a kerdes, ezekbol melyik van a routereden.
- A hozzászóláshoz be kell jelentkezni
Köszönöm, a printf segített.
- A hozzászóláshoz be kell jelentkezni