55 lines
1.2 KiB
Plaintext
55 lines
1.2 KiB
Plaintext
# Simple driver generator for the Omron ZS-HLDC Laser Displacement
|
|
# vim: ts=8 sts=2 sw=2 expandtab autoindent smartindent
|
|
#
|
|
driver omron_hldc = {
|
|
debug_threshold = 5;
|
|
vendor = Omron; device = 'ZS-HDLC'; protocol = std;
|
|
class = environment;
|
|
simulation_group = environment_simulation;
|
|
|
|
group = {
|
|
priv = user;
|
|
var id = {
|
|
readable = 10;
|
|
type = text;
|
|
read_function = read_id;
|
|
read_command = '0501';
|
|
}
|
|
var distance = {
|
|
readable = 1;
|
|
type = float;
|
|
mutable = true;
|
|
read_function = read_mm;
|
|
read_command = '0201C02030008001';
|
|
}
|
|
}
|
|
|
|
code getValue = {%%
|
|
set cmd "00000${cmd}"
|
|
%%}
|
|
|
|
code read_id = {%%
|
|
if {[string length ${data}] < 14} {
|
|
sct geterror "read_id short response ${data}"
|
|
} else {
|
|
set data [string range ${data} 14 end]
|
|
}
|
|
%%}
|
|
|
|
code read_mm = {%%
|
|
if {[string length "${data}"] < 34} {
|
|
sct geterror "read_mm short response ${data}"
|
|
} else {
|
|
set hex [string range ${data} 26 end]
|
|
debug_log ${tc_root} 1 "hex = ${hex}"
|
|
set n [scan "${hex}" "%x" val]
|
|
if {${n} == 1} {
|
|
set data [expr {0.000001 * ${val}}]
|
|
} else {
|
|
sct geterror "read_mm n = ${n} for hex = ${hex}"
|
|
}
|
|
}
|
|
%%}
|
|
|
|
}
|