说明:

RS232_D1,在Linux中的设备名称:/dev/ttyO3;

RS232_D2,在Linux中的设备名称:/dev/ttyO4

1、RS232是全双工通信,支持同时收发,所以只要将Tx与Rx 相接,回环测试串口

2、测试RS232_D2进入相应目录下测试 ./ttytest /dev/ttyO4

3、看到以下图片,说明能支持收发

附上源码作参考:

#define TRUE 1

#define FALSE -1

int

speed_arr[] = {B115200, B38400, B19200, B9600, B4800, B2400, B1200,

B300,

B38400, B19200, B9600, B4800, B2400, B1200, B300,

};

int

name_arr[] = {115200, 38400, 19200, 9600, 4800, 2400, 1200,

300,

38400, 19200, 9600, 4800, 2400, 1200, 300, };

void

set_speed(int fd, int speed)

{

int

i;

int

status;

struct termios Opt;

tcgetattr(fd, &Opt);

for (

i= 0; i < sizeof(speed_arr) / sizeof(int);

i++)

{

if

(speed == name_arr[i])

{

tcflush(fd, TCIOFLUSH);

cfsetispeed(&Opt, speed_arr[i]);

cfsetospeed(&Opt, speed_arr[i]);

status = tcsetattr(fd, TCSANOW, &Opt);

if

(status != 0)

perror("tcsetattr fd1");

return;

}

tcflush(fd,TCIOFLUSH);

}

}

int

set_Parity(int fd,int databits,int stopbits,int

parity)

{

struct termios options;

if (

tcgetattr( fd,&options) != 0)

{

perror("SetupSerial 1");

return(FALSE);

}

options.c_cflag &= ~CSIZE;

switch (databits)

{

case

7:

options.c_cflag |= CS7;

break;

case

8:

options.c_cflag |= CS8;

break;

default:

fprintf(stderr,"Unsupported data size\n");

return (FALSE);

}

switch (parity)

{

case

'n':

case

'N':

options.c_cflag &= ~PARENB;

options.c_iflag &= ~INPCK;

options.c_iflag &= ~(ICRNL|IGNCR);

options.c_lflag &= ~(ICANON );

break;

case

'o':

case

'O':

options.c_cflag |= (PARODD | PARENB);

options.c_iflag |= INPCK;

break;

case

'e':

case

'E':

options.c_cflag |= PARENB;

options.c_cflag &= ~PARODD;

options.c_iflag |= INPCK;

break;

case

'S':

case

's':

options.c_cflag &= ~PARENB;

options.c_cflag &= ~CSTOPB;

break;

default:

fprintf(stderr,"Unsupported parity\n");

return (FALSE);

}

switch (stopbits)

{

case

1:

options.c_cflag &= ~CSTOPB;

break;

case

2:

options.c_cflag |= CSTOPB;

break;

default:

fprintf(stderr,"Unsupported stop bits\n");

return (FALSE);

}

if

(parity != 'n')

options.c_iflag |= INPCK;

options.c_cc[VTIME] = 150; // 15 seconds

options.c_cc[VMIN] = 0;

tcflush(fd,TCIFLUSH);

if

(tcsetattr(fd,TCSANOW,&options) != 0)

{

perror("SetupSerial 3");

return (FALSE);

}

return (TRUE);

}

int

OpenDev(char *Dev)

{

int

fd = open( Dev, O_RDWR ); //| O_NOCTTY |

O_NDELAY

if

(-1 == fd)

{

perror("Can't Open Serial Port");

return -1;

}

else

return fd;

}

int

main(int argc, char **argv)

