在REDHAT9环境下的计算机串口接收程序recive和串口发送程序send

在REDHAT9环境下的计算机串口接收程序recive和串口发送程序send

在REDHAT9操作系统下的使用终端发…
技术简介

项目名称: 在REDHAT9环境下的计算机串口接收程序recive和串口发送程序send

项目的主要内容及目前进展:

技术具体实施内容

在REDHAT9环境下的计算机串口接收程序recive和串口发送程序,实现了在REHAT9操作系统下,用户通过shell终端输入命令recive接收仪表从232串口发送给计算机的数据,同时用户通过shell终端输入命令send从计算机232串口发送数据给仪表。接收仪表从232串口发送给计算机的数据,程序在REDHAT9下运行稳定,不发生死机,可以长达5年运行不发生死机。程序的操作说明书如下:

在REDHAT9操作系统下的使用终端发送串口数据send程序操作说明书

  1. 软件概述
    在REDHAT9操作系统下的使用终端发送串口数据send程序是一款在REDHAT9操作系统下计算机通过串口发送数据的程序,它界面简洁,操作简单,可通过串口从本地计算机向其它计算机发送数据。

  2. 运行环境
    硬件运行环境:

l CPU 600MHz及以上;

l 内存512M及以上;

l 集成或独立显卡;

l 硬盘可用空间1G及以上;

l 监视器1024x768或更高分辨率

软件运行环境:

l 操作系统redhat9或以上版本;

l Gcc2.0或以上版本

  1. 功能介绍
    本软件用于计算机串口发送数据,用户通过终端输入./send回车,即可通过本地计算机的串口向其它计算机的串口发送数据。同时并将这些数据显示在计算机显示屏上。

  2. 安装流程
    本软件免安装无须配置,直接将软件放置在PC机的目录下,直接在终端输入./send,回车运行即可,软件在该路径下自动运行。

  3. 使用流程

  4. 首先,将两个计算机的串口通过串口线连接起来,在本地计算机的终端下输入./send 回车,程序开始运行,显示界面如图1所示:

图1

  1. 在计算机显示屏上,要求用户输入需要发送的数字,如下图2所示:

图2

3.输入要发送的数据“5667”,如图3所示

图3

4.点回车键,计算机显示发送的数据,如图4所示

上面简单介绍了,在REDHAT9操作系统下的使用终端发送串口数据send程序的使用,它通过串口从本地计算机向其它计算机发送数据,程序稳定可靠,可以数年运行不发生死机,有很强的实用性。

在REDHAT9操作系统下的使用终端接收串口数据recive程序操作说明书

  1. 软件概述
    在REDHAT9操作系统下的使用终端接收串口数据recive程序是一款用于在REDHAT9操作系统下计算机通过串口接收数据检测的软件,它界面简洁,操作简单,可用于串口接收其它计算机或仪器发送到本地计算机的数据。

  2. 运行环境
    硬件运行环境:

l CPU 600MHz及以上;

l 内存512M及以上;

l 集成或独立显卡;

l 硬盘可用空间1G及以上;

l 监视器1024x768或更高分辨率

软件运行环境:

l 操作系统redhat9或以上版本;

l Gcc2.0或以上版本

  1. 功能介绍
    本软件用于计算机串口接收数据,用户通过终端输入./recive回车,即可接收串口上面其它计算机传送到本地计算机的数据。同时并将这些数据显示在计算机显示屏上。

  2. 安装流程
    本软件免安装无须配置,直接将软件放置在PC机的目录下,直接在终端输入./recive,回车运行即可,软件在该路径下自动运行。

  3. 使用流程

  4. 首先,将两个计算机的串口通过串口线连接起来,在本地计算机的终端下输入./recive 回车,程序开始运行,显示界面如图1所示:

图1

  1. 在计算机显示屏上,显示本地计算机串口接收到的数据,如下图2所示:

图2

3.同时点击ctrl+c,退出程序文件菜单项下的保存接收数据,,如图3所示

图3

上面简单介绍了,在REDHAT9操作系统下的使用终端接收串口数据recive程序的使用,它通过串口接收其它计算机传送到本地计算机的数据,程序稳定可靠,可以数年运行不发生死机,有很强的实用性。

2.源代码:
接收串口程序recive.c的源码

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

#include <termios.h>

#include <errno.h>

#include <string.h>

#define TRUE 1

//初始化串口选项:

void setTermios(struct termios * pNewtio, int uBaudRate)

