Sponsored Content
Top Forums Programming Proximity-card reader: no data when app window out of focus Post 302344926 by Dp0H on Tuesday 18th of August 2009 04:31:31 AM
Old 08-18-2009
Data Proximity-card reader: no data when app window out of focus

Hello. I can't get it work Smilie
My application receives data from em-marin reader only being active. Switching to another app makes the port become silent.
MarinReader works in another thread.
Port reading is going while the app is inactive (tested).
Env: Ubuntu 9.04, Gnome, Qt (i've tryed pure open and fopen - the same result)
Please, help anybody!

Code:
bool MarinReader::read_port(QFile* file)
{
	char first_char = '\0';
	file->getChar(&first_char);
	if (first_char == ':')
	{
		QByteArray bres = file->readAll();
		QString s(bres);
		s.resize(10);
		emit CardProcessed(s);
	}
	tcflush(file->handle(), TCIOFLUSH);
	return true;
}

void MarinReader::run()
{
	emit Message("opening port " + port_name);
	struct termios Posix_CommConfig;
	QFile* Posix_File = new QFile(port_name);
	if (!Posix_File->open(QIODevice::ReadOnly))
	{
		emit Error("open file error"); exit(-1); return;
	}
/* doesn't solve the problem
	struct flock fl;
	fl.l_type   = F_RDLCK;
	fl.l_whence = SEEK_SET;
	fl.l_start  = 0; 
	fl.l_len    = 0; 
	fl.l_pid    = getpid(); 
	fcntl(Posix_File->handle(), F_SETLK, &fl); 
*/
	tcgetattr(Posix_File->handle(), &Posix_CommConfig);
	Posix_CommConfig.c_cflag |= CREAD|CLOCAL;
	Posix_CommConfig.c_lflag &= (~(ICANON|ECHO|ECHOE|ECHOK|ECHONL|ISIG));
	Posix_CommConfig.c_iflag &= (~(INPCK|IGNPAR|PARMRK|ISTRIP|ICRNL|IXANY));
	Posix_CommConfig.c_oflag &= (~OPOST);
	Posix_CommConfig.c_cc[VMIN] = 0;
	Posix_CommConfig.c_cc[VINTR] = _POSIX_VDISABLE;
	Posix_CommConfig.c_cc[VQUIT] = _POSIX_VDISABLE;
	Posix_CommConfig.c_cc[VSTART] = _POSIX_VDISABLE;
	Posix_CommConfig.c_cc[VSTOP] = _POSIX_VDISABLE;
	Posix_CommConfig.c_cc[VSUSP] = _POSIX_VDISABLE;
	//speed
	cfsetispeed(&Posix_CommConfig, B9600);
	cfsetospeed(&Posix_CommConfig, B9600);
	//data bits
	Posix_CommConfig.c_cflag&=(~CSIZE);
	Posix_CommConfig.c_cflag|=CS8;
	//parity
	Posix_CommConfig.c_cflag&=(~PARENB);
	//stop bits
	Posix_CommConfig.c_cflag&=(~CSTOPB);
	//flow control
	Posix_CommConfig.c_cflag&=(~CRTSCTS);
	Posix_CommConfig.c_iflag&=(~(IXON|IXOFF|IXANY));
	//timeout
	Posix_CommConfig.c_cc[VTIME] = 1;
	if (tcsetattr(Posix_File->handle(), TCSAFLUSH, &Posix_CommConfig) == -1)
	{
		emit Error("tcsetattr error"); exit(-1); return;
	}
	is_open = true;
	emit Message("port opened successfully");
	do
	{
		if (!read_port(Posix_File)) break;
	}
	while (!needClose);
	needClose = false;
	//fl.l_type = F_UNLCK;
	//fcntl(Posix_File->handle(), F_SETLK, &fl); 
	Posix_File->close();
	delete Posix_File;
	emit Message("port closed");
	is_open = false;
}

 

9 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

MSR magnetic stripe card reader

Hi all I am working on MSR110 ...Can anyone plz tell me how to use the configuration commands with magnetic reader???. Please help me out as i have to develop API in C on linux platform.MSR110 is not responding to the configuration commands. Please help... Regards Mahima (0 Replies)
Discussion started by: mahima_er
0 Replies

2. Programming

Hiding app window

I am facing a problem while creating/executing a process in C. I am using old fork/exec mechanism. The problem is: I want to hide the console window of the app i am instantiating. Remember i am instantiating a console application from a GUI application. Is this possible? How? Comments are... (1 Reply)
Discussion started by: amessbee
1 Replies

3. Solaris

Secure Card Reader

I see on some of the recent Sun workstations that there is a secure card reader installed. I have a Sunblade 100 and 150 and would like to know, how do you access this device or turn it on to use it? Thanks, (2 Replies)
Discussion started by: stocksj
2 Replies

4. Shell Programming and Scripting

Bash: Exiting while true loop when terminal is not the focus window

I am running an Ubuntu Gutsy laptop with Advanced Compiz fusion options enabled. I am using xdotool to simulate keyboard input in order to rotate through multiple desktops. I am looking for a way to kill a while true loop when the Enter key (or Control+C if it is easier) is pushed when the... (2 Replies)
Discussion started by: acclaypool
2 Replies

5. Programming

Multithread app - Read-Only Data

Hello, I'm coding an application using pthreads.At some point the threads will read some read-only variables.Is it safe NOT to use mutexes, in order to make the program lighter since mutex operations are resource-demanding... Thanks (1 Reply)
Discussion started by: jonas.gabriel
1 Replies

6. UNIX for Dummies Questions & Answers

grab the data from the unix window

Hi, How could i grab a set of data (eg:file execution start & stop time stamp f) from unix? (1 Reply)
Discussion started by: siriv
1 Replies

7. What is on Your Mind?

CNET News Reader App for the Forums

We are thinking of building a CNET style reader app for reading threads in the forums. One developer suggested we look at a CNN vBulletin app, which I am not familiar with (he said he will post the link tomorrow, Monday). Anyway, I asked the (potential) developer for this app to work with us in... (1 Reply)
Discussion started by: Neo
1 Replies

8. Programming

Building app. to send data to website

Hi. I plan to build an application which takes text data from a user. It then sends this to a website, login required. The business case being this site contains many text fields, mostly redundant to user. My application would only prompt user for necessary text. What language, methods... (4 Replies)
Discussion started by: cic
4 Replies

9. UNIX for Dummies Questions & Answers

How to regain the focus back to the launch window?

Consider this code snippet below:- char=`which afplay` if then xterm -e 'while true; do clear; echo "Press Ctrl-C to Quit..."; afplay /tmp/pulse.wav; done' & > /dev/null 2>&1 fi This launches a second terminal window that generates a specific waveform for the next calibration of... (4 Replies)
Discussion started by: wisecracker
4 Replies
XmProcessTraversal(3X)													    XmProcessTraversal(3X)

NAME
XmProcessTraversal - A function that determines which component receives keyboard events when a widget has the focus SYNOPSIS
#include <Xm/Xm.h> Boolean XmProcessTraversal (widget, direction) Widget widget; XmTraversalDirection direction; DESCRIPTION
XmProcessTraversal determines which component of a hierarchy receives keyboard events when the hierarchy that contains the given widget has keyboard focus. Using XmProcessTraversal to traverse to MenuBars, Pulldown MenuPanes, or Popup MenuPanes is not supported. Specifies the widget ID of the widget whose hierarchy is to be traversed. The hierarchy is only traversed up to the top of the shell. If that shell does not currently have the focus, any changes to the element with focus within that shell will not occur until the next time the shell receives focus. Specifies the direction of traversal The direction parameter can have the following values, which cause the routine to take the corresponding actions: XmTRAVERSE_CURRENT--Finds the hierarchy and the tab group that contain widget. If this tab group is not the active tab group, makes it the active tab group. If wid- get is an item in the active tab group, makes it the active item. If widget is the active tab group, makes the first traversable item in the tab group the active item. XmTRAVERSE_DOWN--Finds the hierarchy that contains widget. Finds the active item in the active tab group and makes the item below it the active item. If there is no item below, wraps. XmTRAVERSE_HOME--Finds the hierarchy that contains widget. Finds the active item in the active tab group and makes the first traversable item in the tab group the active item. XmTRA- VERSE_LEFT--Finds the hierarchy that contains widget. Finds the active item in the active tab group and makes the item to the left the active item. If there is no item to the left, wraps. XmTRAVERSE_NEXT--Finds the hierarchy that contains widget. Finds the active item in the active tab group and makes the next item in child order the active item. XmTRAVERSE_NEXT_TAB_GROUP--Finds the hierarchy that contains widget. Finds the active tab group (if any) and makes the next tab group the active tab group in the hierarchy. XmTRAVERSE_PREV--Finds the hierarchy that contains widget. Finds the active item in the active tab group and makes the previous item in child order the active item. XmTRAVERSE_PREV_TAB_GROUP--Finds the hierarchy that contains widget. Finds the active tab group (if any) and makes the previous tab group the active tab group in the hierarchy. XmTRAVERSE_RIGHT--Finds the hierarchy that contains widget. Finds the active item in the active tab group and makes the item to the right the active item. If there is no item to the right, wraps. XmTRAVERSE_UP--Finds the hierarchy that contains widget. Finds the active item in the active tab group and makes the item above it the active item. If there is no item above, wraps. CAUTIONS XmProcessTraversal will not allow traversal to a widget in a different shell. XmProcessTraversal will only allow traversal to widgets that are currently mapped. You cannot call XmProcessTraversal from inside a focusCallback routine (or you will get a segmentation fault). RETURN VALUE
Returns True if the setting succeeded. Returns False if the keyboard focus policy is not XmEXPLICIT, if there are no traversable items, or if the call to the routine has invalid parameters. SEE ALSO
XmGetVisibility(3X), XmIsTraversable(3X) XmProcessTraversal(3X)
All times are GMT -4. The time now is 01:43 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy