Writing to a Serial Port


 
Thread Tools Search this Thread
Top Forums Web Development Writing to a Serial Port
# 71  
Old 11-03-2014
Remember that an RS232 port is NOT p'n'p so if there is any interruption then problems could be had.

You have learnt SW from Corona688 and HW pitfalls from me.

The real world is that your connection may be interrupted by a third party event beyond your control, (example a major underground cable assembly being damaged during roadworks), which shuts you off from access to the remote scales...

Not sure how you are going to cater for long time interruptions unless you can get the scales to store its data locally then do a dump to your machine when everything returns back to normal...

BTW these tests should initially be done locally before even attempting ANY remote tests.

This is a good starting point to find out more about the old serial port:-

RS-232 - Wikipedia, the free encyclopedia
# 72  
Old 11-03-2014
Quote:
Originally Posted by Meow613
I really do not totally understand what you said in your post.
If you are more specific about what you don't understand, I can be more specific in how I explain what how.

I don't know a good book for it. I learned from asking knowledgeable people, taking lots of notes, and reading the manual pages. (Try man setvbuf)
# 73  
Old 11-04-2014
Corona688 -

Used /tmp

IT WORKS....IT WORKS....IT WORKS!!!

Thank you EVER SO MUCH!!!.

As for books ....

PHP security ...Something related to your post above concerning not writing to /var/www from an external site.
Code:
 ....ordinary webserver cannot and should not write files to /var/www/.....

Medium to Advanced C.

Again, THANKS.

---------- Post updated 11-04-14 at 12:57 AM ---------- Previous update was 11-03-14 at 11:13 PM ----------

Corona688 -

Sorry ...

It works once, and then wipes out the tmp file....

I am sure I misunderstood your instructions

Here is the C code...

Code:
/*
*Scale65  Write data to Serial Port and Read it
*
*/ 
#include <termios.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

#define MODEMDEVICE "/dev/ttyS0"


int main(void) 
{
    char buf[64];
    int pos=0, num, num2,num3;
    FILE *fp1, *fp2;   
    int i, n3;

    system("stty -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");

    fp1 = fopen(MODEMDEVICE, "w+");
    fp2 = fopen("/tmp/testfile.txt", "w+");
    if(fp1 == NULL)
    {
        printf("initiation error. \n");
            return 1;
    }

    setvbuf(fp1, NULL, _IONBF, 0);
    fprintf(fp1, "%s","W\r\n");
    memset(buf, 0, sizeof(buf));
    fread(buf, 1, 7,fp1 );
    fputs(buf, stdout);
    for(i= 0; i < strlen(buf) ; i++)
        printf("%c", buf[i]);

    printf("You entered the string %s\n",buf);

    fclose(fp1);
    fwrite(buf, 1, 7,fp2 );
    fclose(fp2);

}

And the PHP script...

PHP Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<html>

    <head>
        <title>Test Scale</title>
    </head>
        <body>
        <strong>
            <div align='center'>
                  <h3>Test Scale</h3>
            </strong>
                    </div>

<?php
            error_reporting
(E_ALL E_NOTICE);
            
ini_set('display_errors','1');

            echo 
'hello';
             
$v=`/var/www/scale65`;
            
$fptr1=  fopen("/tmp/testfile.txt""r+");

            
$bla fscanf($fptr1,"%f");
            
$weightfscanf($fptr1,"%f");
            
print_r($weight);
            
var_dump($weight);
            echo 
$weight[0]; 
?>

        </body>
</html>
As I said, I am doing something wrong, but cannot figure out what it is
# 74  
Old 11-11-2014
I think I have solved two of the problems...

1]that the code was not consistent in its behaviour. I noticed it would only run when minicom was running; ie the COM port was not consistently configured.. This code fixed the problem
Code:
system("stty 9600 cs7 -parodd -cstopb < /dev/ttyS0");

2] The PHP script and C program were not communicating properly. The C program was being called from within a PHP script. The C program wrote to the port and read the output. The PHP script formatted and displayed the output. So... called the PHP script as the last line in the C program.

One problem remains..

I am still, regretably, having problems in writing to the scale.

Code:
setvbuf(fp1, NULL, _IONBF, 0);
fprintf(fp1, "%s","W\r\n");
memset(buf, 0, sizeof(buf));

No matter what I do, if the weight on the scale is changed, the C program has to run twice before it outputs the change of weight.
# 75  
Old 11-19-2014
The solution -

Once I added the code
Code:
system("stty 9600 cs7 -parodd -cstopb < /dev/ttyS0");

Minicom should NOT be running since it will conflict with the C program.

The following is probably obvious to the regulars on this forum, but for the newbies [like me] it was not...

Code:
$v=shell_exec('/var/www/scale7');
echo $v;

w/o the echo statement, output from the C program will not be shown.

MUCH THANKS TO ALL FOR THE EXCELLENT HELP

Last edited by Meow613; 11-19-2014 at 01:33 AM.. Reason: Correction
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