Linux的串口表现为设备文件。Linux的串口设备文件命名一般为/dev/ttySn(n=0、1、2„„),若串口是USB扩展的,则串口设备文件命名多为/dev/ttyUSBn(n=0、1、2„„)。当然这种命名规则不是绝对的,不同的硬件平台对串口设备文件的命名可能有所区别。

注意:我使用的是虚拟串口;通过 dmesg
| grep ttyS  知道我创建的虚拟串口在UBUNTU下是“/dev/ttyS2”

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <asm/termios.h>
#define DEV_NAME "/dev/ttyS2" int main (int argc, char *argv[])
{
int fd;
int len, i,ret;
char buf[30] = "hello world!\n";
fd = open(DEV_NAME, O_RDWR | O_NOCTTY);
if(fd < 0) {
perror(DEV_NAME);
return -1;
}
len = write(fd, buf, sizeof(buf)); /* 向串口写入字符串 */
if (len < 0) {
printf("write data error \n");
}
len = read(fd, buf, sizeof(buf)); /* 在串口读入字符串 */
if (len < 0) {
printf("read error \n");
return -1;
}
printf("%d : %s\n",len, buf); /* 打印从串口读出的字符串 */
return(0);
}

在 Linux主机运行test_uart_1程序(Linux
主机的串口设备文件可能需要有 root 用户权限才可以访问,所以若 test_uart_1 在 Linux 主机上执行时需要有 root 权限):

book@ubuntu:/home/linux_c/uart$
sudo ./test_uart_1

注意:若不加sudo,就会打开失败,并打印出"/dev/ttyS2: Permission denied"



运行结果:

先在串口助手上收到 “hello world” ,然后从串口助手发送 “uart : windows” ;

ubuntu收到的信息如下:

book@ubuntu:/home/linux_c/uart$ sudo ./test_uart_1 

14 : uart : windows

linux串口基本编程的更多相关文章

  1. linux 串口通信 编程详解

    计算机串口的引脚说明 序号 信号名称 符号 流向 功能 3 发送数据 TXD DTE→DCE DTE发送串行数据 2 接收数据 RXD DTE←DCE DTE 接收串行数据 7 请求发送 RTS DT ...

  2. storysnail的Linux串口编程笔记

    storysnail的Linux串口编程笔记 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创代码根据Ge ...

  3. Linux串口编程(转载)

    在嵌入式Linux中,串口是一个字设备,访问具体的串行端口的编程与读/写文件 的操作类似,只需打开相应的设备文件即可操作.串口编程特殊在于串 口通信时相关参数与属性的设置.嵌入式Linux的串口编程时 ...

  4. Linux串口编程详解(转)

    串口本身,标准和硬件 † 串口是计算机上的串行通讯的物理接口.计算机历史上,串口曾经被广泛用于连接计算机和终端设备和各种外部设备.虽然以太网接口和USB接口也是以一个串行流进行数据传送的,但是串口连接 ...

  5. linux串口编程总结

    串口本身.标准和硬件 † 串口是计算机上的串行通讯的物理接口.计算机历史上,串口以前被广泛用于连接计算机和终端设备和各种外部设备.尽管以太网接口和USB接口也是以一个串行流进行数据传送的.可是串口连接 ...

  6. linux串口编程设置(转载)

    (转载)在嵌入式Linux中,串口是一个字设备,访问具体的串行端口的编程与读/写文件 的操作类似,只需打开相应的设备文件即可操作.串口编程特殊在于串 口通信时相关参数与属性的设置.嵌入式Linux的串 ...

  7. linux串口编程参数配置详解(转)

    1.linux串口编程需要的头文件 #include <stdio.h>         //标准输入输出定义#include <stdlib.h>        //标准函数 ...

  8. linux串口编程参数配置详解

    1.linux串口编程需要的头文件 #include <stdio.h>         //标准输入输出定义 #include <stdlib.h>        //标准函 ...

  9. Linux串口编程(中断方式和select方式)

    Linux下的串口编程,在嵌入式开发中占据着重要的地位,因为很多的嵌入式设备都是通过串口交换数据的.在没有操作系统的我们可以使用UART的中断来出来数据的接受和发送,而在Linux操作系统下,我们也可 ...

随机推荐

  1. 初识Spring security-添加security

    请先查看 初识Spring security-无Security的SpringMVC 在pom.xml文件中添加包 <!-- Spring Security --> <depende ...

  2. utf-8,Unicode和ASCII区别

    一.ASCII 码 我们知道,计算机内部,所有信息最终都是一个二进制值.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte).也就是说,一个 ...

  3. java深入探究12-框架之Spring

    1.引入Spring 我们在搭建框架时常常会解决问题:对象创建,对象之间依赖关系如何处理,Spring就是来解决这类问题的:控制反转依赖注入 2.环境搭建 1)下载源码:其中3.0以下版本源码中有Sp ...

  4. DataX-HDFS(读写)

    DataX操作HDFS 读取HDFS 1 快速介绍 HdfsReader提供了读取分布式文件系统数据存储的能力.在底层实现上,HdfsReader获取分布式文件系统上文件的数据,并转换为DataX传输 ...

  5. 内网批量测试登录机器工具,并且dir 目标机器c盘

    // Ipc.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <stdio.h> #include <w ...

  6. Eclipse下创建简单Servlet

    参考文章:一个简单的Servlet程序  http://blog.csdn.net/a153375250/article/details/50916428 Servlet简介 Servlet是什么?简 ...

  7. Spring Boot入门——全局异常处理

    1.后台处理异常 a.引入thymeleaf依赖 <!-- thymeleaf模板插件 --> <dependency> <groupId>org.springfr ...

  8. unity监测按下键的键值并输出+unity键值

    using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using U ...

  9. linux下图形字符的命令

    banner sudo apt-get install sysvbanner banner song 若更改字体可以使用banner song printerbanner -w 50 A toilet ...

  10. Java面试题下

    这部分主要是开源Java EE框架方面的内容,包括hibernate.MyBatis.spring.Spring MVC等,由于Struts 2已经是明日黄花,在这里就不讨论Struts 2的面试题, ...