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
SCRIPTOR(1p)															      SCRIPTOR(1p)

NAME
scriptor - Perl script to send commands to a smart card SYNOPSIS
scriptor [-h] [-r reader] [-p protocol] [file] DESCRIPTION
This manual page documents briefly the scriptor command. scriptor is a program that sends commands to a smart card using a batch file or stdin. OPTIONS
A description of options is included below. -h Show summary of options. -r reader Use the indicated reader. By default the first PC/SC reader is used. -p protocol Use the indicated protocol. Accepted values are T=0 and T=1. By default T=0 is used. file Use the file instead of stdin to read commands (APDUs) The commands are of the form: CLA INS P1 P2 Lc [data] [le] reset # comment Example: # reset the card reset # Select MF 3F00 A0 A4 00 00 02 3F 00 # Get Reponse # 17 is the value of second SW from the previous command A0 C0 00 00 17 # Select DF Telecom(7F10) A0 A4 00 00 02 7F 10 # Get Response A0 C0 00 00 17 # Select EF_ADN(6F3A) (Abbreviated Dialing Numbers) A0 A4 00 00 02 6F 3A # Get Reponse A0 C0 00 00 0F SEE ALSO
pcscd(8),gscriptor(1) AUTHOR
This manual page was written by Ludovic Rousseau <rousseau@debian.org>, for the Debian GNU/Linux system (but may be used by others). octobre 17, 2003 SCRIPTOR(1p)
All times are GMT -4. The time now is 04:51 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy