Problem with read data from serial device


 
Thread Tools Search this Thread
Top Forums Programming Problem with read data from serial device
# 8  
Old 03-06-2010
Quote:
Originally Posted by Corona688

Never call printf from a signal handler. fprintf(stderr, "stuff"); might work since that's unbuffered but even that is not guaranteed. Use write(), along with sprintf if necessary.
For the sake of completeness, it's a bad idea to call fprintf() in a signal handler if the interrupted code also calls fprintf() on the same stream.

Indeed, fprintf() may uses mutex to lock the stream. If it occurs that the signal interrupts fprintf() after it locked the mutex, and fprintf() is called in the signal handler. Well, it's game over: fprintf() shall try to grab again the mutex, and on many implementation this results a deadlock.

Loïc.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Read line from serial device with BASH

I'm new to Linux (Ubuntu 16.04), and very new to BASH scripting. I have a Numato 8-channel USB GPIO device, which is a DAQ that appears in the system as a serial port. In Linux it appears as ttyACM0. I can easily manipulate a GPO with, for example: echo "gpio set 7" > /dev/ttyACM0 ...followed... (12 Replies)
Discussion started by: Chalk-X
12 Replies

2. Programming

Read from serial port

Hi I try to communicate with a GSM modem, from C, for sending SMS. I use standart AT-commands. Working well with terminal. There is no problem writing ti the port. But when I try to read I only get a echo, I write "ATI" and get "ATI" back, I should get somthing like "SIEMENS 35... (4 Replies)
Discussion started by: dmiller
4 Replies

3. Programming

Wrong data with Read from a serial port.

hi, I've a problem on my C/C++ program with Posix Library. I have to read data from the serial but I have incorrect data, in fact I get a bunch of zeros: "2953.3174, 2785.2126, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0 , 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ,... (24 Replies)
Discussion started by: enaud
24 Replies

4. SCO

Modifying serial printers device

I am trying to change one of my serial printers from /dev/ttyr002 to /dev/ttyr014: lpstat -s device for check3: /dev/ttyr002 device for check4: /dev/ttyr002 I changed the tty setting for check3 in: /etc/printcap /var/spool/lp/admins/lp/printers/check3 to /dev/ttyr014 Then I get:... (4 Replies)
Discussion started by: herot
4 Replies

5. AIX

Tape drive problem - no process to read data written to a pipe

Hi Everyone, The machine I'm working on is an AIX 5.3 LPAR running on a P650. oslevel -r shows 5300-08. I'm trying to take a backup to a SCSI tape drive, which has been working up until this point. I know of nothing that has changed recently to cause this problem. But when I try to take a... (0 Replies)
Discussion started by: need2bageek
0 Replies

6. Shell Programming and Scripting

problem to read data in array

My input is a long list of data start with "#": #read_1 123456898787987 #read_2 54645646540646406 #read_3 4654564654316 . . I got a bit confusing about how to set all in an array first. And then when I run a program name "statistic_program", it will read the array in scalar and do... (24 Replies)
Discussion started by: patrick87
24 Replies

7. Ubuntu

Ubuntu 9.04 Serial application to telnet to serial device

Hello! I am working on an application which reads environmental instruments which have serial ports. The application requires a serial port to be present to talk to the device (i.e. /dev/ttyS0 ). In some instances the environmental devices will be 100's of yards away from the computer, so a... (5 Replies)
Discussion started by: mvona
5 Replies

8. Linux

Device serial number

Hey! I'm trying to figure out a sollution for a problem I have at my company with an Iomega MiniMax 500 GB USB disk. If i run cat /proc/bus/usb/devices I get this information: T: Bus=01 Lev=02 Prnt=04 Port=00 Cnt=01 Dev#= 5 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00... (2 Replies)
Discussion started by: noratx
2 Replies

9. Programming

Accessing device with Prolific USB-serial controller.

I am trying to access DG-100 gps logger on Mac OS X with POSIX API. The device uses a Prolific usb-serial controller, and connect to the usb port on my mac. After I install the Prolific driver, it shows up as /dev/tty.usbserial and /dev/cu.usbserial. The vendor has published the data format. So... (1 Reply)
Discussion started by: monkeybiz
1 Replies

10. UNIX for Dummies Questions & Answers

serial port device path

hi. Im trying to install a switch. And the manual says i should type a command including a SerialPortDevicePath. which is the filepath to serial port used for connection. However.. nothing about how to find this info. Could anyone help me where to find this path? thx mr.T (6 Replies)
Discussion started by: tyskertøs
6 Replies
Login or Register to Ask a Question
ports(7)						 Miscellaneous Information Manual						  ports(7)

NAME
ports, port_names - Device (tty and lp) names for serial and parallel ports SYNOPSIS
Default Serial Ports: /dev/tty00 /dev/tty01 (not present on a single-port system) Parallel Port: /dev/lp0 DESCRIPTION
AlphaStation and AlphaServer systems provide one or two 9-pin serial communication ports. These ports are usually labelled 1 (COMM1) and 2 (COMM2), but they may be identified by different icons. Using the appropriate serial cable and terminator, you can connect a serial printer, external modem, or character-cell terminal to a serial port. Most AlphaStation and AlphaServer systems also provide one parallel port, for use with a parallel printer. When you add a device to your system, the installation documentation may instruct you to map the device pathname to the port. These devices are located in the /dev directory. For serial-line ports, the two default device pathnames are: This pathname always maps to 1, COMM1, the lowest port number, an icon for a terminal console, or the only serial port (on a single-port system). This pathname always maps to 2, COMM2, the next numbered port, or (if one serial port is labeled with an icon for a terminal console) the remaining serial port. If your system hardware has been extended to include additional serial ports, the pathnames /dev/tty02, /dev/tty03, and so forth, may also be available to you. However, most systems have only /dev/tty00 and /dev/tty01 as the device pathnames for serial ports. The one parallel port on an AlphaStation or AlphaServer may be labeled with the word printer or a printer icon. On some systems, the paral- lel port may not be labeled. The device pathname for the parallel port is /dev/lp0. Currently, Tru64 UNIX does not fully support parallel printers, so fewer devices are connected to this port as compared to serial ports. If you are connecting a terminal console to your system, it must be connected to the serial port mapped to /dev/tty00. For other serial devices, it does not matter which of the serial ports you choose for the connection. For example, suppose you are setting up a system that has two serial ports, labeled 1 and 2. You intend to use a serial-line terminal rather than a workstation monitor as the system console and also want to connect a serial-line printer to the system. In this case, you must connect the terminal to the port labeled 1 (with the device pathname /dev/tty00). Therefore, you must connect the printer to the remaining port labeled 2 (with the device pathname /dev/tty01). If, for the same type of system, you intend to use a workstation monitor as the system console, it does not matter which serial port you use for a serial-line printer or modem. In other words, you can connect the printer to either port 1 (with pathname /dev/tty00) or port 2 (with pathname /dev/tty01). When prompted to enter a /dev/tty** pathname by the lprsetup script or the Print configuration tool in the CDE Application Manager, you would specify /dev/tty00 if you connected the printer to port 1 or /dev/tty01 if you connected the printer to port 2. See the System Administration manual for more information on setting up consoles (including remote consoles) and printers. See the modem(7) reference page for more information on setting up modems. SEE ALSO
Commands: lprsetup(8) Devices: ace(7), modem(7) System Administration delim off ports(7)