in reply to Re^4: Calling a function form an external DLL with Inline::C on windows
in thread Calling a function form an external DLL with Inline::C on windows

I hope I won't run into any further issues with timing, serial comms, windows dark magic, etc.

Of course there are further issues.

Win32::SerialPort uses Win32::CommPort which uses Win32::API to export some functions from the Windows API. And it seems that Win32::API doesn't like to work together with Inline::C - at least serial communication doesn't work with the solution derived in the posts above. I get a deluge of error messages, like
Use of uninitialized value in subroutine entry at C:/Perl/site/lib/Win +32API/CommPort.pm line 213. Use of uninitialized value in subroutine entry at C:/Perl/site/lib/Win +32API/CommPort.pm line 247. Second Read attempted before First is done at measure.pl line 402 Use of uninitialized value $got in numeric ne (!=) at C:/Perl/site/lib +/Win32/SerialPort.pm line 1216. Use of uninitialized value in subroutine entry at C:/Perl/site/lib/Win +32API/CommPort.pm line 213. Use of uninitialized value in subroutine entry at C:/Perl/site/lib/Win +32API/CommPort.pm line 247. Second Read attempted before First is done at measure.pl line 402 Use of uninitialized value $got in numeric ne (!=) at C:/Perl/site/lib +/Win32/SerialPort.pm line 1216.
  • Comment on Re^5: Calling a function form an external DLL with Inline::C on windows
  • Download Code

Replies are listed 'Best First'.
Re^6: Calling a function form an external DLL with Inline::C on windows
by proceng (Scribe) on Aug 09, 2010 at 17:00 UTC
    Win32::SerialPort uses Win32::CommPort which uses Win32::API to export some functions from the Windows API.
    Where does Win32::SerialPort enter into the equation? The original question specifies that the communication is via TCP/IP, not serial.

    If there is something I missed...

      Sorry for replying so late, I wasn't following the thread anymore. Win32::SerialPort comes in because there are other components of my application beside the data readout that uses TCP/IP: one of these components uses serial communication to drive a positioning system.

      But I was mistaken about the purported incompatibility between Inline::C and Win32::SerialPort, they work together just fine. It was I who introduced a subtle bug in my program that caused those error messages.

      Sorry for the confusion.
        Care to elaborate on the bug you introduced? I am having that same issue trying to move a code base back to windows after a few years away from it.