|Just another Perl shrine|
using sprintf to print binary data collected from the serial portby Bruce32903 (Scribe)
|on May 22, 2008 at 22:29 UTC||Need Help??|
Bruce32903 has asked for the
wisdom of the Perl Monks concerning the following question:
I'm trying to collect and process binary data collected from the serial port. The data can range from 0x00 to 0xff. I am using Device::SerialPort and I seem to be receiving the data with no problem. But, I am getting nowhere trying to use the data.
I seem to be getting the binary data into a variable $ibuf. In an attempt to see a byte or two of the data I use the following line of code hoping to display the hex-text representation of the data in a Tk window.
$ibuf_display = sprintf("%x ", substr($ibuf, 1, 1));
With this I get the following (or similar) error messages:
Argument "^C" isn't numeric in sprintf at (program_name) line (line_number)
As far as I know Perl should just have "data", so this looks like a "sprintf from C" issue. But I don't know what to do about it.
As I go downstream I will be interested in doing the following:
1) Display data in "human friendly" form. This would be 0x03 for the ^C that was in the error message above.
2) Use if ( ) conditionals to process the data.
Any suggestions would be appreciated. Somehow I haven't yet tripped accross this while Googling.