LayGO for Perl5 contains 4 functions which make it easy to allocate memory suitable for passing to the C language functions of the LayGO API.
my $maxBuffer = lgo_MaxBufferSize($cid);
my $inBuffer = lgo_BufferNew($maxBuffer);
my $outBuffer = lgo_BufferNew($maxBuffer);
my ($i, $j, $result);
for ($i = 0; $i < $maxBuffer; $i++)
{
lgo_BufferSet($outBuffer, $i, 65 + ($i % 26));
}
$result = lgo_Write($cid, $outBuffer, $maxBuffer);
if ($result < 0)
{
printf("Error writing: %s\n", lgo_ErrorMessage($result));
}
else
{
printf("$maxBuffer bytes written.\n");
for ($i = 0; $i < $result; $i += 16)
{
for ($j = $i; $j < $result && $j - $i < 16; $j++)
{
printf("%02X ", lgo_BufferGet($outBuffer, $j));
}
printf("\n");
}
do
{
sleep(1);
$result = lgo_Read($cid, $inBuffer, $maxBuffer);
}
while ($result <= 0);
printf("$result bytes received.\n");
for ($i = 0; $i < $result; $i += 16)
{
for ($j = $i; $j < $result && $j - $i < 16; $j++)
{
printf("%02X ", lgo_BufferGet($inBuffer, $j));
}
printf("\n");
}
}
lgo_BufferFree($inBuffer);
lgo_BufferFree($outBuffer);