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
termios.h(3HEAD)						      Headers							  termios.h(3HEAD)

NAME
termios.h, termios - define values for termios SYNOPSIS
#include <termios.h> DESCRIPTION
The <termios.h> header contains the definitions used by the terminal I/O interfaces. See termios(3C) and termio(7I) for an overview of the terminal interface. The termios Structure The following data types are defined through typedef: cc_t used for terminal special characters speed_t used for terminal baud rates tcflag_t used for terminal modes The above types are all unsigned integer types. The implementation supports one or more programming environments in which the widths of cc_t, speed_t, and tcflag_t are no greater than the width of type long. The names of these programming environments can be obtained using the confstr(3C) function or the getconf(1) utility. The termios structure is defined and includes the following members: tcflag_t c_iflag /* input modes */ tcflag_t c_oflag /* output modes */ tcflag_t c_cflag /* control modes */ tcflag_t c_lflag /* local modes */ cc_t c_cc[NCCS] /* control characters */ A definition is provided for: NCCS size of the array c_cc for control characters The following subscript names for the array c_cc are defined: Subscript Usage Subscript Usage Description Canonical Mode Non-Canonical Mode VEOF EOF character VEOL EOL character VERASE ERASE character VINTR VINTR INTR character VKILL KILL character VMIN MIN value VQUIT VQUIT QUIT character VSTART VSTART START character VSTOP VSTOP STOP character VSUSP VSUSP SUSP character VTIME TIME value The subscript values are unique, except that the VMIN and VTIME subscripts can have the same values as the VEOF and VEOL subscripts, respectively. The header file provides the flags described below. Input Modes The c_iflag field describes the basic terminal input control: BRKINT Signal interrupt on break. ICRNL Map CR to NL on input. IGNBRK Ignore break condition. IGNCR Ignore CR. IGNPAR Ignore characters with parity errors. INLCR Map NL to CR on input. INPCK Enable input parity check. ISTRIP Strip character. IXANY Enable any character to restart output. IXOFF Enable start/stop input control. IXON Enable start/stop output control. PARMRK Mark parity errors. Output Modes The c_oflag field specifies the system treatment of output: OPOST Post-process output. ONLCR Map NL to CR-NL on output. OCRNL Map CR to NL on output. ONOCR No CR output at column 0. ONLRET NL performs CR function. OFILL Use fill characters for delay. NLDLY Select newline delays: NL0 newline type 0 NL1 newline type 1 CRDLY Select carriage-return delays: CR0 carriage-return delay type 0 CR1 carriage-return delay type 1 CR2 carriage-return delay type 2 CR3 carriage-return delay type 3 TABDLY Select horizontal-tab delays: TAB0 horizontal-tab delay type 0 TAB1 horizontal-tab delay type 1 TAB2 horizontal-tab delay type 2 TAB3 expand tabs to spaces BSDLY Select backspace delays: BS0 backspace-delay type 0 BS1 backspace-delay type 1 VTDLY Select vertical-tab delays: VT0 vertical-tab delay type 0 VT1 vertical-tab delay type 1 FFDLY Select form-feed delays: FF0 form-feed delay type 0 FF1 form-feed delay type 1 Baud Rate Selection The input and output baud rates are stored in the termios structure. These are the valid values for objects of type speed_ t. The following values are defined, but not all baud rates need be supported by the underlying hardware. B0 Hang up B50 50 baud B75 75 baud B110 110 baud B134 134.5 baud B150 150 baud B200 200 baud B300 300 baud B600 600 baud B1200 1 200 baud B1800 1 800 baud B2400 2 400 baud B4800 4 800 baud B9600 9 600 baud B19200 19 200 baud B38400 38 400 baud Control Modes The c_cflag field describes the hardware control of the terminal; not all values specified are required to be supported by the underlying hardware: CSIZE Character size: CS5 5 bits CS6 6 bits CS7 7 bits CS8 8 bits CSTOPB Send two stop bits, else one. CREAD Enable receiver. PARENB Parity enable. PARODD Odd parity, else even. HUPCL Hang up on last close. CLOCAL Ignore modem status lines. The implementation supports the functionality associated with the symbols CS7, CS8, CSTOPB, PARODD, and PARENB. Local Modes The c_lflag field of the argument structure is used to control various terminal functions: ECHO Enable echo. ECHOE Echo erase character as error-correcting backspace. ECHOK Echo KILL. ECHONL Echo NL. ICANON Canonical input (erase and kill processing). IEXTEN Enable extended input character processing. ISIG Enable signals. NOFLSH Disable flush after interrupt or quit. TOSTOP Send SIGTTOU for background output. Attribute Selection The following symbolic constants for use with tcsetattr() are defined: TCSANOW Change attributes immediately. TCSADRAIN Change attributes when output has drained. TCSAFLUSH Change attributes when output has drained; also flush pending input. Line Control The following symbolic constants for use with tcflush() are defined: TCIFLUSH Flush pending input. TCIOFLUSH Flush both pending input and untransmitted output. TCOFLUSH Flush untransmitted output. The following symbolic constants for use with tcflow() are defined: TCIOFF Transmit a STOP character, intended to suspend input data. TCION Transmit a START character, intended to restart input data. TCOOFF Suspend output. TCOON Restart output. ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Interface Stability |Standard | +-----------------------------+-----------------------------+ SEE ALSO
getconf(1), cfgetispeed(3C), cfsetispeed(3C), confstr(3C), tcdrain(3C), tcflow(3C), tcflush(3C), tcgetattr(3C), tcgetsid(3C), tcsend- break(3C), tcsetattr(3C), attributes(5), standards(5) SunOS 5.10 10 Sep 2004 termios.h(3HEAD)
All times are GMT -4. The time now is 04:12 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy