zoukankan      html  css  js  c++  java
  • linux串口基本编程


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


    注意:我使用的是虚拟串口;通过 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!
    ";
    	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 
    ");
    	}
    	len = read(fd, buf, sizeof(buf)); /* 在串口读入字符串 */
    	if (len < 0) {
    		printf("read error 
    ");
    		return -1;
    	}
    	printf("%d : %s
    ",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


  • 相关阅读:
    简单工厂,工厂方法,抽象工厂,三种工厂模式
    Redis锁完美解决高并发秒杀问题
    30分钟教你写一个mybatis框架
    List实现队列--杀人游戏
    .Net 事务
    EF架构~为EF DbContext生成的实体添加注释(T5模板应用)
    移动开发规范概述
    Git设置当前分支为默认push分支
    git——简易指南
    .Net内存泄露原因及解决办法
  • 原文地址:https://www.cnblogs.com/alan666/p/8311950.html
Copyright © 2011-2022 走看看