In Linux all devices have a file in /dev directory, so the communication with these devices is very simple, just need to open necessary file, and make read and write operations upon them.
In this article is shown how to connect to serial port in Linux, using c++.
First of all we include all needed libraries, and declare all necessary variables:
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <errno.h>
#include <termios.h>
#include <unistd.h>
int fd1;
int fd2;
char *buff,*buffer,*bufptr;
int wr,rd,nbytes,tries;
int main()
{
return 0;
}
Next step, we connect to device through associated file and check the connection:
fd1=open(“/dev/ttyS0″, O_RDWR | O_NOCTTY | O_NDELAY);
if (fd1 == -1 )
{
perror(“open_port: Unable to open /dev/ttyS0 – “);
}
else
{
fcntl(fd1, F_SETFL,0);
printf(“Port 1 has been sucessfully opened and %d is the file description\n”,fd1);
}
Where, “/dev/ttyS0” is associated with COM1 port.
With following code we send to device some bits:
wr=write(fd1,”ATZ\r”,4);
And for reading response from device:
rd=read(fd1,buff,10);
printf(“Bytes sent are %d \n”,rd);
At the end, close the connection:
close(fd1);
Enjoy!
October 25, 2007 at 12:09 am
Hi,
Thanks for the example, it was really helpful. I found that you can achieve pretty much the same result using file IO streams. I find them a bit easier to use…
Cheers,
Gordon