📄 serial.c
字号:
//Process 1:
//ComDes = open( "/dev/ttyS0", O_RDWR );
//read( ComDes, ReadBuffer, LENGTH );
//Process 2:
//ComDes = open( "/dev/ttyS1", O_RDWR );
//write( ComDes, WriteBuffer, LENGTH );
//////////////////////////////////////////////////////////////////////////////////////////////
#include <stdio.h> /* Standard input/output definitions */
#include <string.h> /* String function definitions */
#include <unistd.h> /* UNIX standard function definitions */
#include <fcntl.h> /* File control definitions */
#include <errno.h> /* Error number definitions */
#include <termios.h> /* POSIX terminal control definitions */
#include<sys/types.h>
#include<sys/stat.h>
#include <stdlib.h>
//#define BAUDRATE B300
//#define BAUDRATE B9600
//#define BAUDRATE B57600
#define MODEMDEVICE "/dev/ttyS0"
#define _POSIX_SOURCE 1
#define FALSE 0
#define TRUE 1
volatile int STOP=FALSE;
int cnvbaudrate(char * pszbaudrate)
{
switch(atoi(pszbaudrate))
{
case 50:
return B50;
case 75:
return B75;
case 110:
return B110;
case 134:
return B134;
case 150:
return B150;
case 200:
return B200;
case 300:
return B300;
case 600:
return B600;
case 1200:
return B1200;
case 1800:
return B1800;
case 2400:
return B2400;
case 4800:
return B4800;
case 9600:
return B9600;
case 19200:
return B19200;
case 38400:
return B38400;
case 57600:
return B57600;
default:
return B57600;
}
}
int main(int argc,char **argv)
{
int fd,c, res,nsize=1024,allsize=0,BAUDRATE;
struct termios oldtio,newtio;
char szsendbuf[1024];
int filelength;
FILE * pfile;
struct stat st;
fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY );
if (fd <0)
{
perror(MODEMDEVICE);
printf("Error in open COM1\n");
exit(-1);
}
tcgetattr(fd,&oldtio); //save current serial port settings
bzero(&newtio, sizeof(newtio)); // clear struct for new port settings
//newtio.c_cflag = BAUDRATE |/* CRTSCTS |*/ CS8;// | CLOCAL | CREAD;
BAUDRATE = B57600;
//printf("argc= %d,argv[1]=%s\n",argc,argv[1]);
if(argc >= 2)
BAUDRATE = cnvbaudrate(argv[1]);
cfsetispeed(&newtio,BAUDRATE);
cfsetospeed(&newtio,BAUDRATE);
newtio.c_cflag |= CRTSCTS | CS8 | CLOCAL | CREAD;
newtio.c_iflag = IGNPAR | ICRNL;
//newtio.c_lflag = ICANON ;//| ECHO;
newtio.c_cc[VINTR] = 0; /* Ctrl-c*/
newtio.c_cc[VQUIT] = 0; /* Ctrl-\ */
newtio.c_cc[VERASE] = 0; /* del */
newtio.c_cc[VKILL] = 0; /* @ */
newtio.c_cc[VEOF] = 4; /* Ctrl-d */
newtio.c_cc[VTIME] = 0; /* inter-character timer unused */
newtio.c_cc[VMIN] = 1; /* blocking read until 1 character
arrives */
newtio.c_cc[VSWTC] = 0; /* '\0' */
newtio.c_cc[VSTART] = 0; /* Ctrl-q */
newtio.c_cc[VSTOP] = 0; /* Ctrl-s */
newtio.c_cc[VSUSP] = 0; /* Ctrl-z */
newtio.c_cc[VEOL] = 0; /* '\0' */
newtio.c_cc[VREPRINT] = 0; /* Ctrl-r */
newtio.c_cc[VDISCARD] = 0; /* Ctrl-u */
newtio.c_cc[VWERASE] = 0; /* Ctrl-w */
newtio.c_cc[VLNEXT] = 0; /* Ctrl-v */
newtio.c_cc[VEOL2] = 0; /* '\0' */
tcflush(fd, TCIFLUSH);
tcsetattr(fd,TCSANOW,&newtio);
stat("test.bmp",&st);
if((pfile=fopen("test.bmp","r"))==NULL)
{
printf("Can't find the file test.bmp!");
return 0;
}
filelength=st.st_size;
printf("file size :%d\n",filelength);
//write(fd,(char *)&filelength,sizeof(int));
while (nsize==1024)
{
bzero(szsendbuf,1024);
nsize=fread(szsendbuf,1,1024,pfile);
nsize=write(fd,szsendbuf,nsize);
allsize+=nsize;
if(!(allsize&0x3fff))
printf("all_size:%d this_time:%d times:%d\n",allsize,nsize,allsize/1024);
}
fclose(pfile);
//restore the old port settings
tcsetattr(fd,TCSANOW,&oldtio);
close(fd);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -