openwrt (linux)串口通信

OpenWrt下实现USB转串口驱动的配置与调试 本文详细介绍了在OpenWrt系统中配置与调试USB转串口驱动的完整流程。从硬件选型(如CH340、PL2303芯片)与连接,到内核驱动的编译配置(通过make menuconfig),再到系统调试(使用lsusb、dmesg命令)与串口通信测试(使用minicom或screen),提供了从入门到实战的清晰指南。文章旨在帮助开发者将OpenWrt设备扩展为串口服务器或物联网网关,解决硬件通信与调试难题。 阅读详情

1. 基本的串口通信程序。先读取内容,再将内容写回串口。

#include     <stdio.h>
#include     <stdlib.h> 
#include     <unistd.h>  
#include     <sys/types.h>
#include     <sys/stat.h>
#include     <fcntl.h> 
#include     <termios.h>
#include     <errno.h>
   
main()
{
    int fd;
    int i;
    int len;
    int n = 0;      
    char read_buf[256];
    char write_buf[256];
    struct termios opt; 
    
    fd = open("/dev/ttyATH0", O_RDWR|O_NOCTTY|O_NDELAY);
    if(fd == -1)
    {
        perror("open serial 0\n");
        exit(0);
    }

    tcgetattr(fd, &opt);      
	bzero(&opt, sizeof(opt));
    
	tcflush(fd, TCIOFLUSH);

	cfsetispeed(&opt, B115200);
    cfsetospeed(&opt, B115200);
    
    opt.c_cflag &= ~CSIZE;  
    opt.c_cflag |= CS8;   
    opt.c_cflag &= ~CSTOPB; 
    opt.c_cflag &= ~PARENB; 
    opt.c_cflag &= ~CRTSCTS;
    opt.c_cflag |= (CLOCAL | CREAD);
 
    opt.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
 
    opt.c_oflag &= ~OPOST;
    
    opt.c_cc[VTIME] = 0;
    opt.c_cc[VMIN] = 0;
    
    tcflush(fd, TCIOFLUSH);
 
    printf("configure complete\n");
	
    if(tcsetattr(fd, TCSANOW, &opt) != 0)
    {
        perror("serial error");
        return -1;
    }

    printf("start send and receive data\n");

	while(1)
    {    
        n = 0;
        len = 0;
        bzero(read_buf, sizeof(read_buf)); 
        bzero(write_buf, sizeof(write_buf));
 
        while( (n = read(fd, read_buf, sizeof(read_buf))) > 0 )
        {
            for(i = len; i < (len + n); i++)
            {
                write_buf[i] = read_buf[i - len];
            }
            len += n;
        }
        write_buf[len] = '\0';
              
        printf("Len %d \n", len);
        printf("%s \n", write_buf);
 
        n = write(fd, write_buf, len);
        printf("write %d chars\n",n);
        
        sleep(2);
    }
	
}

2. 注意

    opt.c_cc[VTIME] = 0;
    opt.c_cc[VMIN] = 0;

在这两个值均为0 的情况下,read不管有没有数据都会立即返回。详细情况在linux下man tcsetattr.

如果不设定这两个值,那么read只有收到回车后才会读取缓存中的数据。


程序大部分转载自:http://www.cnblogs.com/lovemo1314/archive/2010/10/29/1864327.html

该链接的程序部分有误。

OpenWrt路由器如何添加USB转串口功能?以HLK_MTK7628n为例 本文以HLK-MT7628n开发板为例,详细介绍了为OpenWrt路由器添加USB转串口功能的完整流程。内容涵盖从CH340、CP2102等芯片选型、OpenWrt编译环境搭建、内核驱动配置,到固件烧录及功能测试的全步骤,旨在帮助开发者扩展路由器物理接口,实现与串口设备的通信,适用于智能家居、工业控制等物联网项目。 阅读详情

相关推荐

OpenWRT环境下使用libmodbus实现Modbus RTU传感器数据采集

本文详细介绍了在OpenWRT环境下使用libmodbus实现Modbus RTU传感器数据采集的全过程。从环境准备、硬件连接到代码实战,涵盖了串口配置、数据采集、错误处理等关键步骤,并分享了实际项目中的优化经验与问题解决方案,助力开发者高效完成工业物联网设备的数据采集任务。

weixin_28703489的博客 901

OPENWRT串口通信的实现

串口设置 串口名称(不同机型不同) 开机启动信息可以看到串口的名称,例如以下串口启动信息: Serial: 8250/16550 driver, 1 ports, IRQ sharing disabled ar933x-uart: ttyATH0 at MMIO 0x18020000 (irq = 11) is a AR933X UART console [ttyATH0] en

麦田守望者 1万+

OpenWRT环境下使用libmodbus实现Modbus传感器数据采集

