Dear All,
I am combining Qt & RT Linux to develpe a simple motor controller. I use
Qt to design a GUI, since I need to use RT FIFO for communication
between Qt's GUI and the real time kernel module, I need to handle the
RT FIFO within GUI, following is my codes:
---------------------------------------------
/********************
Constructor
NB: "TEST" is a dialog
*********************/
TestImpl::TestImpl( QWidget* parent,const char* name, bool modal, WFlags
f) : TEST( parent, name, modal,f)
{
// Try to connect with RT task via FIFO
fd1 = open("/dev/rtf1", O_RDWR);
if ( fd1 == -1 )
{
printf("Can not open /dev/rtf1\n");
close(fd1);
//return -1;
}
fd2 = open("/dev/rtf2", O_RDWR); //RDWR
if ( fd2 == -1 )
{
printf("Can not open /dev/rtf2\n");
close(fd2);
//return -1;
}
}
------------------------------------------------
/***********
Destructor
***********/
TestImpl:: ~TestImpl()
{
close(fd1);
close(fd2);
}
-----------------------------------------------
With the above constructor and destructor, it is Ok to open the dialog
class only ONCE within my GUI. If I open it for the second time, the
error message comes out as follows:
--------------
QGArray: Cannot allocate array with negative length
Segmentation fault (core dumped)
--------------
I am wondering if the RT FIFOs have really been closed or not. I used
RHIDE to debug it, and found that the codes went through "close(fd1);
close(fd2);".
Could you please give me any kind hints about this problem? Thanks a lot
in advance.
Kind regards,
Yuhong
-- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
---
For more information on Real-Time Linux see:
http://www.rtlinux.org/rtlinux/