精华内容
下载资源
问答
  • 1. 控制台串口配置 stty -F /dev/ttyUSB0 raw speed 9600 min 0 time 10 2. 控制台发送数据 echo "hello world" > /dev/ttyUSB0 3. 控制台接收数据 cat /dev/ttyUSB0 4. 用脚本循环接收数据 stty -F /dev...

    1. 控制台串口配置

    stty -F /dev/ttyUSB0 raw speed 9600 min 0 time 10

    2. 控制台发送数据

    echo "hello world" > /dev/ttyUSB0

    3. 控制台接收数据

    cat /dev/ttyUSB0

    4. 用脚本循环接收数据

    stty -F /dev/ttyUSB0 raw speed 9600 min 0 time 10
    while [ 1 -eq 1 ]
    do
        cat /dev/ttyUSB0 >> "tmpFile"
        do something
    done

     

    展开全文
  • 一 设置串口参数串口 stty -F /dev/ttyS1 raw speed 115200 二 开始接收并显示串口数据 cat /dev/ttyS1 | hexdump -C 注:接收数据长度一定要大于16字节才显示,暂时没有找到解决方法 ...

    一 设置串口参数串口

    stty -F /dev/ttyS1 raw speed 115200
    

    二 开始接收并显示串口数据

    cat /dev/ttyS1 | hexdump -C
    

    注:接收数据长度一定要大于16字节才显示,暂时没有找到解决方法

    展开全文
  • Linux命令学习2

    2021-04-18 09:47:35
    Linux命令学习2 1、shell是什么 shell就是一个应用程序,我们可以通过键盘、串口给他发送命令,回车后它就会去执行这些命令。 以“ls -l”为例, 1⃣️接收键盘数据并回显 比如:我们使用键盘给shell程序发送...

    Linux命令学习2

    1、shell是什么

    shell就是一个应用程序,我们可以通过键盘、串口给他发送命令,回车后它就会去执行这些命令。

    以“ls -l”为例,

    1⃣️接收键盘数据并回显

    比如:我们使用键盘给shell程序发送字母l,它收到后会在屏幕上显示出来

    2⃣️解析输入的字符串,寻找程序,执行程序:

    当我们使用键盘给shell程序发送回车时,它就知道字符输入结束了

    a、shell会解析字符串,这些字符串用空格分为好几部分

    第一部分就是程序名、命令名

    其他部分是参数

    b、shell会去寻找该程序,去PATH环境变量所指示的位置去查找。

    可以指定路径/相对路径/shell就会直接去这些路径去查找到程序。比如echo指令查看环境变量PATH所有命令的路径

    echo $PATH

    /Library/Frameworks/Python.framework/Versions/3.7/bin:/opt/local/bin:

    /opt/local/sbin:/Applications/CMake.app/Contents/bin:/usr/local/bin:

    /usr/bin:/bin:/usr/sbin:/sbin:

    /Applications/VMware Fusion.app/Contents/Public:

    /Library/Apple/usr/bin

    c、找到程序后,会启动该程序,并传入参数

     

    2、怎么设置PATH

    2.1永久设置方法

    修改.bashrc文件

     

     

    展开全文
  • Linux串口编程

    千次阅读 2014-12-14 20:42:52
    Linux下,串口设备显示在/dev目录下,如果用的是USB转的串口,我们执行下面的命令: ... 在Linux操作系统下,一切皆文件,我们读写这两个文件就是利用串口接收和发送数据。可以用一根母对母的交叉线,将两个串

            在Linux下,串口设备显示在/dev目录下,如果用的是USB转的串口,我们执行下面的命令:

            ls /dev/ | grep tty

            就可以看到下面的信息:

            ttyUSB0
            ttyUSB1

            在Linux操作系统下,一切皆文件,我们读写这两个文件就是利用串口接收和发送数据。可以用一根母对母的交叉线,将两个串口连接起来,在一端发送数据,另外一端就能收到数据。我们可以用一个叫做XGCom的工具测试。我们在ttyUSB0这端发送数据,在ttyUSB1那边就可以收到数据。


            当然我们也可以用C++编程读写串口,代码如下:

    /*
     * SerialPort.h
     *
     *  Created on: 2014年11月3日
     *      Author: Richard
     */
    
    #ifndef SERIALPORT_H_
    #define SERIALPORT_H_
    
    #include <stdio.h>
    #include <fcntl.h>
    #include <pthread.h>
    
    //Message Format: head:2 bytes(0xFF,0xEE) | Command:1 byte | Data Size:1 byte  | Data:DataSize bytes
    static const int HeadLen = 2;
    static const int CommandLen = 1;
    static const int DataSizeLen = 1;
    
    class SerialPort
    {
    public:
        SerialPort();
        virtual ~SerialPort();
        bool Setup(const char *PortName, int BaudRate, int ByteSize, int Parity, int StopBit);
        bool Shutdown();
        bool CheckBuffer();
        void AdvanceBuffer(int Len);
        virtual void OnRecv();
    
    private:
        static void *ReadFunc(void *Param);
        int m_PortHandle;
        pthread_t m_ThreadID;
        unsigned char m_Buffer[1024];
        int m_BufferSize;
        bool m_ThreadRunning;
    };
    
    #endif /* SERIALPORT_H_ */
    
    /*
     * SerialPort.cpp
     *
     *  Created on: 2014年11月3日
     *      Author: jason
     */
    
    #include "SerialPort.h"
    
    #include <unistd.h>
    #include <string.h>
    #include <signal.h>
    #include <termios.h>
    
    SerialPort::SerialPort()
    {
        // TODO Auto-generated constructor stub
        m_PortHandle = -1;
        m_ThreadID = -1;
        memset(m_Buffer, 0, 1024);
        m_BufferSize = 0;
        m_ThreadRunning = true;
    }
    
    SerialPort::~SerialPort()
    {
        // TODO Auto-generated destructor stub
    }
    
    bool SerialPort::Setup(const char *PortName, int BaudRate, int ByteSize,
                   int Parity, int StopBit)
    {
        m_PortHandle = open(PortName, O_RDWR | O_NOCTTY | O_NDELAY);
        if (m_PortHandle < 0) {
            return false;
        }
    
        struct termios Opt;
    
        tcgetattr(m_PortHandle, &Opt);
        Opt.c_cflag |= (CLOCAL | CREAD);    //设置控制模式状态,本地连接,接收使能
        Opt.c_cflag &= ~CSIZE;                      //字符长度,设置数据位之前一定要屏掉这个位
        Opt.c_cflag &= ~CRTSCTS;                //无硬件流控
        Opt.c_cflag |= CS8;                             //8位数据长度
        Opt.c_cflag &= ~CSTOPB;                  //1位停止位
        Opt.c_iflag |= IGNPAR;                      //无奇偶检验位
        Opt.c_oflag = 0;                                    //输出模式
        Opt.c_lflag = 0;                                    //不激活终端模式
        cfsetospeed(&Opt, B9600);                   //设置波特率
        tcflush(m_PortHandle, TCIFLUSH);    //溢出数据可以接收,但不读
        tcsetattr(m_PortHandle, TCSANOW, &Opt);     //TCSANOW:所有改变立即生效
    
        pthread_create(&m_ThreadID, NULL, ReadFunc, this);
    
        return true;
    }
    
    bool SerialPort::Shutdown()
    {
        m_ThreadRunning = false;
    
        pthread_join(m_ThreadID, NULL);
    
        close(m_PortHandle);
        return true;
    }
    
    void SerialPort::AdvanceBuffer(int Len)
    {
        for (int i = Len; i < m_BufferSize; i++)
        {
            m_Buffer[i - Len] = m_Buffer[i];
        }
    
        for (int i = m_BufferSize - Len; i < m_BufferSize; i++)
        {
            m_Buffer[i] = 0;
        }
    
        m_BufferSize -= Len;
    }
    
    void SerialPort::OnRecv()
    {
        if (CheckBuffer())
        {
            int TotalLen = HeadLen + CommandLen + DataSizeLen + m_Buffer[3];
    
            char buff[200];
            memset(buff, 0, 200);
    
            int Index = sprintf(buff, "Received Data: ");
            for (int i = 0; i < TotalLen; i++)
            {
                Index += sprintf(buff + Index, "%.2X ", m_Buffer[i]);
            }
    
            sprintf(buff + Index, "\n");
            printf(buff);
    
            write(m_PortHandle, m_Buffer, TotalLen);
    
            AdvanceBuffer(TotalLen);
        }
    }
    
    bool SerialPort::CheckBuffer()
    {
        bool Ret = false;
    
    
        if (m_BufferSize >= HeadLen + CommandLen + DataSizeLen )
        {
            if (m_Buffer[0] == 0xFF && m_Buffer[1] == 0xEE)
            {
                int TotalLen = HeadLen + CommandLen + DataSizeLen + m_Buffer[3];
    
                if ((m_Buffer[TotalLen] == 0xFF || m_Buffer[TotalLen] == 0x00) &&
                    m_Buffer[TotalLen - 1] != 0x00)
                {
                    Ret = true;
                }
            }
        }
    
        return Ret;
    }
    
    void *SerialPort::ReadFunc(void *Param)
    {
        SerialPort *Port = (SerialPort *)Param;
    
        fd_set HandleSet;
        while(1)
        {
            FD_ZERO(&HandleSet);
            FD_SET(Port->m_PortHandle, &HandleSet);
    
            struct timeval tv;
            tv.tv_sec = 1;
            tv.tv_usec = 0;
    
            int Ret = select(Port->m_PortHandle + 1, &HandleSet, NULL, NULL, &tv);
            if (Ret < 0) {
                break;
            }
    
            if (FD_ISSET(Port->m_PortHandle, &HandleSet)) {
                int Len = read(Port->m_PortHandle, Port->m_Buffer + Port->m_BufferSize, 100);
                if (Len > 0) {
                       Port->m_BufferSize += Len;
                       Port->OnRecv();
                }
            }
    
            if (Port->m_ThreadRunning == false) {
                break;
            }
    
        }
    
        return NULL;
    }
    

         我们在main函数里面写下测试代码:

    /*
     * main.cpp
     *
     *  Created on: 2014年12月3日
     *      Author: Richard
     */
    
    #include "SerialPort.h"
    #include <unistd.h>
    
    int main(int argc, char **argv) {
        SerialPort Port;
        Port.Setup("/dev/ttyUSB1", 9600, 8, 0, 0);
    
        for (int i = 0;  i < 20; ++ i) {
            sleep(1);
        }
    
        Port.Shutdown();
        return 0;
    }
    
    

    然后以root权限执行:


            我们用XGCom打开/dev/ttyUSB0,然后发送0xFFEE0A09010203040506070809,在控制台那边就显示收到的数据。我们程序打开的是/dev/ttyUSB1,然后我们用收到的数据写/dev/ttyUSB1,这样XGCom那里也收到了数据。就是我们刚才发送的数据。

    展开全文
  • linux串口调试方法

    千次阅读 2020-03-24 19:28:01
    想要监听某个串口上是否接收数据,可以使用命令cat /dev/ttyX,如: #cat /dev/ttymxc1 �d T�d T�% H �% H �% H �% H �% H �\ �\ �\ �q �q ...
  • linux驱动开发:串口协议

    千次阅读 2016-11-13 13:14:26
    我们也可以通过串口来向内核传入命令,可以说它是开发人员常用的一个交互终端。当进行驱动开发时,总是需要用到串口来显示内核的打印信息。对于开发来说,很是重要。串口:属于串行通信的一种,与之对应的是并行通信...
  • 我现在有一块7444的开发板,想实现7444通过串口传输命令给7444开发板上的另一模块cc2530(zigbee中的协调器),然后发送给给第三方开发板(只要当前cc2530能接收命令就能直接发送数据到zigbee终端,以实现),然后...
  • 我现在有一块7444的开发板,想实现7444通过串口传输命令给7444开发板上的另一模块cc2530(zigbee中的协调器),然后发送给给第三方开发板(只要当前cc2530能接收命令就能直接发送数据到zigbee终端,以实现),然后...
  • 读取arm串口时读到了发送的数据

    千次阅读 2015-01-05 12:32:52
    但是在读取arm串口时,总会读到上位机发送的命令,可是我的arm程序中明明没有通过串口发送接收到的命令。百思不得其解,最终把问题的根源定位到串口的初始化。linux下的串口初始化可以设置的选项众多,很有可能是某...
  • 串口命令串口设备是物联网最常用的设备,嵌入式Linux串口命令为stty 查看串口参数的命令为:# stty -F /dev/ttySAC1 –a ...查看串口接收数据命令为:# cat /dev/ttySAC1 向串口发送...
  • Linux-ubuntu串口助手moserial1,安装串口助手2,打开串口助手3,数据接收发送 找到一个ubuntu下很好用的串口助手,非常好用,类似windows界面,这个软件就是moserial。 1,安装串口助手 打开终端:输入命令sudo apt ...
  • 9、具有串口数据记录功能,每天记录一个文件,可以加上时间标记,方便查看历史操作、历史数据; 10、可以采用脚本进行定时发送、循环发送、总线循访等操作流程; 11、Lua脚本支持发送字节到串口(Socket)、发送字符...
  • 嵌入式linux网关程序

    千次阅读 2017-06-14 00:04:39
    实现的功能:使用linuxC语言通过串口编程和Socket编程,以及解析从串口收到的数据,并且把数据封装成http格式通过post方式可以实现远程发送数据到服务器,并且能够接收服务器发送过来的命令。 关于HTTP请求报文格式...
  • 1.环境: ubuntu16.04 ...2.2 使用uboot自带的命令串口接收数据 loadb 将接收到的数据放到内存的某个位置 比如: loadb 0x42000000 2.3 进入kermit命令行 按下ctrl + \然后按下c 2.4 指定某个文...
  • 前几天在做一个某个板子向橘子派用串口发送命令并执行linux系统指令的需求,过程算是坎坷,踩了数个坑。 首先我用的是橘子派 one plus 板子,此板子的ttyS0是用来接收控制指令,个人猜测它将读到的每个字符都是作为...
  • 一、常用命令 pwd:显示路径 ls: 显示文件 cd:切换路径 cd …:返回上一级路径 mkdir:新建目录 touch:新建文件 ...1、接收键盘数据并回显; 2、解析输入的字符串,寻找对应程序,并执行对应程序 a
  • Linux下使用ppp配置3G模块

    千次阅读 2011-08-15 10:40:13
    最近在捣鼓3G模块,用的是上海...因为刚接触3G,一开始拿到模块时,只知道通过串口发AT命令来实现网络连接和数据发送接收。如,AT+NETOPEN,AT+TCPCONNECT,AT+TCPWRITE,AT+NETCLOSE。后来无意中,知道在linux下,有PP
  • 6.4.4 串口输出 6.5 编译Linux内核 6.5.1 代码成熟等级选项 6.5.2 通用的一些选项 6.5.3 和模块相关的选项 6.5.4 和块相关的选项 6.5.5 和系统类型相关的选项 6.5.6 和总线相关的选项 6.5.7 和内核特性相关...
  • 2.21 sed指令:利用script命令处理文本文件 2.22 sort指令:将文本文件内容加以排序 2.23 spell指令:拼字检查程序 2.24 tr指令:转换文件中的字符 2.25 uniq指令:检查文件中重复出现的行 2.26 vi指令:文字编辑器 ...
  • 数据源支持模拟数据(默认)、数据库采集、串口通信(需定制)、网络通信(需定制)、网络请求等,可自由设定每个子界面的采集间隔即数据刷新频率。 采用纯QWidget编写,亲测Qt4.6到Qt5.15任意版本,理论上支持后续...
  • 随后可以说出setup.ini配置文件中对应的词条,识别成功,则闪烁一次,回答“好的”,串口输出指定格式的数据帧“AT+??+END\r\n”,四路控制接口中指定接口执行相应命令; 有一个mp3歌曲播放范例,说“音乐”,则开始...
  • win7 超级终端

    2015-05-25 08:08:40
    它显示的是从串口接收到的字符。所以,嵌入式系统的相应程序应该完成的任务便是: 1、将自己的启动信息、过程信息主动发到运行有超级终端的主机; 2、将接收到的字符返回到主机,同时发送需要显示的字符(如命令...
  • 虚拟串口,可用于和FPGA直接数据的发送接收 支持JTAG, 可对FPGA上实现的SoC进行调试 通过MCO输出12Mhz时钟,作为FPGA的外部时钟 虚拟机镜像链接:https://pan.baidu.com/s/1qVSdwM7DnFbaS0xdqsPNrA提取码:6gn3 user: ...
  • 4、交叉编译器 arm-softfloat-linux-gnu-gcc-3.4.5 【实验步骤】 一、建立自己的平台类型 (1)解压文件 #tar jxvf u-boot-1.3.1.tar.bz2 (2)进入 U-Boot源码目录 #cd u-boot-1.3.1 (3)创建自己的开发板...

空空如也

空空如也

1 2
收藏数 35
精华内容 14
关键字:

linux命令接收串口数据

linux 订阅