LayGO for Tcl/Tk 8.1 contains 4 functions which make it easy to allocate memory suitable for passing to the C language functions of the LayGO API.
For example:
set maxBuffer [lgo_MaxBufferSize $cid]
set inBuffer [lgo_BufferNew $maxBuffer]
set outBuffer [lgo_BufferNew $maxBuffer]
for {set i 0} {$i < $maxBuffer} {incr i} {
lgo_BufferSet $outBuffer $i [expr 65 + $i % 26]
}
set result [lgo_Write $cid $outBuffer $maxBuffer]
if {$result < 0} then {
puts "Error writing: [lgo_ErrorMessage $result]."
} else {
puts "$result bytes written."
for {set i 0} {$i < $result} {incr i 16} {
for {set j $i} {$j < $result && [expr $j - $i] < 16} {incr j} {
puts -nonewline [format " %02X" [lgo_BufferGet $outBuffer $j]]
}
puts ""
}
set result 0
while {$result <= 0} {
after 1
set result [lgo_Read $cid $inBuffer $maxBuffer]
}
puts "$result bytes received."
for {set i 0} {$i < $result} {incr i 16} {
for {set j $i} {$j < $result && [expr $j - $i] < 16} {incr j} {
puts -nonewline [format " %02X" [lgo_BufferGet $inBuffer $j]]
}
puts ""
}
}
lgo_BufferFree $inBuffer
lgo_BufferFree $outBuffer