Linux C编程连载【3】-串口编程

1.. 设计目的

设计一个串口程序,该程序执行时,具有通信参数选择及串口收发数据功能,界面友好。

2 设计流程图及说明

       如图1.1所示,程序运行后,首先进入功能选择,共4中功能可供选择,分别为接收数据,发送数据,接收文件,发送文件。根据提示,键入不同的数字,可以进入不同的功能。设置完毕,进入参数设置,可以保持默认参数,也可以设置用户参数,若设置有误,还可以对参数重新设置。参数设置确认后,打开串口。若串口打开无误,则根据用户的选择进入不同的功能。

 

图1.1 总体设计流程图

 

3 设计测试

3.1 测试环境及步骤

测试环境:VMware WorkStation 6.0.2+Fedora 10+minicom+广嵌开发板

测试步骤:

(1)    配置minicom

[tande@localhost ~]$sudo minicom –s

 

 

图3.1 配置minicom

(2)    建立nfs服务

[tande@localhost ~]$sudo ifconfig eth0 192.168.2.1 netmask 255.255.255.0

[tande@localhost ~]$sudo vi /etc/exports

添加

/mnt/share 192.168.2.*(rw,no_root_squash)

[tande@localhost ~]$ sudo service nfs restart

将交叉编译的程序拷贝至/mnt/share目录下。

(3)    开发板连接串口,用网线和宿主机相连,运行minicom进入开发板(目标机)

[tande@localhost ~]$sudo minicom

[root@(none) /]#mount –t nfs –o nolock 192.168.2.1:/mnt/share /mnt

(4)    打开另一个终端,进入宿主机程序目录

[tande@localhost ~]$cd work/c/device/serial/

[tande@localhost ~]$sudo ./serial

(5)    目标机

[root@(none) mnt]# ./serial

3.2 测试结果

(1)用2号功能(发送数据)控制目标机执行相应的命令

宿主机运行./serial,在功能选择时键入2,参数选择默认,进入数据发送。在宿主机输入相应的命令就可以控制目标机执行相应的命令。如图3.2所示,宿主机(图3.2左)分别发送ls、cd mnt、q(退出发送数据程序),目标机(图3.2右)执行了相应的命令。

 

图3.2 宿主机控制目标机

(2)目标机与宿主机数据收发

       宿主机运行./serial,键入2,选择数据发送。目标机运行./serial,键入1,选择数据接收。通信参数保持默认。宿主机发送hello,测试结果如图3.3(a)、(b)所示。

 

图3.3(a) 宿主机发送数据

 

图3.3(b) 目标机接收数据

(3)目标机接收宿主机启动信息

       如图3.4所示,关闭minicom,宿主机运行./serial,选择1号功能,接收数据,参数保持默认。开发板上电,宿主机即可接收开发板启动信息。

 

图3.4 宿主机接收目标机启动信息

(4)目标机接收文件

       如图3.5所示,关闭minicom,宿主机运行./serial,选择3号功能,接收文件,参数保持默认。输入接收文件名为1.txt(可以指定保存路径,如/home/tande/1.txt)。打开宿主机开发板。接收完成后,文件夹中多了一个1.txt的文件。该文件的权限是root,要更改权限后才能查看。

 

图3.5宿主机接收文件

(5)目标机发送文件

1)编辑发送文件(以root身份)

[tande@localhost serial]$ sudo vi 1.txt?

ls

cd home

q

2)打开minicom,进入目标机。

3)新建一个终端,执行./serial,选择4号功能,参数保持默认。键入发送的文件名为1.txt。实验结果如图3.6(a)、(b)所示。

 

图3.6(a)宿主机发送文件

 

图3.6(b)目标机接收文件数据

(6) 通信参数设置

       功能选择完成后,进入通信参数设置。程序提示“Use the default parameter ? y/n”。键入y,保持默认参数不变。键入n,进入用户参数设置。设置完成后,程序会提示参数信息,并询问“The parameter is OK? y/n”键入y,参数设置完成,键入n,返回重新设置,测试结果如图3.7(a-d)所示。若串口类型为USB转串口,则需要将uart.h中宏定义

#define COM_TYPE GNR_COM   改为 #define COM_TYPE USB_COM

重新编译即可。

 

图3.7(a)参数设置

 

图3.7(b)参数设置

 

图3.7(c)参数设置

 

 

图3.7(d)参数设置

 

【代码清单】

uart.h


serial.c


posted @ 2011-09-23 20:23  j2ee技术  阅读(240)  评论(0编辑  收藏  举报