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