{

bzero(pNewtio, sizeof(struct termios)); /* clear struct for new port settings */

//8N1

pNewtio->c_cflag = uBaudRate | CS8 | CREAD | CLOCAL;

pNewtio->c_iflag = IGNPAR;

pNewtio->c_oflag = 0;

pNewtio->c_lflag = 0; //non ICANON

/*

initialize all control characters

default values can be found in /usr/include/termios.h, and

are given in the comments, but we don’t need them here

*/

pNewtio->c_cc[VINTR] = 0; /* Ctrl-c */

pNewtio->c_cc[VQUIT] = 0; /* Ctrl-\ */

pNewtio->c_cc[VERASE] = 0; /* del */

pNewtio->c_cc[VKILL] = 0; /* @ */

pNewtio->c_cc[VEOF] = 4; /* Ctrl-d */

pNewtio->c_cc[VTIME] = 5; /* inter-character timer, timeout VTIME*0.1 */

pNewtio->c_cc[VMIN] = 0; /* blocking read until VMIN character arrives */

pNewtio->c_cc[VSWTC] = 0; /* ‘\0’ */

pNewtio->c_cc[VSTART] = 0; /* Ctrl-q */

pNewtio->c_cc[VSTOP] = 0; /* Ctrl-s */

pNewtio->c_cc[VSUSP] = 0; /* Ctrl-z */

pNewtio->c_cc[VEOL] = 0; /* ‘\0’ */

pNewtio->c_cc[VREPRINT] = 0; /* Ctrl-r */

pNewtio->c_cc[VDISCARD] = 0; /* Ctrl-u */

pNewtio->c_cc[VWERASE] = 0; /* Ctrl-w */

pNewtio->c_cc[VLNEXT] = 0; /* Ctrl-v */

pNewtio->c_cc[VEOL2] = 0; /* ‘\0’ */

}

#define BUFSIZE 512

int main(int argc, char **argv)

{

int fd;

int nread;

int input;

int *p=&input;

//char buff[BUFSIZE];

char buff[1024];

struct termios oldtio, newtio;

struct timeval tv;

char *dev ="/dev/ttyS0";

fd_set rfds;

if ((fd = open(dev, O_RDWR | O_NOCTTY))<0)

{

printf(“err: can’t open serial port!\n”);

return -1;

}

tcgetattr(fd, &oldtio); /* save current serial port settings */

setTermios(&newtio, B9600);

tcflush(fd, TCIFLUSH);

tcsetattr(fd, TCSANOW, &newtio);

//printf(“Please input an integer.”);

//scanf("%d",&input);

//*p=input;

//printf(“The integer you input is %d\n”,*p);

//printf(“The integer you input is %d\n”,&input);

tv.tv_sec=30;

tv.tv_usec=0;

while (TRUE)

{

printf(“wait…\n”);

FD_ZERO(&rfds);

FD_SET(fd, &rfds);

if (select(1+fd, &rfds, NULL, NULL, &tv)>0)

{

printf(“wait…\n”);

if (FD_ISSET(fd, &rfds))

{

//nread=read(fd, buff, BUFSIZE);

nread=read(fd, buff ,1024);

printf(“readlength=%d\n”, nread);

//buff[nread]=’\0’;

//printf("%s\n", buff);

// buff=’\0’;

printf(“date=%d\n”,buff);

//printf("%d\n",fd);

printf("%d\n", buff[1]);

printf("%d\n", buff[2]);

printf("%d\n", buff[3]);

printf("%d\n", buff[4]);

printf("%d\n", buff[5]);

printf("%d\n", buff[6]);

printf("%d\n", buff[7]);

printf("%d\n", buff[8]);

printf("%d\n", buff[9]);

printf("%d\n", buff[10]);

printf("%d\n", buff[11]);

printf("%d\n", buff[12]);

printf("%d\n", buff[13]);

printf("%d\n", buff[14]);

printf("%d\n", buff[15]);

printf("%d\n", buff[16]);

printf("%d\n", buff[17]);

printf("%d\n", buff[18]);

printf("%d\n", buff[19]);

//printf("%d\n", buff[20]);

//printf("%d\n", buff[21]);

//printf("%d\n", buff[22]);

//printf("%d\n", buff[23]);

//printf("%d\n", buff[24]);

//printf("%d\n", buff[25]);

//printf("%d\n", buff[26]);

//printf("%d\n", buff[27]);

//printf("%d\n", buff[28]);

//printf("%d\n", buff[29]);

//printf("%d\n", buff[30]);

//printf("%d\n", buff[31]);

//printf("%d\n", buff[32]);

//printf("%d\n", buff[1]);

//printf("%d\n", buff[2]);

//printf("%d\n", buff[3]);

//printf("%d\n", buff[4]);

//printf("%d\n", buff[5]);

//printf("%d\n", buff[6]);

//printf("%d\n", buff[7]);

//printf("%d\n", buff[8]);

//printf("%d\n", buff[9]);

//printf("%d\n", buff[10]);

//printf("%d\n", buff[32]);

//printf("%d\n", buff[12]);

//printf("%d\n", buff[13]);

//printf("%d\n", buff[14]);

//printf("%d\n", buff[15]);

//printf("%d\n", buff[16]);

}

}

}

tcsetattr(fd, TCSANOW, &oldtio);

close(fd);

}