本文详细介绍了在OpenWRT环境下使用libmodbus库实现Modbus传感器数据采集的完整方案。从硬件准备、软件配置到代码实现,逐步讲解如何将普通路由器改造为物联网网关,并分享实战中的常见问题排查和性能优化技巧,帮助开发者低成本构建智能监测系统。

weixin_29166013的博客 251

OpenWrt_x86-r2s-r4s-r5s-N1 UART通信:串口设备连接与数据传输

你是否在调试嵌入式设备时遇到过网络连接不稳定的问题?是否需要一种可靠的方式配置路由器或传输调试信息?UART(通用异步收发传输器,Universal Asynchronous Receiver/Transmitter)作为一种简单高效的串行通信协议,是嵌入式开发和设备调试的重要工具。本文将详细介绍如何在OpenWrt_x86-r2s-r4s-r5s-N1项目中实现UART通信,包括硬件连接、驱动配...

gitblog_00391的博客 957

OpenWrt开发第13篇:OpenWrt上读取带USB接口的GPS设备信息

本文介绍了在OpenWrt系统中为Raspberry Pi 4B开发板配置USB GPS模块的详细步骤。通过make menuconfig命令依次选择USB驱动(包括kmod-usb-core、kmod-usb-serial-pl2303等)、GPS工具(gpsd和gpsd-clients),完成编译后插入GPS设备即可识别为ttyUSB0接口。文章配有11张操作截图,完整展示了从驱动配置到设备识别的全过程。该内容来自付费专栏《Openwrt开发-基于Raspberry Pi 4B开发板》,禁止私自转载。

指尖动听知识库 252

openwrt中开发ser2tcpclient(串口转tcp实现高速透传)

作为Linux/openwrt系统下串口转以太网服务端使用非常广泛, 并且非常适合作为被动监听连接场景下的物联网设备使用,本文开发的ser2tcpclient就是将串口转为tcp协议为主的客户端,方便在局域网中实现高速的点对点通信。2.无线网络管理器不断尝试搜索,连接,认证,握手,通信数据加解密,通信虚拟时间同步,双向数据透传和监听无线信号。网络连接的认证,握手,同步,加解密,双向数据透传管理。使用mavlink协议状态机接收mcu上报的数据帧。无线信号的配对,连接,认证,状态监听的管理。

weixin_44470384的博客 1804

OpenWRT(九)DTS及串口

一、DTSDTS是Device Tree Source的缩写,它用来描述设备的硬件细节。说简单点就是开发板的配置文件。二、分析OpenWRT的dts文件以rt5350.dtsi作为分析//DTS格式有点类似Json/ { // "/"表示root节点 //#address-cells和

嵌入式软件开发交流 2万+

嵌入式Linux环境下基于Qt的串口通信实践指南

Qt是一个跨平台的C++应用程序框架,广泛用于开发图形用户界面应用程序以及无界面程序如工具和服务器。它提供了一整套工具和库,用于在多个桌面和移动操作系统上进行开发,包括但不限于Windows、macOS、Linux、iOS和Android。Qt SerialPort模块是Qt框架中的一个组件,专门用于处理串口通信。其架构设计为模块化,允许开发者简单地集成串口通信到他们的应用程序中。该模块提供了完整的API集合,从基础的串口打开、关闭到数据的读写,以及配置串口参数等。

weixin_42576410的博客 1109

openwrt 怎么进入串口_openwrt (linux)串口通信

1基本的串口通信程序。先读取内容,再将内容写回串口。#include#include#include#include#include#include#include#includemain(){intfd;inti;intlen;intn=0;charread_buf[256];charwrite_buf[256];structtermiosopt;fd=open("/dev/ttyAT...

weixin_39636245的博客 398

openwrt建立socket方法

建立socket是使用openwrt进行wifi下的开发的必经之路,这篇文档很好的解决了初学者的种种困惑

网页控制Openwrt串口

网页控制Openwrt串口 - 森亮号航海见识.mht

OPENWRT的串口初试

近来因为项目需要,第一次接触Linux系统的硬件,心里有点小激动。。。我使用的Microwrt是OPENWRT的微型版本,系统一样,但更加小巧,方便使用。         不过由于是第一次使用,光Helloworld就测试了很长时间。现在更卡在了串口问题上,在网上也没找到OPENWRT串口方面的资料(可能是我比较笨吧)。在高人的指导下,我更改了询问度娘的方式,开始搜索Linux串口方面的

飘飘花吹雪的专栏 4007

目前最新NIST随机数测试软件下载、安装、及使用教程