{

int

fd;

int

nread;

char

buffer[512];

//char *dev ="/dev/ttySAC1";

int

n=0,i=0;

const

char* dev = NULL;

dev =

argv[1];

if(dev==NULL)

{

printf("Please input seria device name ,for exmaple

/dev/ttyO1.\nNote:This is loop test application. Make sure that

your serial is loop\n");

return 0;

}

fd =

OpenDev(dev);

if

(fd>0)

set_speed(fd,115200); //设置波特率

else

{

printf("Can't Open Serial Port!\n");

exit(0);

}

if

(set_Parity(fd,8,1,'N')== FALSE) //设置传递参数

{

printf("Set Parity Error\n");

exit(1);

}

printf("\nWelcome to TTYtest\n\n");

memset(buffer,0,sizeof(buffer));

char

test[100]="forlinx am335x uart test......";

write(fd, test, strlen(test));

printf("Send test data------%s\n",test);

while(1)

{

nread

= read(fd,&buffer[n],1);

printf("read char is %c \n",buffer[n]);

if

(strlen(buffer)==strlen(test))

{

printf("Read Test Data finished,Read Test Data

is-------%s\n",buffer);

memset(buffer,0,sizeof(buffer));

printf("Send test data

again------%s\n",test);

write(fd, test, strlen(test));

n=0;

sleep(1);

continue;

}

n++;

}

}

android测试rs232_AM335x的RS232串口的测试程序相关推荐

  1. 主板rs232接口测试软件,简洁的RS232串口通信电路与串口通信测试程序

    RS232串口通信电路往往是采用专用的串口传输芯片MAX232(5V)或MAX3232(3.3V),芯片起到驱动.匹配.隔离.保护等作用,这种电路常用于实际系统中的远距离串口通信.多数爱好者搭建串口通 ...

  2. Android usb-serial-for-android驱动库 实现(读卡器rs232串口转usb)插入开发板读取数据

    刚开始接到这个这个任务的时候,看了一下这款读卡器设备的参数(res232协议读卡器技术参数) 初步尝试,利用串口接收 : 1.依赖接入: //串口检测implementation 'com.githu ...

  3. 程控电源CANoe上位机面板(CAN\ETH测试、RS232串口通信、编写设计思路)

    程控电源CANoe上位机面板 编写此面板的目的 编写思路 一.通讯方式 1.RS232串口连接 2.CANoe与RS232串口相关的函数 3.帧格式命令字 4.校验码 二.面板设计 1.所需文件说明 ...

  4. android usb通讯波特率,USB串口的特殊波特率通信

    USB串口的特殊波特率通信是指波特率为非标准数值的任意波特率.由于这些波特率是非标的,所以从硬件到软件都有特殊要求和方法才可以实现.本文以最新2015款的波仕USB232ET转换器为例从硬件和软件两方 ...

  5. RS232串口通讯的那些事

    串口通讯这件事,说简单吧,2 3 5 三根线搞明白了就ok.说复杂吧,这里边的段子就多了.俺刚参加工作时,主要的工作就是搞这个的.那几年,连接了上百种不同型号的设备. RS232串口通讯程序的开发 基 ...

  6. Android测试原理(三)——使用Eclipse的ADT进行测试

    原文链接:http://developer.android.com/tools/testing/testing_eclipse.html 1.使用Eclipse的ADT进行测试 这次的主题介绍了怎么使 ...

  7. Android测试原理(二)

    2.3.  The Testing API(测试API) Android的测试API是基于JUnitAPI和扩展的instrumentation 框架以及特定的Android测试类.          ...

  8. Android测试原理概述(一)

    翻译来源:http://developer.android.com/tools/testing/testing_android.html 1.   Testing http://developer.a ...

  9. Android 测试教程

    Android 测试教程:http://wiki.jikexueyuan.com/project/android-test-course/ 每个开发者都应该懂一点单元测试 一.什么是单元测试? 为了测 ...

最新文章

  1. 版本控制工具——Git常用操作(下)
  2. POJ C++程序设计 编程题#7:字符串排序
  3. bzoj4152-[AMPPZ2014]The_Captain
  4. 1.c++模式设计-简单工厂模式
  5. javascrip之prototype
  6. 苹果mac最好用的SVN客户端:Cornerstone 4 (SVN管理工具)
  7. 详细介绍ASP.NET状态保存方法
  8. 手机怎么打开html游戏,网页游戏打不开怎么解决 网页游戏打不开解决方法
  9. 0714.买卖股票的最佳时机含手续费【贪心算法】
  10. android3d动画的实现,Android 3D旋转动画库
  11. Python爬虫进行web 数据可视化挖掘总结和分析
  12. word文档没保存就关了怎么恢复?别慌!试试这个操作
  13. Unity精华☀️二、到底是什么原因导致“万向锁”?旋转翻车的终极解析!
  14. INSERT DESC UPDATE SELECT
  15. 盈利超预期+追加10亿美元股票回购计划,是时候重估欢聚集团的价值
  16. 大数据平台的使用(Hadoop 生态圈、CDH)
  17. 用代码和想象力拥抱一个物联网时代
  18. Vue入门之Web端CURD前端项目示例
  19. 记一次挖矿病毒的清除,欢迎来讨论
  20. 浅析:2019高教社杯全国大学生数学建模竞赛题目---B题 “同心协力”策略研究

热门文章

  1. 门禁系统服务器功能配置,门禁系统服务器功能配置
  2. 详解声纹识别:如何正确评价小度在最强大脑中战平人类?|独家解析
  3. 【JAVA 面向对象编程】
  4. Unity_Shader中级篇_11_Unity Shader入门精要
  5. Python爬虫——简易模拟登录【以科文学院教务官网为例】
  6. Premiere Pro之电影遮幅效果(九)
  7. 角蜂鸟视觉套件 创意你的人工智能
  8. 【蜂鸟E203内核解析】Chap.2 E203内核中指令执行的过程-为什么E203是两级流水线?
  9. WPS加载项系列(1)第一个WPS项目
  10. java的苹果端接口_基于JAVA的苹果序列号查询api调用代码实例