android测试rs232_AM335x的RS232串口的测试程序
说明:
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串口的测试程序相关推荐
- 主板rs232接口测试软件,简洁的RS232串口通信电路与串口通信测试程序
RS232串口通信电路往往是采用专用的串口传输芯片MAX232(5V)或MAX3232(3.3V),芯片起到驱动.匹配.隔离.保护等作用,这种电路常用于实际系统中的远距离串口通信.多数爱好者搭建串口通 ...
- Android usb-serial-for-android驱动库 实现(读卡器rs232串口转usb)插入开发板读取数据
刚开始接到这个这个任务的时候,看了一下这款读卡器设备的参数(res232协议读卡器技术参数) 初步尝试,利用串口接收 : 1.依赖接入: //串口检测implementation 'com.githu ...
- 程控电源CANoe上位机面板(CAN\ETH测试、RS232串口通信、编写设计思路)
程控电源CANoe上位机面板 编写此面板的目的 编写思路 一.通讯方式 1.RS232串口连接 2.CANoe与RS232串口相关的函数 3.帧格式命令字 4.校验码 二.面板设计 1.所需文件说明 ...
- android usb通讯波特率,USB串口的特殊波特率通信
USB串口的特殊波特率通信是指波特率为非标准数值的任意波特率.由于这些波特率是非标的,所以从硬件到软件都有特殊要求和方法才可以实现.本文以最新2015款的波仕USB232ET转换器为例从硬件和软件两方 ...
- RS232串口通讯的那些事
串口通讯这件事,说简单吧,2 3 5 三根线搞明白了就ok.说复杂吧,这里边的段子就多了.俺刚参加工作时,主要的工作就是搞这个的.那几年,连接了上百种不同型号的设备. RS232串口通讯程序的开发 基 ...
- Android测试原理(三)——使用Eclipse的ADT进行测试
原文链接:http://developer.android.com/tools/testing/testing_eclipse.html 1.使用Eclipse的ADT进行测试 这次的主题介绍了怎么使 ...
- Android测试原理(二)
2.3. The Testing API(测试API) Android的测试API是基于JUnitAPI和扩展的instrumentation 框架以及特定的Android测试类. ...
- Android测试原理概述(一)
翻译来源:http://developer.android.com/tools/testing/testing_android.html 1. Testing http://developer.a ...
- Android 测试教程
Android 测试教程:http://wiki.jikexueyuan.com/project/android-test-course/ 每个开发者都应该懂一点单元测试 一.什么是单元测试? 为了测 ...
最新文章
- 版本控制工具——Git常用操作(下)
- POJ C++程序设计 编程题#7:字符串排序
- bzoj4152-[AMPPZ2014]The_Captain
- 1.c++模式设计-简单工厂模式
- javascrip之prototype
- 苹果mac最好用的SVN客户端:Cornerstone 4 (SVN管理工具)
- 详细介绍ASP.NET状态保存方法
- 手机怎么打开html游戏,网页游戏打不开怎么解决 网页游戏打不开解决方法
- 0714.买卖股票的最佳时机含手续费【贪心算法】
- android3d动画的实现,Android 3D旋转动画库
- Python爬虫进行web 数据可视化挖掘总结和分析
- word文档没保存就关了怎么恢复?别慌!试试这个操作
- Unity精华☀️二、到底是什么原因导致“万向锁”?旋转翻车的终极解析!
- INSERT DESC UPDATE SELECT
- 盈利超预期+追加10亿美元股票回购计划,是时候重估欢聚集团的价值
- 大数据平台的使用(Hadoop 生态圈、CDH)
- 用代码和想象力拥抱一个物联网时代
- Vue入门之Web端CURD前端项目示例
- 记一次挖矿病毒的清除,欢迎来讨论
- 浅析:2019高教社杯全国大学生数学建模竞赛题目---B题 “同心协力”策略研究
热门文章
- 门禁系统服务器功能配置,门禁系统服务器功能配置
- 详解声纹识别:如何正确评价小度在最强大脑中战平人类?|独家解析
- 【JAVA 面向对象编程】
- Unity_Shader中级篇_11_Unity Shader入门精要
- Python爬虫——简易模拟登录【以科文学院教务官网为例】
- Premiere Pro之电影遮幅效果(九)
- 角蜂鸟视觉套件 创意你的人工智能
- 【蜂鸟E203内核解析】Chap.2 E203内核中指令执行的过程-为什么E203是两级流水线?
- WPS加载项系列(1)第一个WPS项目
- java的苹果端接口_基于JAVA的苹果序列号查询api调用代码实例