最近由于科研需要,在搞一些随机数的测试的事情,众所周知 随机数测试我们可以使用NIST的软件进行多大15项的随机测试,我也在网上查找了很多大牛的博客,但是都是年代久远,很多的链接现在都是物是人非,都是不能直接使用了,今天顺便抽点时间更新一下这个NIST软件的下载及使用。我们首先讲一下该软件的下载:1.我们直接取NIST的官网(https://csrc.nist.gov/)下载即可 ;链接如下:下载...

Miracle.Zhao的博客 3万+

嵌入式linux操作串口简单示例

嵌入式linux操作串口简单示例 这里以MT7688 openwrt系列为例 main.c #include <fcntl.h> #include <sys/stat.h> #include <unistd.h> #include <termios.h> #include <stdio.h> #include <stdlib.h> #include <string.h> //打开串口文件 static int open_u

锅锅的博客 707

Multisim14.3中FPGA接口电路设计:原理图项目应用

深入讲解在multisim14.3环境下构建FPGA接口电路的方法,结合原理图设计与项目实践,展现multisim14.3强大的电路仿真能力,提升数字系统开发效率。

weixin_42578963的博客 1155

NotImplementedError: Cannot copy out of meta tensor; no data! Please use torch.nn.Module.to_empty()

Please use torch.nn.Module.to_empty() instead of torch.nn.Module.to()输出(llama) (base) [root@localhost home]# nvidia-smi Unable to determine the device handle for GPU0000:09:00.0: Unknown Error。这是典型的“孤儿进程”,但它还是。(僵尸进程),占用 GPU 资源。如果进程仍然不消失,并且。,这意味着它的父进程是。

m0_61636632的博客 2096

OPENWRT串口收发测试详解

最近刚刚开始接触Linux内核编程,第一项就是串口编程,结果卡在这里了,卡了好久,后来发现问题其实挺简单的,只是没有想到,现在把代码放在下面,代码内有详细的注释,就不多做说明了,而我当时出问题的地方我也做了特殊说明,希望你们注意一下(实验环境是microwrt) /* *按照教程学习串口的编程 *网址1:http://blog.youkuaiyun.com/shanzhizi/article/detai

飘飘花吹雪的专栏 5922

【向量数据库】Milvus向量数据库 ① 从入门到实战

Milvus是专为海量高维向量设计的开源数据库,支持AI搜索、图像识别、推荐系统等场景。相比传统关系型数据库(如PostgreSQL),它更高效处理语义检索、非结构化数据存储,可毫秒级响应亿级向量查询。单机场景下,推荐配置8GB内存/32GB硬盘,支持FAISS/HNSW等索引算法,支持GPU加速。本文涵盖优快云专属部署教程(CentOS脚本/配置调优),提供避坑指南与扩展资源,并对比分析与传统数据库差异。适合算法工程师、AI开发人员快速上手,附官方下载与性能测试技巧,手把手教你搭建高效向量检索系统!

xiezhiyi007的专栏 1585

Redmi AX3000路由器OpenWrt实战:从零构建企业级网络平台

想要将家用路由器升级为功能强大的网络管理中枢吗?Redmi AX3000结合OpenWrt系统,能够为你打造一个堪比企业级路由器的网络环境。本文将深度解析如何通过OpenWrt系统释放Redmi AX3000的全部潜力。 [![OpenWrt官方标志](https://raw.gitcode.com/gh_mirrors/op/openwrt-redmi-ax3000/raw/6faaa1504

gitblog_00417的博客 720

Canoe Panel基础功能介绍

CANoe Panel 是 Vector CANoe 软件中用于设计图形化操作界面的功能模块。用户可以在面板上添加合适的控件,实时的改变信号或者变量的值

m0_56208280的博客 1948

Allan方差这个工具,怎么把它用的更顺手?(附Allan方差、动态Allan方差代码)

本文详细说明了Allan方差和动态Allan方差的计算过程,并通过递归运算和时间序列选择两种算法提高动态Allan方差的计算效率。文末提供了快速动态Allan方差计算代码。

victoryqian528的博客 371

串口工具的使用

1. 串口工具的选择与安装 a)  Linux 下通过 apt-get minicom进行安装 b)  MAC 下先安装软件包管理工具——brew,再安装minicom c)  Windows下推荐使用Putty             2. minicom 的使用             插上串口通信设备后,通过 ls/dev/*tty* 查看挂载的串口名,一般/dev/

fengzhejun的博客 1325

【音视频 ffmpeg 学习】 RTMP推流 mp4文件

3.当RTMP协议在互联网中传输数据的时候,消息会被拆分成更小的单元,称为消息块(Chunk)。1.RTMP(实时消息传输协议)是Adobe 公司开发的一个基于TCP的应用层协议。2.RTMP协议中基本的数据单元称为消息(Message)。下载地址:http://nginx.org/download。下载 rtmp模块 到nginx 模块下。安装nginx 和 rtmp模块。(1). linux 环境准备。下载nginx安装包。使用 vcl 播放流。

weixin_45397344的博客 2273
上一篇: openwrt disable serial console message when booting
下一篇: android UI显示java.util.LinkedHashMap.eldest()Ljava/util/Map$Entry;E
骑行的蜗牛
博客等级 码龄21年 107粉丝 86原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值