串口发送程序send.c的源码

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

#include <termios.h>

#include <errno.h>

#include <string.h>

//初始化串口选项:

void setTermios(struct termios * pNewtio, int uBaudRate)

{

bzero(pNewtio, sizeof(struct termios)); /* clear struct for new port settings */

//8N1

pNewtio->c_cflag = uBaudRate | CS8 | CREAD | CLOCAL;

pNewtio->c_iflag = IGNPAR;

pNewtio->c_oflag = 0;

pNewtio->c_lflag = 0; //non ICANON

/*

initialize all control characters

default values can be found in /usr/include/termios.h, and

are given in the comments, but we don’t need them here

*/

pNewtio->c_cc[VINTR] = 0; /* Ctrl-c */

pNewtio->c_cc[VQUIT] = 0; /* Ctrl-\ */

pNewtio->c_cc[VERASE] = 0; /* del */

pNewtio->c_cc[VKILL] = 0; /* @ */

pNewtio->c_cc[VEOF] = 4; /* Ctrl-d */

pNewtio->c_cc[VTIME] = 5; /* inter-character timer, timeout VTIME*0.1 */

pNewtio->c_cc[VMIN] = 0; /* blocking read until VMIN character arrives */

pNewtio->c_cc[VSWTC] = 0; /* ‘\0’ */

pNewtio->c_cc[VSTART] = 0; /* Ctrl-q */

pNewtio->c_cc[VSTOP] = 0; /* Ctrl-s */

pNewtio->c_cc[VSUSP] = 0; /* Ctrl-z */

pNewtio->c_cc[VEOL] = 0; /* ‘\0’ */

pNewtio->c_cc[VREPRINT] = 0; /* Ctrl-r */

pNewtio->c_cc[VDISCARD] = 0; /* Ctrl-u */

pNewtio->c_cc[VWERASE] = 0; /* Ctrl-w */

pNewtio->c_cc[VLNEXT] = 0; /* Ctrl-v */

pNewtio->c_cc[VEOL2] = 0; /* ‘\0’ */

}

int main(int argc, char **argv)

{

int fd;

int input;

int *p=&input;

int nCount, nTotal, i;

struct termios oldtio, newtio;

char *dev ="/dev/ttyS0";

//if ((argc!=3) || (sscanf(argv[1], “%d”, &nTotal) != 1))

//{

//printf(“err: need tow arg =%d!\n”, argc );

//return -1;

//}

//sscanf(argv[1], “%d”, &nTotal)

//{

//printf(“send date!\n”, argc );

//return -1;

//}

if ((fd = open(dev, O_RDWR | O_NOCTTY))<0)

{

printf(“err: can’t open serial port!\n”);

return -1;

}

while (1) //循环读取数据

{

tcgetattr(fd, &oldtio); /* save current serial port settings */

setTermios(&newtio, B9600);

tcflush(fd, TCIFLUSH);

tcsetattr(fd, TCSANOW, &newtio);

//for (i=0; i<nTotal; i++)

//{

//nCount=write(fd, argv[2], s]trlen(argv[2]));

//argv[]={010300010001d5ca};

printf(“Please input an integer.”);

scanf("%d",&input);

*p=input;

//nCount=write(fd,argv[p],strlen(argv[]));

printf(“The integer you input is %d\n”,*p);

printf(“The integer you input is %d\n”,&input);

nCount=write(fd,“010300010001d5ca/r”,512);

nCount=write(fd,p,1024);

nCount=write(fd,&input,1024);

printf(“send date *p”);

printf(“send date input”);

printf(“send date 010300010001d5ca\n”);

//sleep(1);

}

tcsetattr(fd, TCSANOW, &oldtio);

close(fd);

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值