精华内容
下载资源
问答
  • 两个串口同时使用的程序 使用正点原子的程序同时配置两个串口的程序: GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2...

    两个串口同时使用的程序

    使用正点原子的程序同时配置两个串口的程序:

    GPIO_InitTypeDef GPIO_InitStructure;	
    USART_InitTypeDef USART_InitStructure;	
    NVIC_InitTypeDef NVIC_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE);	RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
    	//USART1_TX 
    GPIOA.9  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;//PA.9
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;	 
     GPIO_Init(GPIOA, &GPIO_InitStructure);
     //USART1_RX	 
     GPIOA.10  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;   
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    //USART3_TX 
      GPIOB.10  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //PB.10 
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;	 
     GPIO_Init(GPIOB, &GPIO_InitStructure);   
       //USART3_RX	  
       GPIOB.11  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;//PB11  
       GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  
       GPIO_Init(GPIOB, &GPIO_InitStructure); 
        //Usart1 NVIC  
         NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;	
         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;	
         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;			
         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;				
         NVIC_Init(&NVIC_InitStructure);	  
          //Usart3 NVIC   
         NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;	
         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;	
         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;			
         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;				
         NVIC_Init(&NVIC_InitStructure);	
           //USART 
        USART_InitStructure.USART_BaudRate = bound;	
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;
       USART_InitStructure.USART_StopBits = USART_StopBits_1;	
       USART_InitStructure.USART_Parity = USART_Parity_No;	
       USART_InitStructure.USART_HardwareFlowControl = 
       USART_HardwareFlowControl_None;	USART_InitStructure.USART_Mode = 
       USART_Mode_Rx | USART_Mode_Tx;	
       USART_Init(USART1, &USART_InitStructure);  
        USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);  
        USART_Cmd(USART1, ENABLE);                 
        USART_Init(USART3, &USART_InitStructure); 
        USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);
        USART_Cmd(USART3, ENABLE);                  

    在配置的时候会发生一系列不起眼的错误,在我刚开始配置的时候就忘记串口3的时钟是APB1的了如果想用printf发送串口3发送的数据,那就要把串口3映射到printf上例如:
    int fputc(int ch, FILE *f){
    while((USART3->SR&0X40)==0);
    USART3->DR = (u8) ch;
    return ch;}
    以上增加串口的程序就大功告成了

    展开全文
  • 原来仿真软件产生的仿真数据由串口传到另一...我觉得就是仿真软件的数据传给一个TCP程序然后发出去,问题是两个程序之间交换数据怎么实现呢?要求实时性要好,共享磁盘和共享内存两方式时间上能差多少呢,求大侠点播
  • 【QT】编写一个简易的串口软件

    千次阅读 2018-11-23 17:39:05
    简述 QT学了一点发现学不进去,索性看看能不能直接撸个程序,于是就有了这个简易的串口软件… ...新建一个Qt项目 既然用到串口,那么我们就要在.pro里增加串口的库 QT += serialport # 串口库...

    简述

    QT学了一点发现学不进去,索性看看能不能直接撸个程序,于是就有了这个简易的串口软件…


    分析需求

    这是XCOM串口收发软件,以此为例

    在这里插入图片描述

    目的很明确:

    1. 串口列表要能显示所有已经接上PC上的COM
    2. 以我们的配置115200-8-1-N打开串口
    3. 能收、发

    新建一个Qt项目

    既然用到串口,那么我们就要在.pro里增加串口的库

    QT       += serialport  # 串口库
    

    以及mainwindow.h里添加头文件

    #include "qDebug.h"						  // 调试输出用
    #include <QtSerialPort/QSerialPort>         // 提供访问串口的功能
    #include <QtSerialPort/QSerialPortInfo>     // 提供系统中存在的串口的信息
    

    先拖控件把ui整出来

    在这里插入图片描述

    要注意的是,除了Label,其他的控件都记得命名呀,当然你用默认的也行…

    打开串口功能

    1. 选择串口功能

    我们要打开的串口,并不希望他是临时变量,我们用到的地方多呢!所以就在头文件先定义一个私有成员变量

    QSerialPort *serial;
    

    我们希望他在打开的时候就能加载所有的COM,所以我们在MainWindow里做这一步,创建窗口的时候就初始化COM列表,顺带着我们为serial开辟空间

    	// 我们在 ui->setupUi(this); 后面加入这些代码即可
    	
        // 添加所有串口到comboBox里(串口号的名字叫comboBox_COMx)
        foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
        {
            ui->comboBox_COMx->addItem(info.portName()); //+':'+info.description()
        }
        serial = new QSerialPort(this);
    

    我们用info去引用一个个的从串口的列表里取出COM的信息,如果有,我们就把他加入到【串口选择】的下拉栏里

    这个时候如果我们运行,就会发现【串口选择】里已有了PC上已插入的COM设备。

    2. 打开串口

    首先为按钮【打开串口】添加槽,然后在槽函数里编写我们的代码:
    打开了 总不能就一直开吧,所以我们做了一个开关,通过按钮上的字来判断是开还是关

     // 点击打开串口
        if(ui->pushButton_OpenSerial->text()==tr("打开串口"))
        {
            ui->pushButton_OpenSerial->setText(tr("关闭串口"));
        }
        else
        {
            ui->pushButton_OpenSerial->setText(tr("打开串口"));
            
        }
    

    这个时候我们运行,会发现打开串口的按钮已经可以正常工作了,点击打开,会显示关闭按钮。点击关闭,会显示打开按钮。

    按钮做完了,接着就要做功能了,如果要关闭,我们就可以调用serial->close();来关闭串口,如果要打开,我们就去打开,不过不知道能不能打开(可能别的程序正在使用),所以加个if判断一下。

        // 点击打开串口
        if(ui->pushButton_OpenSerial->text()==tr("打开串口"))
        {
            ui->pushButton_OpenSerial->setText(tr("关闭串口"));
            // 设置串口号(以当前显示的COM号为要打开的串口)
            serial->setPortName(ui->comboBox_COMx->currentText());
            // 以读写方式打开串口
            if(serial->open(QIODevice::ReadWrite))
            {
                qDebug() << "Open OK" << endl;
            }
            else
            {
                qDebug() << "Open Failed" << endl;
            }
        }
        else
        {
            ui->pushButton_OpenSerial->setText(tr("打开串口"));
            serial->close();
        }
    

    现在我们运行一下,看调试信息知道目前都是正确的。能正确开关串口。

    既然打开了串口,那么我们就配置一下串口的参数,因为只是一个简易的,所以就固定死串口为8-1-N,把一下代码放入成功打开串口的if内。

    //设置波特率
                serial->setBaudRate(115200);
                //设置数据位
                serial->setDataBits(QSerialPort::Data8);
                //设置校验位
                serial->setParity(QSerialPort::NoParity);
                //设置流控制
                serial->setFlowControl(QSerialPort::NoFlowControl);
                //设置停止位
                serial->setStopBits(QSerialPort::OneStop);
    

    这就完了吗?还没有,我们配置好了串口,如何进行接收呢?我们利用的是QT的信号与槽机制,当串口收到数据,就会发出readyRead()信号,所以我们利用这个信号,建立一个槽用来接收字符。

    先在头文件定义private slots函数 void recv_data(void);

    然后我们紧接着刚刚配置串口后面写上connect()来连接信号与槽

    connect(serial, SIGNAL(readyRead()), this, SLOT(recv_data()));
    

    这样我们点击打开信号与槽后,就会配置串口,激活信号与槽。

    现在万事俱备,只欠东风,我们继续写槽函数recv_data()来接收串口的数据

    仔细思考一下,平时在用串口软件的时候,有新的数据发来会自动出现在旧的数据后面。
    所以我们的做法是,先暂时保存显示的数据,然后把读到的数据加在后面,再清除显示的数据,把合成的数据再显示出来,就达到我们的效果了。

    void MainWindow::recv_data(void)
    {
        qDebug() << "Recv Data" << endl;
        QByteArray buf = serial->readAll();
        if(!buf.isEmpty())
        {
            QString str = ui->textEdit_ReceiveMsg->toPlainText();
            str+=tr(buf);
            ui->textEdit_ReceiveMsg->clear();
            ui->textEdit_ReceiveMsg->append(str);
        }
    }
    

    这个时候我们运行一下,打开串口,用单片机来发数据,实测已经可以正确显示在屏幕上了

    3. 发送数据

    对于发送数据,有了刚才的经验就比较简单了。
    为UI的【发送】键添加一个槽函数,当我们点击【发送】时,串口就发送我们写入的信息。
    所以我们在发送的槽函数内写入:

    	// 先读取我们写入的文本
    	QString str = ui->textEdit_SendMsg->toPlainText().toLatin1();
        qDebug() << str <<endl;
        // 写入
        serial->write(str.toLatin1());
    

    串口的write函数的参数有两个

    1. 第一个是char *类型,所以我们要str转char *,用的.toLatin1()来转换。
    2. 第二个是传入字符最大数量(我选择不设置所以没填)

    此时我们再运行,发现收发都正常了。

    附上我的完整代码(不包含UI,看控件的英文名字应该能对上图片)

    mainwindow.h
    
    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    #include <QtSerialPort/QSerialPort>         // 提供访问串口的功能
    #include <QtSerialPort/QSerialPortInfo>     // 提供系统中存在的串口的信息
    
    namespace Ui {
    class MainWindow;
    }
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        explicit MainWindow(QWidget *parent = 0);
        ~MainWindow();
    
    private slots:
        void on_pushButton_OpenSerial_clicked();
        void recv_data(void);
    
        void on_pushButton_SendMsg_clicked();
    
        void on_pushButton_ClearRecv_clicked();
    
    private:
        Ui::MainWindow *ui;
    
        QSerialPort *serial;
    };
    
    #endif // MAINWINDOW_H
    
    mainwindow.cpp
    
    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include "qDebug.h"
    #include "QObject"
    #include "QTimer"
    
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    
        // 初始化
        // 添加所有串口到comboBox里(串口号的名字叫comboBox_COMx)
        foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
        {
            ui->comboBox_COMx->addItem(info.portName()); //+':'+info.description()
        }
        serial = new QSerialPort(this);
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    void MainWindow::recv_data(void)
    {
        qDebug() << "Recv Data" << endl;
        QByteArray buf = serial->readAll();
        if(!buf.isEmpty())
        {
            QString str = ui->textEdit_ReceiveMsg->toPlainText();
            str+=tr(buf);
            ui->textEdit_ReceiveMsg->clear();
            ui->textEdit_ReceiveMsg->append(str);
        }
    }
    
    void MainWindow::on_pushButton_OpenSerial_clicked()
    {
        // 点击打开串口
        if(ui->pushButton_OpenSerial->text()==tr("打开串口"))
        {
            ui->pushButton_OpenSerial->setText(tr("关闭串口"));
            // 开辟空间
            //serial = new QSerialPort(this);
    
            // 设置串口号
            serial->setPortName(ui->comboBox_COMx->currentText());
    
            // 以读写方式打开串口
            if(serial->open(QIODevice::ReadWrite))
            {
                qDebug() << "Open OK" << endl;
                // 此处写死为 8-1-N
                //设置波特率
                serial->setBaudRate(115200);
                //设置数据位
                serial->setDataBits(QSerialPort::Data8);
                //设置校验位
                serial->setParity(QSerialPort::NoParity);
                //设置流控制
                serial->setFlowControl(QSerialPort::NoFlowControl);
                //设置停止位
                serial->setStopBits(QSerialPort::OneStop);
    
                connect(serial, SIGNAL(readyRead()), this, SLOT(recv_data()));
            }
            else
            {
                qDebug() << "Open Failed" << endl;
            }
    
        }
        else
        {
            ui->pushButton_OpenSerial->setText(tr("打开串口"));
            serial->close();
        }
    }
    
    void MainWindow::on_pushButton_SendMsg_clicked()
    {
        QString str = ui->textEdit_SendMsg->toPlainText().toLatin1();
        qDebug() << str <<endl;
        serial->write(str.toLatin1());
    }
    
    void MainWindow::on_pushButton_ClearRecv_clicked()
    {
        ui->textEdit_ReceiveMsg->clear();
    }
    

    收尾

    其实还有很多其他的功能可以加进去,我就多做了一个【清除接收】…
    甚至还有BUG…就是只有打开软件的时候才加载已有COM口,所以还要加上点击下拉框的时候就扫描更新一遍。
    此时的波特率、停止位啥的都是写死的,所以真正要做完的话,还需要把这些控件都做上
    还有等等等等…
    哈哈 主要功能做出来了,其他的往上添加就好了。
    打包exe教程 https://blog.csdn.net/syzdev/article/details/80860619
    over…



    展开全文
  • 这里创建COM1和COM2两个串口。 打开串口调试软件,选择刚刚添加的COM1,配置好波特率、停止位和校验方式。 确认配置后点击“打开串口”。 开启一个新的串口调试软件的实例,选择另一个串口COM2,将波特...
    1. 打开VSPD虚拟串口软件。
    2. 点击软件右下角的Add Virtual Paire按钮,添加一对串口,因为是虚拟串口所以需要一对,相当于一个串口的两个终点,一个串口的发送会让另一个串口收到。这里创建COM1和COM2两个串口。
    3. 打开串口调试软件,选择刚刚添加的COM1,配置好波特率、停止位和校验方式。
    4. 确认配置后点击“打开串口”。
    5. 开启一个新的串口调试软件的实例,选择另一个串口COM2,将波特率、校验方式、停止位等配置和COM1一致,完成后点击“打开串口”。
    6. 配置完毕,这是可以通信了,点击发送数据,另一个虚拟串口就可以接收了。
    展开全文
  • 、流程简述 程序可以参考: https://blog.csdn.net/colcloud/article/details/42454839 这是我参考后简化的版本: https://github.com/Agwave/SerialThread/blob/master/SerialThread.py 下面利用虚拟串口软件和...

    一、流程简述

    程序可以参考:
    https://blog.csdn.net/colcloud/article/details/42454839

    这是我参考后简化的版本:
    https://github.com/Agwave/SerialThread/blob/master/SerialThread.py

    下面利用虚拟串口软件和串口通信助手软件对程序进行测试。

    利用虚拟串口软件虚拟出一对相连的串口COM1和COM2。用程序打开串口COM1,用串口通信助手打开COM2。然后就可以进行收发文字了。

    测试结果如下:(黑体字为发出的文字,绿体字为接收到的文字)
    在这里插入图片描述
    在这里插入图片描述

    二、具体流程

    计算机的串口数量有限,有时可以利用虚拟串口软件得到虚拟串口。

    虚拟串口软件可以虚拟出一对相连的虚拟串口。

    串口通信助手有打开串口等许多功能,对于调试程序十分有用。

    虚拟串口软件我用的是VSPD。串口通信助手用的是UartAsssist。

    下载和安装比较简单。两个安装完成后。

    1. 打开VSPD(如下)
    在这里插入图片描述
    2. 点击Add pair添加一对串口(记住串口名)

    3. 打开 串口通信助手(如下)
    在这里插入图片描述
    4. 在红色框中,串口号选择前面的其中一个虚拟串口号,然后点击打开(需要时可调整参数)

    5. 修改程序中的串口号为另一个虚拟串口号(如下),运行程序
    在这里插入图片描述
    即可互相收发文字。

    展开全文
  • 虚拟串口软件VSPM使用手册

    千次阅读 2019-04-04 17:16:06
    这里介绍的虚拟串口软件为VSPM。 VSPM 虚拟串口软件可以将TCP/IP 连接映射成本机的...下面将详细介绍该软件使用方法。 (1)首先,下载并且安装VSPM。 (2)双击应用程序图标启动VSPM,若是第次运行则会弹...
  • 因为要labview做一个数据采集,因此才刚刚接触这一方面,就分享出来最基础的labview接收串口信息。...左边是我已经添加上的两个串口,之后需要串口助手和自己写的VI程序连上这两个串口来进行调试。 2、XC
  • 硬件:两个主机之间通过串口线相连,中间有个串口转换器 软件:已经打开COM1端口 目标:两台pc之间可以通过串口通信 要求:串口线应该交叉线,非直连线。 直通一般用于延长PC与设备,将2、3、5分别连接2、...
  • 开源一个串口上位机源码

    万次阅读 多人点赞 2018-05-29 14:18:21
    是杰杰之前做的一个参赛小作品其实在做这个恒温控制系统项目的时候,师弟就问我,什么是上位机。。。。。可能很多师弟师妹都没一个大概的概念。现在,就来看下什么是上位机: 上位机是指可以直接发出操控命令的...
  • 为解决计算机的物理串口个数的限制,在进行串口调试实验时,应尽可能采用虚拟串口软件。VSPD(Virtual Serial Ports Driver)虚拟串口软件是由Eltima软件公司设计的虚拟串口软件使用方便且稳定。同时,使用虚拟...
  • 串口软件流控

    千次阅读 2015-02-12 15:26:32
    最近在弄linux下的串口配置,因此了解到流控这东东。开始不太清楚怎么弄,通过四面八方的收集资料,验证,终于明白怎么处理了。在此做记录: /** *@brief 设置串口通信速率 *@param fd 类型 int 打开串口的文件...
  • 使用软件虚拟串口

    千次阅读 2010-05-26 20:11:00
    如果除台计算机之外,不具备任何额外的硬件条件,则...我们的目的是在台计算机上创建两个串口,达到双端口互联方案的效果。在第次运行VSPM时,要求选择工作方式。这里选择"UDP广播模式",如图3 4所示。 图3 4 
  • 虚拟串口软件串口调试助手的简单使用

    万次阅读 多人点赞 2015-11-14 20:24:36
    为解决计算机的物理串口个数的限制,在进行串口调试实验时,应尽可能采用虚拟串口软件。VSPD(Virtual Serial Ports Driver)虚拟串口软件是由Eltima软件公司设计的虚拟串口软件使用方便且稳定。同时,使用虚拟...
  • C#做一个串口调试助手

    千次阅读 多人点赞 2020-05-06 20:46:31
    C#做一个串口调试助手 新建工程 选择visual c#---->窗体应用程序 布局串口配置页面 GroupBox 拖拽上去6个Label,位置和显示如下 拖拽上去5个ComboBox,1个Button,位置如下 设置Button的显示改为打开串口 添加...
  • 怎么样虚拟化一个串口

    千次阅读 2017-01-10 14:56:58
    为解决计算机的物理串口个数的限制,在进行串口调试实验时,应尽可能采用虚拟串口软件。VSPD(Virtual Serial Ports Driver)虚拟串口软件是由Eltima软件公司设计的虚拟串口软件使用方便且稳定。同时,使用虚拟...
  • 鉴于前天的程序只能在两台电脑之间进行通信,这里给出一个电脑两个不同串口间通信的开发方案 参照上一篇文章进行开发,http://blog.csdn.net/kuangdang178/article/details/8878042 1、设计好这个程序的框架如下图...
  • 串口波形显示软件SerialChart的使用

    千次阅读 2020-05-28 09:30:44
    单片机开发过程中串口是最常用的调试手段,可以将代码运行... 今天推荐串口波形显示软件SerialChart,官方下载地址为:http://www.starlino.com/serialchart 打开网页后,点击红圈位置,直接下载就行。 ...
  • 一串口转发软件

    2017-09-18 13:05:44
    两个设备A、B没法直接连接通讯,准备设备A连接到PC的com1,B连接到PC的com2,软件把com1、com2连接起来,这种工具找了半天没找到,谁能提供一个,谢谢[img=...[/img]
  • 通过信号播放软件发送到一个虚拟串口,PC版的导航通过读取串口的值(两串口互联),回放行走过程。 各种无奈: PC运用VSPM2.56虚拟出两个相互连接的串口(之前的是VSPD XP 5,但是这个咚咚好像是要注册的,所以...
  • 公司采购了一个KR3001的恒流直流电源给阀直接供电,使用了控制器从与阀接的压力传感器处读取数据。 原来是分成了两个软件在两台电脑上调试、发布。 时间长了、挺麻烦,就想在一台机器上实现,但是一般来说一台机器...
  • 虚拟串口软件VSPM

    千次阅读 2013-06-21 11:06:24
    虚拟串口软件VSPM 这里介绍的虚拟串口软件为 VSPM (下载地址: http://www.dbank.com/download.action?t=40&k=MTQ1MDE2Njk=&pcode=LCw2NDc2MjksNjQ3NjI5&rnd=2527)。  VSPM 虚拟串口软件可以将TCP/IP ...
  • 虚拟串口软件VSPM使用

    千次阅读 2012-08-31 17:10:39
    转载:...  这里介绍的虚拟串口软件为 VSPM (下载地址: http://www.dbank.com/download.action?t=40&k=MTQ1MDE2Njk=&pcode=LCw2NDc2MjksNjQ3NjI5&rnd=2527)。  VSPM 虚拟串口软件可以将T
  • 关于HC-05蓝牙模块 ...当主从模式两个蓝牙模块配对成功后,可以简单的,更改为无线的蓝牙,让您设备或者产品更高级,更时尚。 可以很容易的使用提供的蓝牙手机软件 工作模式 HC-05嵌入式蓝牙串口...
  • Linux串口调试软件serials

    千次阅读 2015-09-07 20:25:15
    本人经常使用Linux,但是一直没找到一个好用的串口调试软件,虽说Linux有强大的minicom,但是本人还是喜欢图形界面软件。而此类软件虽说很多,但有一个通病,必须在root权限下运行。如此一来,好好的一个图形界面...
  • 在一台机器上运行两个CP210X的USB的设备的时候,会出现两个设备的相互冲突,插入或者拔出之后,连个的都是一个com口。 目前我测试的已经可以使用的方法如下: 1.安装驱动,从官方网站上下载了最新的驱动。 1. ...
  • 、下载安装XCOM串口调试助手 下载地址 XCOM的详细讲解 另外需要安装C340的驱动 正点原子提供的驱动win10系统不支持,安装了几次都失败了,然后我上论坛找的驱动安装成功了 驱动地址 安装过程比较简单,...
  • Delphi使用spcomm实现串口通信 基础知识及(两个实例) Posted on 2010-08-12 17:06 beeone 阅读(6311) 评论(3) 编辑 收藏 心得 如果你已经会使用SPCOMM且出现10个以上的串口问题 请改一下串口名 ...
  • 要点如下:两个51单片机,两机的串口交叉连线,双机互发数据;发送方大约每隔 1s 发送一个字节,内容递增(或递减);接收方采用两位数据显示器显示收到的数据。网友实验时,显示函数应该根据自己的设备进行改写。...
  • Python 利用PyQt5写一个简易的串口助手

    千次阅读 多人点赞 2019-08-19 15:32:13
    学习单片机,STM32好长时间了,也做了一些项目,一直想利用上位机实现电脑与单片机之间的传输数据,利用串口助手是最直接的通信方式,但串口助手不适合做上位机,如果会写串口助手的软件,基本能写自己写一个上位机...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 54,331
精华内容 21,732
关键字:

一个软件用两个串口