Writing to a Serial Port


 
Thread Tools Search this Thread
Top Forums Web Development Writing to a Serial Port
# 43  
Old 10-28-2014
Corona688 -

Thanks.

I changed the permissions to 666.

Same behavior. When I execute the program, it hangs, no error message.

---------- Post updated at 02:00 PM ---------- Previous update was at 01:57 PM ----------

If it helps at all, we had a power failure at this end, but I was able to restart everything. Maybe I missed something
# 44  
Old 10-28-2014
I added a program to my message.
# 45  
Old 10-29-2014
Corona688

Thanks.

Checked w/ minicom. Works beautifully.

Tried w/ your code. Compiles, links. Hangs on command line and in the PHP code.
# 46  
Old 10-29-2014
If it doesn't work from prompt it's certainly not going to work from php, it's not magic.

The incredibly frustrating thing about this is we have absolutely no way to test anything we do. Everything we say is a shot in the dark. For all we know minicom is doing translation.

Try stty -g -F /dev/ttyS0 while minicom is running.

Try this code.

Code:
#include <termios.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#include <stdio.h>
#include <stdlib.h>

int main() {
        char buf[64];
        int pos=0;

        int fd;
        fprintf(stderr, "About to open /dev/ttyS0\n");
        fd=open("/dev/ttyS0", O_RDWR);
        if (fd < 0) {
            perror("Couldn't open");
            exit(1);
        }

        fprintf(stderr, "Wrote %ld bytes\n", (long int)write(fd, "W\r\n", 3));

        tcdrain(fd);

        while(read(fd, buf+pos, 1) == 1)
        {
                fprintf(stderr, "Read 0x%02x\n", buf[pos]);
                if(buf[pos++] == '\n') break;
        }

        buf[pos]='\0';

        printf("got line:\n%s", buf);
}

Tell me everything it outputs.

Make sure nothing else is holding /dev/ttyS0 again.

Last edited by Corona688; 10-29-2014 at 12:22 PM..
# 47  
Old 10-29-2014
Corona688 -

Thanks.

I'll try your suggestions when I get home, approx 8pm EDT.

What is absolutely confusing to me is that I had a C program and a PHP script that ran perfectly from both the command line and a as a script, then suddenly stopped running.
# 48  
Old 10-29-2014
Quote:
Originally Posted by Meow613
What is absolutely confusing to me is that I had a C program and a PHP script that ran perfectly from both the command line and a as a script, then suddenly stopped running.
I bet the terminal settings on /dev/ttyS0 changed. They are global... If you change it, it stays changed until something else changes it (or the computer reboots). Terminal settings can do a lot, not just baud rate but things like "should I force you to wait until there's an entire line?", "how many seconds until I give up, or wait forever?" and "should I strip out or translate carriage returns, or give them to you raw?"

That's probably why it works in minicom and not your shell, too. minicom knows how to set up the terminal. And why I want the printout from stty -g -F /dev/ttyS0 while minicom is running -- if we can get its "working" settings maybe we can steal them.
# 49  
Old 10-30-2014
Corona688 -

Thanks

Excellent.

I'll try it when I get home.

I'll also try minicom to set the parameters, since we had power failure.

UPS!!!

---------- Post updated at 08:16 PM ---------- Previous update was at 01:10 PM ----------

Corona688 -

Thanks.



Code:
root@meow:/var/www#  stty -g -F /dev/ttyS0 
1:0:80000dad:0:3:1c:7f:15:4:5:1:0:11:13:1a:0:12:f:17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0

Tell me everything it outputs.

Make sure nothing else is holding /dev/ttyS0 again.
Code:
About to open /dev/ttyS0
Wrote 3 bytes

---------- Post updated 10-30-14 at 10:08 AM ---------- Previous update was 10-29-14 at 08:16 PM ----------

Corona688 -

Thanks.

A new listing of stty -


Code:
root@meow:/var/www#  stty -a -F /dev/ttyS0
speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke

Sorry. The above was run while minicom was NOT running. Here it is when minicom IS running. Note the differences.

Code:
root@meow:/var/www#  stty -a -F /dev/ttyS0
speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 5;
parenb -parodd cs7 hupcl -cstopb cread clocal crtscts
ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel -iutf8
-opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl -echoke


Last edited by Meow613; 10-30-2014 at 11:58 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Solaris

Cabling and adapters to communicate to service processor serial port from Windows PC with USB port.

Hello, I have an unloaded T5140 machine and want to access the ILOM for the first time and subsequently the network port after that., and then load Solaris 10 the final January 2011 build. The first part is what confuses me -the cabling. I am coming from a Windows machine (w/appropriate... (5 Replies)
Discussion started by: joboy
5 Replies

2. Web Development

Setup Serial Port

I need to set a serial port to 9600 7E1. How do I accomplish this? I've tried every combination, with no luck. (6 Replies)
Discussion started by: Meow613
6 Replies

3. Shell Programming and Scripting

reading from and writing to serial port

hello all, please any one can provide me the shell script to write data to /dev/ttyS1 and read responce from /dev/ttyS1 and compare the responce to some string .. thnxx ---------- Post updated at 03:35 PM ---------- Previous update was at 11:46 AM ---------- any body help me.. how do i... (1 Reply)
Discussion started by: yashwantkumar
1 Replies

4. Solaris

How to enable Serial port on ILOM, when Network Port is enabled in parallel

Hi Everyone, In my environment, I have few T5220. On the iLOM Management Card, I have both Network and Serial port are cabled, I don't have any issues while I try to connect using Network Management port, but when I try to connect the serial port for the same server which is actually connected... (3 Replies)
Discussion started by: bobby320
3 Replies

5. Shell Programming and Scripting

Need help with serial port

Hi, I have a external board connected to my serial port. I need to execute "shutdown -r now" command when system boot up. When system boots up it requires a username ans password. Then I need to run my command. I can use rc script but that is rebooting system before it asks for username and... (0 Replies)
Discussion started by: charlie.arya
0 Replies

6. UNIX for Dummies Questions & Answers

Missing serial port

A neighbour's Ubuntu 10.04 machine has five serial ports, one on the motherboard and four on a PCI card. However, only four cards are showing: # dmesg | grep tty console enabled serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A 00:08: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A ... (2 Replies)
Discussion started by: dotancohen
2 Replies

7. AIX

Serial port in AIX

Hi, How can i configure my modem in AIX thru serial port (sa0-->tty0) I have two port serial card configured as sa0 I created tty1 which port is tty0 and which port is tty1 how can i know?? (1 Reply)
Discussion started by: pchangba
1 Replies

8. Programming

How to tell if a string to serial port has been sent

I have a need to determine when a string has been completely sent via a serial port from a standard 'C' application. The code is as follows: SerialPort_Send = open (pPortString, O_WRONLY | O_NOCTTY | O_NONBLOCK); write (SerialPort_Send, pCommandString, strlen (pCommandString)); ... (2 Replies)
Discussion started by: ExDes
2 Replies

9. Solaris

Serial port not found

Hi, I am working with solaris 9,SUN-Blade-100 and I want to communicate with the Serial port.To check whether the port is working or not.I write code and when I execute the file,then I got the output-- According to this,serial port is not found.can anyone please tell me how to configure the... (1 Reply)
Discussion started by: smartgupta
1 Replies

10. Linux

urgent......Serial port

I think my serial port(on board) is not working ...... because when I am running same code on two machines its working good....but when my system comes into picture ....it doesnt show any output comming from serial port.......... can anybody tell me how to configure my serial port.........or to... (16 Replies)
Discussion started by: arunchaudhary19
16 Replies
Login or Register to Ask a Question