linux环境下C语言实现非阻塞方式读取字符串数据的串口测试程序,即串口工具的编写

linux环境下C语言实现非阻塞方式读取字符串数据的串口测试程序,即串口工具的编写

ID:47256641

大小:288.06 KB

页数:30页

时间:2019-08-31

linux环境下C语言实现非阻塞方式读取字符串数据的串口测试程序,即串口工具的编写_第1页
linux环境下C语言实现非阻塞方式读取字符串数据的串口测试程序,即串口工具的编写_第2页
linux环境下C语言实现非阻塞方式读取字符串数据的串口测试程序,即串口工具的编写_第3页
linux环境下C语言实现非阻塞方式读取字符串数据的串口测试程序,即串口工具的编写_第4页
linux环境下C语言实现非阻塞方式读取字符串数据的串口测试程序,即串口工具的编写_第5页
资源描述:

《linux环境下C语言实现非阻塞方式读取字符串数据的串口测试程序,即串口工具的编写》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、linux环境下C语言实现非阻塞方式读取字符串数据的串口测试程序,即串口工具的编写-AZ_.一、前旨1.1关于串口测试工具,网上已经有集成好的应用程序提供大家使用,但其只提供功能接口,内部具体怎么实现的还需要自己去探索;1.2关于串口通信的测试程序在网上已经是数见不鲜,但也不排除很多是直接“参考”别人的(ctrl+c),而且很多代码没有相关注释,从而某些细节性的问题就被忽略;1.3本例程序不需全部读完,分为3大部分,设置通信协议、读写字符串函数编写、通信的测试函数,测试函数自己选収看两个典型的就0K;如果哪有说的有误,希望大家指正,多交流

2、共同进步;1.4要点:①本文提供了设置串口通讯的接口,方便大家对程序的复用,感觉还是面向对象的语言更方便呀;②在给模块发送指令后需要读取模块返冋的数据时,保险起见釆用阻塞式读取,且串口一次只能读取8位byte数据,注意读取数据的调用函数;③注意在读写命令中存在0x00(零)的16进制的数据时的方式;④通信成功,但恰遇到模块总返冋操作失败的代码的问题。二、串口测试程序的实现2.1要实现串口通信的操作,首先是找到需要操作的对象,即具体的串口设备,一般都在Linux嵌入式设备的/dev/路径下有很多串口设备,找到自己所要操作的串口设备,例如本例

3、程所操作的是/dev/ttySACO,ttySACO为串口设备名称;2.2模块的串口通信协议,不同的模块之间有细微差别,自己作相应的改动就好。本例程的通信协议:波特率9600bps,8位数据位,1位起始位,一位停止位,无奇偶校验。通信成功吋,返回的是操作成功或者操作失败的代码,FA048A78FA848A01R.FA040AFreqC$Freq:051020FA(M0A00FA040AOSF35.FA(M0AQAEE10FA040AblE<120.PS:操作失败并不是说的是通信失败,因为去访问模块时,模块给了应答,表明通信是成功的,只能说

4、明是硬件本身操作失败。发送的指令中存在CS,其值为0减去前面CS前面所有16进制的相加■例:80060501CS,CS为:0-(80+06+05+01)=74,即需要发送的代码为8006050174;2.3源码如下:#include#include#include#include#include#include#include#include#include

5、>#defineTRUE1#defineFALSE-1#defineBUFF_MAXSIZE2048〃设定的频率为0〃设定的频率为5〃设定的频率为10〃设定的频率为20#defineFREQUENCY_000#defineFREQUENCY_055#defineFREQUENCY_1010#defineFREQUENCY_2020#defineRESOLUTION_ONE_MM1//I表示选择设左的分辨率为1mm#defineRESOLUTION_Z_P_ONE_MM2//2表示选择设定的分辨率为0」mm//0表示上电即测关闭#defin

6、eMEASURING_POWER_ON1//I表示上电即测开启#defineMEASURING_POWER_OFF0typedefunsignedcharun_char;//初始化设置,即设置通信协议intOpenDev(char*dev);//打开串口设备文件intset_speed(intfd,intspeed,structtermios*newtio);//设置波特率intSet_Parity(intfd,intdatabits,intstopbits,intparity);//设置数据位、停止位、校验位〃数据读写函数intWrit

7、e_Data(intfd,void*buf,intlen);//发送命令代码函数intRead_Data(intfd,char*buff);〃接收命令代码函数〃模块的功能函数intOpen_LaserModule(intfd);//模块的打开intClose_LaserModule(intfd);〃模块的关闭intSet_Address(intfd);〃设置地址un_char*Read_Parameter(intfd,un_char*device_parameter);//读取参数un_char*Read_Device_Num(intfd

8、,un_char*device_num);//读取机器号intDistance_Modification(intfd,intdecrease_or_increase,intdistance_i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。