Linux串口应用开发
- 格式:ppt
- 大小:358.50 KB
- 文档页数:20


Linux文件IO操作-ADC、串口操作
【实验目的】
1. 熟悉linux的IO操作函数;
2. 掌握linux的ADC程序设计;
3. 掌握linux的串口程序设计;
【实验原理】
1. ADC数据采集
实验板上的ARM芯片s3c6410的一路模拟转换器ADC连接到了可变电阻W1.将W1的分压的模拟电压值转化为数字编码.原理图如下图所示:
操作主要步骤:
(1)打开ADC设备文件
int fd = open("/dev/adc", 0);
(2)读取ADC转化结果
char buffer[30];
int len = read(fd, buffer, sizeof buffer -1); //字符串来描述转化结果
2. 串口通信
【实验内容】
1 ADC数据采集
功能:实现模拟电压的实时采集,采集周期为500ms,并在ubuntu终端打印ADC转化结果。
编译命令:
arm-linux-gcc adc.c –o adc
命令执行:
./adc
源代码adc.c:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
2.串口通信实验
功能:实现上位机(PC,ubuntu)串口2与实验板(ARM,嵌入式linux)的串口COM2的数据通信。该程序包括写串口程序和读串口程序。ARM实验板上运行读串口程序,Ubuntu上运行写串口程序。
重要说明:在uart_api.h有两个比较重要的宏定义:
#define GNR_COM 0 //普通串口
#define USB_COM 1 //USB串口
#define COM_TYPE GNR_COM //程序中选择串口类型为:普通串口
基于Linux操作系统下串口调试助手的设计
黎爱琼;陈家林;谈宏华
【摘 要】为了方便在Linux操作系统下进行串口调试以及能在嵌入式系统开发板上直观地观察到串行数据传输,在Redhad 9.0下的Qt Designer编程环境下设计了串口调试助手.首先在Qt下以一种图形化的编程方式完成串口调试助手界面的设计,再将其生成源代码,然后在源代码中添加串口驱动,完成串口调试助手的设计.经实践证明,该串口调试助手在Redhad 9.0操作系统上运行良好.利用交叉编译程序将其移植到S3C2410的Linux 2.4上后也能够正常运行极大地方便了调试工作.
【期刊名称】《现代电子技术》
【年(卷),期】2006(029)016
【总页数】3页(P88-90)
【关键词】嵌入式系统;Linux操作系统;Qt;串口驱动
【作 者】黎爱琼;陈家林;谈宏华
【作者单位】武汉工程大学,湖北,武汉,430073;武汉工程大学,湖北,武汉,430073;武汉工程大学,湖北,武汉,430073
【正文语种】中 文
【中图分类】TN873
串口是计算机一种应用广泛的接口,几乎在每种操作系统以及需要进行数据传送的装置上都支持串口操作。在Linux操作系统下,如果要进行串口测试,可以使用系统自带的minicom,但这个环境在调试时不方便,设置麻烦,不直观。如果有像Windows操作系统下的串口调试助手,在Linux下进行串口调试将极大地提高调试效率。
设备驱动程序是构成Linux内核的主要部分,在高特权的内核环境下运行,如果他们出错会导致灾难性的后果。驱动程序的设计是设备开发的难点之一。
Linux操作系统体现了I/O软件目标分层设计的思想,为应用程序提供了一致的访问接口,Linux I/O系统分层以及各层次的功能如图1所示。所有与设备相关的代码都要在驱动程序里完成。Linux操作系统为编程者写好了第4层软件,为用户程序提供了一致的接口,驱动程序则要遵循这种标准。
QT串口与51单片机通信
通过这个小例子主要想说明QT怎样进行线程编程的思想,实例如图,好吧,下面是过程
上一个例子我们采用的是手工编写代码的方法,这个例子我们来玩一下designer,其实Qt4己经把界面与功能分开了,用designer来进行界面
设计,再手工编写一些功能,如信号与槽,这样开发效率会大大提高,呵呵,开一个终端,输入/usr/local/Trolltech/Qt-4.5.1/bin/designer
,如果第一次打开出现字体不对,可以打开qtconfig进行一些相关配置,打开后我们新建一个Main Window,在右边的属性框中设置一下界面大小,
1.我ARM板的LCD大小为320x240,所以我也设为320x240;
2.左边是一些我们常用的窗口部件,这里我们用到一个lable标签来做显示,再放几个pushButton按钮,在属性objectName重新更改它的名字,改为我们记得的,这样在写功能时记得哪个按钮叫什么名字,对于一个初学QT的人来说,很想知道每一个部件到底有什么信号和槽,别急,我们可以这样来看,选中一个lable,按F4,再点击lable拖动出现接地符号时松开,弹出编辑信号与槽,这时左边列出的是信号,右边为槽,这里我们不用配置连接,等下我们再手工写,
3最后我们用到一个lable标签和三个pushButton按钮,并命名为dis_label、writeButton、readButton、closeButton,然后保存为mainwindow.ui,这样designer就完工了,呵呵..
4.下面我们编写一个线程,用于管理串口收发工作,它不涉及到任何界面,只做好它的本份工作就得了,编写一个thread.h文件 gedit thread.h,
#ifndef THREAD_H
#define THREAD_H
#include
class Thread:public QThread
slcan linux c 协议代码
SLCAN(Serial Line CAN)是一种用于串行线路上的CAN(Controller Area Network)通信协议。本文将介绍SLCAN在Linux系统下的C语言实现。
我们来了解一下CAN总线和SLCAN协议的基本概念。CAN总线是一种常用于汽车、工业控制和嵌入式系统等领域的通信协议,它具有高可靠性和实时性的特点。CAN总线上的设备可以通过发送和接收CAN帧来进行通信。
SLCAN协议是一种在串行线路上模拟CAN总线通信的协议,它将CAN帧转换为串行数据进行传输。在Linux系统中,我们可以使用C语言编写SLCAN协议的实现代码,以实现与CAN设备的通信。
在C语言代码实现中,我们需要使用串口通信库来控制串口设备。在Linux系统中,可以使用termios库来进行串口通信的配置和操作。通过设置串口的波特率、数据位、停止位和校验位等参数,我们可以实现与CAN设备的通信。
在代码中,我们首先需要打开串口设备,使用open函数打开串口文件,并使用tcgetattr和tcsetattr函数来配置串口的参数。然后,我们可以使用read和write函数来读取和写入串口数据。
在SLCAN协议中,CAN帧被转换为串行数据进行传输。我们可以使用一些特定的字符来表示CAN帧中的各个字段。例如,字符's'表示“开始”,字符't'表示“帧类型”,字符'l'表示“数据长度”,字符'z'表示“数据”,字符'G'表示“过滤器”,字符'W'表示“写入”,字符'F'表示“帧”,字符'A'表示“确认”,字符'V'表示“版本”。
在C语言代码中,我们可以使用switch语句来处理接收到的串口数据。根据接收到的数据类型,我们可以执行相应的操作。例如,当接收到字符's'时,表示开始传输,我们可以进行一些初始化操作;当接收到字符't'时,表示接收到一个CAN帧,我们可以解析帧类型、数据长度和数据,并进行相应的处理;当接收到字符'W'时,表示写入数据,我们可以将数据发送给CAN设备。