精华内容
下载资源
问答
  • 虚拟串口调试助手
    千次阅读
    2021-07-25 16:10:24

    大家好,我是KookNut39,在CSDN写文,分享一些自己认为在学习过程中比较重要的东西,致力于帮助初学者入门,希望可以帮助你进步。最近在更新C/C++方面的知识,感兴趣的欢迎关注博主,可以去专栏查看之前的文章,希望未来能和大家共同探讨技术。

    由于某项目需要,需要写一个处理串口数据的程序,之前也没有用过Qt,所以这次打算用Qt实现这个功能。

    有一说一,Qt相比于MFC真的是方便快捷了很多,在开发界面的方面还是很强大的。
    话不多说,先上咱们最终实现的效果图。界面简单,如果大家在某些地方需要通过串口获取数据之后做处理的话,可以考虑使用。
    通过点击按钮从串口读取数据并展现到文本框中。
    在这里插入图片描述
    功能是能够实现获取串口数据最简单的一些基础功能,肯定是不能和网上下载的很多成熟的软件比较,就比如微软自带的串口调试助手,如下图:
    除了能够实现读取数据的同时,还能够设置额外输出方式等等算是额外辅助的功能吧。
    在这里插入图片描述
    实现的步骤按照如下几个步骤展开讲解:
    对于串口的读取,Qt中自带了两个类供我们使用,分别是QtSerialPort、QserialPortInfo,基础对串口的操作这两个类都是提供了的。兄弟们如果在这个基础上加功能可以查询一下这两个类,根据这两个类里面自带的函数扩充你想要的功能。

    1、首先就是在.pro文件中加上serialport,熟悉Qt的小伙伴一定都知道在Qt中使用什么额外的功能呀什么的,就要在这个部分写上这句话。

    QT       += core gui serialport
    

    2、对界面上的一些空间初始化
    对于界面中控件的一些命名什么的,大家可以看下面的代码,通过变量名大家可以很容易得到控件的命名信息。这里就不详细给兄弟们展示了。

    	//设置串口初始化状态
        ReadSerialPort = NULL;
        //设置界面初始的状态
        ui->ReadBtn->setEnabled(true);
        ui->StopReadBtn->setEnabled(false);
        //初始化串口设置部分
        ui->ChooseComComboBox->clear();
        ui->ChooseBoudComboBox->clear();
        ui->ChooseDataBitsComboBox->clear();
        ui->ChooseParityComboBox->clear();
        ui->ChooseStopComboBox->clear();
        QStringList ChooseComList;
        QStringList ChooseBoudList;
        QStringList ChooseDataBitsList;
        QStringList ChooseParityList;
        QStringList ChooseStopList;
        //获取电脑连接的串口信息供选择
        foreach(const QSerialPortInfo &info,QSerialPortInfo::availablePorts())
        {
            ChooseComList << info.portName();
        }
        ui->ChooseComComboBox->addItems(ChooseComList);
        ui->ChooseComComboBox->setCurrentIndex(0);
        //波特率的选择
        ChooseBoudList <<"1200" <<"2400" <<"4800" <<"9600" <<"19200" <<"38400" <<"57600" <<"115200";
        ui->ChooseBoudComboBox->addItems(ChooseBoudList);
        ui->ChooseBoudComboBox->setCurrentIndex(0);
        //数据位的选择
        ChooseDataBitsList <<"5" <<"6"<<"7"<<"8"<<"UnknownDataBits";
        ui->ChooseDataBitsComboBox->addItems(ChooseDataBitsList);
        ui->ChooseDataBitsComboBox->setCurrentIndex(0);
        //校验位的选择
        ChooseParityList <<"NoParity" <<"EvenParity" <<"OddParity" <<"UnknownParity";
        ui->ChooseParityComboBox->addItems(ChooseParityList);
        ui->ChooseParityComboBox->setCurrentIndex(0);
        //停止位的选择
        ChooseStopList  <<"1" <<"2" <<"无";
        ui->ChooseStopComboBox->addItems(ChooseStopList);
    	ui->ChooseStopComboBox->setCurrentIndex(0);
    
    

    3、连接串口功能的实现。这也是最核心的部分:

    	//点击按钮之后把状态改变了
        ui->ReadBtn->setEnabled(false);
        ui->StopReadBtn->setEnabled(true);
        //每次点击按钮之后创建一个对象,这也是解决了之前读取空值的问题
        ReadSerialPort = new QSerialPort();
        if(ReadSerialPort->isOpen())//如果串口已经打开了 先给他关闭了
        {
            ReadSerialPort->clear();
            ReadSerialPort->close();
        }
        //根据下拉框选取串口
        QString ChoosedPortName=ui->ChooseComComboBox->currentText();
        ReadSerialPort->setPortName(ChoosedPortName);//当前选择的串口名字
    
        if(ReadSerialPort->open(QIODevice::ReadWrite))//用ReadWrite 的模式尝试打开串口
        {
            ReadSerialPort->setDataTerminalReady(true);
            //根据下拉框选择波特率
            qint32 BaudrateIndex = ui->ChooseBoudComboBox->currentIndex();
            switch (BaudrateIndex) {
            case 0:
                ReadSerialPort->setBaudRate(QSerialPort::Baud1200);
                break;
            case 1:
                ReadSerialPort->setBaudRate(QSerialPort::Baud2400);
                break;
            case 2:
                ReadSerialPort->setBaudRate(QSerialPort::Baud4800);
                break;
            case 3:
                ReadSerialPort->setBaudRate(QSerialPort::Baud9600);
                break;
            case 4:
                ReadSerialPort->setBaudRate(QSerialPort::Baud19200);
                break;
            case 5:
                ReadSerialPort->setBaudRate(QSerialPort::Baud38400);
                break;
            case 6:
                ReadSerialPort->setBaudRate(QSerialPort::Baud57600);
                break;
            case 7:
                ReadSerialPort->setBaudRate(QSerialPort::Baud115200);
                break;
            default:
                ReadSerialPort->setBaudRate(QSerialPort::UnknownBaud);
                break;
            }
            //根据下拉框选择数据位
            qint32 DatabitsIndex=ui->ChooseDataBitsComboBox->currentIndex();
            switch (DatabitsIndex) {
            case 0:
                ReadSerialPort->setDataBits(QSerialPort::Data5);
                break;
            case 1:
                ReadSerialPort->setDataBits(QSerialPort::Data6);
                break;
            case 2:
                ReadSerialPort->setDataBits(QSerialPort::Data7);
                break;
            case 3:
                ReadSerialPort->setDataBits(QSerialPort::Data8);
                break;
            default:
                ReadSerialPort->setDataBits(QSerialPort::UnknownDataBits);
                break;
            }
            //根据下拉框选择校验位
            qint32 ParityIndex=ui->ChooseParityComboBox->currentIndex();
            switch (ParityIndex) {
            case 0:
                ReadSerialPort->setParity(QSerialPort::NoParity);
                break;
            case 1:
                ReadSerialPort->setParity(QSerialPort::EvenParity);
                break;
            case 2:
                ReadSerialPort->setParity(QSerialPort::OddParity);
                break;
            default:
                ReadSerialPort->setParity(QSerialPort::UnknownParity);
                break;
            }
            //根据下拉框选择停止位
            qint32 StopbitIndex=ui->ChooseStopComboBox->currentIndex();
            switch (StopbitIndex) {
            case 0:
                ReadSerialPort->setStopBits(QSerialPort::OneStop);
                break;
            case 1:
                ReadSerialPort->setStopBits(QSerialPort::TwoStop);
                break;
            default:
                ReadSerialPort->setStopBits(QSerialPort::UnknownStopBits);
                break;
            }
            //实例 误删
            //ReadSerialPort->setBaudRate(QSerialPort::Baud115200);//设置波特率和读写方向
            //ReadSerialPort->setDataBits(QSerialPort::Data8);		//数据位为8位
            //ReadSerialPort->setFlowControl(QSerialPort::NoFlowControl);//无流控制
            //ReadSerialPort->setParity(QSerialPort::NoParity);	//奇校验位
            //ReadSerialPort->setStopBits(QSerialPort::OneStop); //两位停止位
    
            ReadSerialPort->clearError();
            ReadSerialPort->clear();
    
            connect(ReadSerialPort,&QSerialPort::readyRead,this,&Read::receiveInfo);
    
    

    这里说一下之前自己遇到的一个问题吧,原本我的QT版本是5.13.0,当时代码已经调整过了,但是无论怎样都无法获取到串口传过来的值,这个bug改了整整一天,后来发现是QT这个版本的问题,后来把这个版本卸载然后装上了5.14.2,问题直接解决。
    当然这里要提一下还有另外一个方式可以解决这个问题,就是通过添加waitForReadyRead(30000);这个方式倒是也解决了读取的问题,但是后面遇到了其他的的问题,可能是因为我当时想着使用线程的原因,导致的程序崩溃的问题,但是具体是不是因为这句话我就不知道了,但是换了版本之前的问题迎刃而解。我这里还是建议大家直接安装一个没有问题的版本吧,后面会省去很多的事情。

    4、输出数据实现

    void Read::receiveInfo()
    {
        //读取串口的数据并且把数据转换成字符串类型
    	QByteArray info = ReadSerialPort->readAll();
    	qDebug() << info;
    	ui->GpsOutputTextEdit->append(info);
    }
    
    
    更多相关内容
  • 最近贮备串口程序开发,笔记本没有串口。搜到虚拟串口工具感觉还不错,调试助手找了好几个都不能配合使用,找到这个就分享了。
  • VSPD虚拟串口调试助手

    2020-12-25 13:35:52
    VSPD虚拟串口调试助手
  • 虚拟串口调试助手

    2013-03-13 09:34:18
    虚拟串口调试助手,可以虚拟出串口用来监听网络TCP或UDP传输的数据,具有自动连接功能。
  • 虚拟串口(虚拟 COM 端口),应该很多人都知道,也就是一种模拟物理串行接口的 软件 。... 以前的电脑,基本标配都包含一个串口。但现在的电脑,基本都没有配置串口了。...串口调试助手软件有很多,随便选一个自己

    虚拟串口(虚拟 COM 端口),应该很多人都知道,也就是一种模拟物理串行接口的 软件 它完全复制了硬件 COM 接口的功能,并且将被操作系统和串行应用程序识别为真实端口。

    以前的电脑,基本标配都包含一个串口。但现在的电脑,基本都没有配置串口了。如果要使用串口的功能,基本就要用一个USB转串口的硬件模块。

    现实生活中,虚拟串口用处很多。比如:你的应用程序检测串行输入数据的时候,方便调试。还比如:多个有应用程序之间使用串口通信。

    虚拟串口软件推荐:强大的虚拟串口软件


    串口调试助手软件有很多,随便选一个自己习惯的即可。


    演示一下串口模拟器和串口调试助手使用

    打开VSPD,添加虚拟串口

    在这里插入图片描述

    打开串口调试助手,设置好必要的参数

    https://raw.githubusercontent.com/xkyvvv/blogpic/main/pic1/image-20210801141400770.png
    https://raw.githubusercontent.com/xkyvvv/blogpic/main/pic1/image-20210801141420257.png

    打开两个串口,在其中一个串口中发送区写入消息,点击发送,在另一个串口的接收区可以看到我们发送的消息

    在这里插入图片描述

    两个串口的连接示意图如下图所示

    image-20210801143004531

    数据传输路线有两条

    • 串口调试助手1–>COM1–>COM2–>串口调试助手2
    • 串口调试助手2–>COM2–>COM1–>串口调试助手1

    在Windows下使用C语言调用串口,接收发送数据

    https://raw.githubusercontent.com/xkyvvv/blogpic/main/pic1/image-20210801144941433.png

    C语言程序测试接收代码如下:

    #include<stdio.h>
    #include<windows.h>
     
    int main()
    {
    	FILE *fp;
    	if ((fp = fopen("com1", "r")) == NULL)
    	{
    		printf("cannot open com!\n");
    	}
    	else
    		printf("open com successful!\n");
    	char str;
    	while (1)
    	{
    		fscanf(fp, "%c", &str);
    		printf("%c ", str);
    		Sleep(100);
    	}
    	return 0;
    }
    

    运行

    https://raw.githubusercontent.com/xkyvvv/blogpic/main/pic1/image-20210801150720719.png

    因为这个程序打开的是COM1,因此我么在COM2的串口调试助手中,在发送区输入要发送的值,点击发送
    在这里插入图片描述
    这是可以在运行串口看到接收并且打印出我们发送的值

    https://raw.githubusercontent.com/xkyvvv/blogpic/main/pic1/image-20210801150945647.png

    我们继续测试几次

    image-20210801151033146

    https://raw.githubusercontent.com/xkyvvv/blogpic/main/pic1/image-20210801151046652.png

    C语言程序测试发送代码如下:

    #include <Windows.h>
    #include <stdio.h>
     
    HANDLE hCom;
     
    int main(void)
    {
    	hCom = CreateFile(TEXT("COM1"),//COM1口
    		GENERIC_READ, //允许读
    		0, //指定共享属性,由于串口不能共享,所以该参数必须为0
    		NULL,
    		OPEN_EXISTING, //打开而不是创建
     
    		FILE_ATTRIBUTE_NORMAL, //属性描述,该值为FILE_FLAG_OVERLAPPED,表示使用异步I/O,该参数为0,表示同步I/O操作
    		NULL);
     
    	if (hCom == INVALID_HANDLE_VALUE)
    	{
    		printf("打开COM失败!\n");
    		return FALSE;
    	}
    	else
    	{
    		printf("COM打开成功!\n");
    	}
     
    	SetupComm(hCom, 1024, 1024); //输入缓冲区和输出缓冲区的大小都是1024
     
    	/*********************************超时设置**************************************/
    	COMMTIMEOUTS TimeOuts;
    	//设定读超时
    	TimeOuts.ReadIntervalTimeout = MAXDWORD;//读间隔超时
    	TimeOuts.ReadTotalTimeoutMultiplier = 0;//读时间系数
    	TimeOuts.ReadTotalTimeoutConstant = 0;//读时间常量
    	//设定写超时
    	TimeOuts.WriteTotalTimeoutMultiplier = 1;//写时间系数
    	TimeOuts.WriteTotalTimeoutConstant = 1;//写时间常量
    	SetCommTimeouts(hCom, &TimeOuts); //设置超时
     
    	/*****************************************配置串口***************************/
    	DCB dcb;
    	GetCommState(hCom, &dcb);
    	dcb.BaudRate = 9600; //波特率为9600
    	dcb.ByteSize = 8; //每个字节有8位
    	dcb.Parity = NOPARITY; //无奇偶校验位
    	dcb.StopBits = ONESTOPBIT; //一个停止位
    	SetCommState(hCom, &dcb);
     
    	DWORD wCount;//实际读取的字节数
    	bool bReadStat;
     
    	char str[2] = { 0 };
     
    	while (1)
    	{
    		int i;
        	unsigned char sendData[256] = {0};//写入串口缓存区的数组
        	for(i=0; i<16; i++)
        	{
            	sendData[i] = i;
        	}
    
        	DWORD dwWriteLen = 0;
        	if(!WriteFile(hCom, sendData, 16, &dwWriteLen, NULL))
        	{
            	printf("串口发送数据失败!\n");
        	}
    		Sleep(1000);
    	}
     
    	CloseHandle(hCom);
    }
    

    也可以使用下面这段代码

    #include<stdio.h>
    #include<windows.h>
     
    int main()
    {
    	FILE *fp;
    	if ((fp = fopen("com1", "r")) == NULL)
    	{
    		printf("cannot open com!\n");
    	}
    	else
    		printf("open com successful!\n");
    		
    	char str = 'x';
     
    	while (1)
    	{
    		fprintf(fp, "%s", &str);
    		Sleep(1000);
    	}
    	return 0;
    }
    

    不过不知道为什么,这两段代码都可以正常运行,但是COM2的串口调试助手那接收不到数据。
    最近发现了是哪里出了问题,串口参数不一致导致的问题。
    只需要将代码改成如下

    #include <Windows.h>
    #include <stdio.h>
     
    HANDLE hCom;
     
    int main(void)
    {
    	hCom = CreateFile(TEXT("COM1"),//COM1口
    		GENERIC_READ | GENERIC_WRITE, //允许读和写 
    		0, //指定共享属性,由于串口不能共享,所以该参数必须为0
    		NULL,
    		OPEN_EXISTING, //打开而不是创建
     
    		FILE_ATTRIBUTE_NORMAL, //属性描述,该值为FILE_FLAG_OVERLAPPED,表示使用异步I/O,该参数为0,表示同步I/O操作
    		NULL);
     
    	if (hCom == INVALID_HANDLE_VALUE)
    	{
    		printf("打开COM失败!\n");
    		return FALSE;
    	}
    	else
    	{
    		printf("COM打开成功!\n");
    	}
     
    	SetupComm(hCom, 1024, 1024); //输入缓冲区和输出缓冲区的大小都是1024
     
    	/*********************************超时设置**************************************/
    	COMMTIMEOUTS TimeOuts;
    	//设定读超时
    	TimeOuts.ReadIntervalTimeout = MAXDWORD;//读间隔超时
    	TimeOuts.ReadTotalTimeoutMultiplier = 0;//读时间系数
    	TimeOuts.ReadTotalTimeoutConstant = 0;//读时间常量
    	//设定写超时
    	TimeOuts.WriteTotalTimeoutMultiplier = 1;//写时间系数
    	TimeOuts.WriteTotalTimeoutConstant = 1;//写时间常量
    	SetCommTimeouts(hCom, &TimeOuts); //设置超时
     
    	/*****************************************配置串口***************************/
    	DCB dcb;
    	GetCommState(hCom, &dcb);
    	dcb.BaudRate = 115200; //波特率为115200
    	dcb.ByteSize = 8; //每个字节有8位
    	dcb.Parity = NOPARITY; //无奇偶校验位
    	dcb.StopBits = ONESTOPBIT; //一个停止位
    	SetCommState(hCom, &dcb);
     
    	DWORD wCount;//实际读取的字节数
    	bool bReadStat;
     
    	char str[2] = { 0 };
     
    	while (1)
    	{
    		int i;
        	unsigned char sendData[256] = {0};//写入串口缓存区的数组
        	for(i=0; i<16; i++)
        	{
            	sendData[i] = i;
        	}
    
        	DWORD dwWriteLen = 0;
        	if(!WriteFile(hCom, sendData, 16, &dwWriteLen, NULL))
        	{
            	printf("串口发送数据失败!\n");
        	}
    		Sleep(1000);
    	}
     
    	CloseHandle(hCom);
    }
    

    运行之后,发现在串口2的调试助手处,显示的接收数据在增加,

    在这里插入图片描述
    在这里插入图片描述

    但是却不会在界面上显示出来,这个不知道是啥原因。

    展开全文
  • 虚拟串口串口调试助手的使用

    千次阅读 2021-02-23 13:13:35
    一、用到的软件: proteus VSPD: VSPD是一款本地虚拟串口的...测试创建的虚拟串口对是否能正常进行通信,下面以【9600波特率,8位数据位,1位停止位,无校验,无流控】进行测试,需要的波特率只需要在串口助手中修改即

    一、用到的软件:

    1. proteus
    2. VSPD:
      VSPD是一款本地虚拟串口的软件。 可以虚拟2个串口然后连接起来实现自发自收调试,让你的程序读一个串口,另外一个串口你就用来串口调试工具。

    二、串口通信步骤

    1. 打开VSPD”
      点击“Add pair添加串口1和串口2
      在这里插入图片描述
      点击“COM1和COM2”都设置如图,点击“Set standard pinout”
      2 .测试创建的虚拟串口对是否能正常进行通信,下面以【9600波特率,8位数据位,1位停止位,无校验,无流控】进行测试,需要的波特率只需要在串口助手中修改即可,和平常的串口无异;经过测试,确定虚拟串口通信正常,结果如下图:在这里插入图片描述
      注意:一个连接虚拟串口1,一个连接虚拟串口2
      3.用proteus创建电路
      在这里插入图片描述
      4.设置DB9
      在这里插入图片描述
      这里使用串口1,则串口调试软件里用串口2.

    最后,注意proteus里单片机的晶振要和自己计算波特率时用到的晶振频率相同。

    展开全文
  • 虚拟 串口 调试 助手

    2010-01-06 21:57:43
    虚拟串口调试助手,适合笔记本使用!需要的请直接下载下来!很好用的东西,亲自使用过!
  • 利用QT5.9 serialport串口通信模块编写串口调试助手,exe文件可直接运行,附源码。详见 https://blog.csdn.net/qq_43569273/article/details/89015593
  • C#代码实现串口通信、虚拟串口工具、串口调试助手
  • 破解版ModBus—Poll.4.3.4_Slave_破解版虚拟串口调试助手.zip,破解版ModBus—Poll.4.3.4_Slave_破解版虚拟串口调试助手,vspd虚拟串口破解版.rar,新云软件.url,ModBus-Protocol_Specification.pdf,ModbusSlaveSetup-...
  • 开源QT串口调试助手

    2018-10-30 11:03:30
    由于文件较大,附了开源代码的下载地址。主要利用QT库的串口调试助手,实现了串口识别,接发受数据,供学习交流使用。
  • 找了好久的虚拟串口助手和串口调试助手说明:vspd是以串口对形式添加的,比如这里COM1,COM2成对,那么COM1的数据就只能发到COM2,COM2会自动接收COM1发送的数据。
  • 在ubuntu下编写的一款类似于串口调试助手小软件,用来打开、关闭串口,进行串口的接受和发送。
  • 用C#开发的串口调试助手,代码部分大多数已经注释;测试串口可以通过安装Configure Virtual Serial Port Driver来虚拟串口号测试。
  • 虚拟串口工具+调试助手,可直接使用
  • PC端 串口调试 亲测可用 蓝牙调试
  • sscom 新串口调试助手,usb转虚拟串口不发生蓝屏,用其它的软件会蓝屏,用它不会蓝屏。
  • 网络串口调试助手.zip

    2021-08-13 22:03:55
    内含:友善串口调试助手,USR-TCP232-Test调试助手,VSPD虚拟串口工具,需要的童鞋下载,可以自行百度去下载
  • crc 异或和校验工具 虚拟串口 串口调试助手 通用单片机通讯协议 打包
  • 虚拟串口串口调试工具,简单实用,功能强大,内附汉化文件。
  • Virtual Serial Port Driver 7.2 +9.0、modbus调试工具、串口调试助手
  • ExMod串口调试助手主要功能是发送大量串口数据,设计目标是满足上位机串口编程调试之用,是个人把在上位机编程中常用的模拟调试功能汇总到一个调试软件中而成。除普通串口调试助手功能外,还包括发送文件中数据、...
  • keil MDK 中使用虚拟串口调试串口

    千次阅读 2022-04-26 11:17:16
    在不使用32开发板下,使用keil MDK中的软件仿真 和虚拟串口软件VSPD完成串口通信的过程。 操作步骤如下: 1、打开虚拟串口软件 点击添加端口:利用VSPD将PC上的两个虚拟串口连接起来。如图将COM1 和COM2连接起来。 ...

    功能介绍:
    在不使用32开发板下,使用keil MDK中的软件仿真 和虚拟串口软件VSPD完成串口通信的过程。

    类似的文章有使用C51单片机调试串口的 keil C51 中使用虚拟串口调试串口

    操作步骤如下:
    1、打开虚拟串口软件
    点击添加端口:利用VSPD将PC上的两个虚拟串口连接起来。如图将COM1 和COM2连接起来。
    在这里插入图片描述
    可以看到Virtual ports上将两个虚拟串口连接到了一起了,这样串口1和串口2就能进行通信。
    在这里插入图片描述
    2、打开串口助手软件
    打开串口1,设置波特率为9600,数据位为8,校验位为无,停止位为1
    在这里插入图片描述
    3、打开一个写好串口通信的32工程文件
    点击魔术棒,进入Debug设置页面,选择Use Simulator。这样就可以进行软件仿真了
    在这里插入图片描述
    点击进入软件仿真
    在这里插入图片描述
    点击仿真后,界面如下
    在这里插入图片描述
    在命令窗口的输入行中分别输入下面两条命令,按回车键完成输入

    MODE COM2 9600,0,8,1
    ASSIGN COM2 <S1IN> S1OUT
    

    在这里插入图片描述
    点击全速运行后,在串口窗口可以看到串口输出的内容。
    在这里插入图片描述
    同时我们也可以在串口助手上看到输出的内容
    在这里插入图片描述
    指令说明:
    1、MODE COM2 9600,0,8,1
    设置串口1。波特率为9 600,无校验位,8位数据,1位停止位。
    MODE命令的作用是设置被绑定计算机串口的参数。
    基本使用方式为:MODE COMx baudrate, parity, databits, stopbits
    其中:
    COMx(x = 1,2,…)代表计算机的串口号;
    baudrate代表串口的波特率;parity代表校验方式;
    databits代表数据位长度;
    stopbits代表停止位长度。

    2、ASSIGN COM2 < S1IN > S1OUT
    命令2是将计算机的串口2绑定到单片机的串口1
    COMx代表计算机的串口,可以是COM1、COM2、COM3或其他;
    inreg和outreg代表单片机的串口。对于只有一个串口的普通单片机,即SIN和SOUT;对于有两个或者多个串口的单片机,即SnIN和SnOUT(n=0,1,…即单片机的串口号)。
    例如:ASSIGN COM2 < SIN > SOUT
    将计算机的串口2绑定到单片机的串口(针对只有一个串口的单片机)。
    ASSIGN COM2 < S1IN > S1OUT
    将计算机的串口2绑定到单片机的串口1(针对有多个串口的单片机,注意串口号的位置)。
    需要注意的是,参数的括号是不能省略的,而outreg则是没有括号的。

    部分代码实现:
    main.c文件

    #include "system.h"
    #include "SysTick.h"
    #include "led.h"
    #include "usart.h"
    
    int main()
    {
    	u8 i=0; 
    	u16 data=1234;
    	float fdata=12.34;
    	char str[]="Hello World!";	
    	SysTick_Init(72);
    	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //中断优先级分组 分2组
    	LED_Init();
    	USART1_Init(9600);
    	
    	while(1)
    	{
    		i++;
    		if(i%200==0)
    		{
    			led1=!led1;
    			
    			printf("输出整型数data=%d\r\n",data);
    			printf("输出浮点型数fdata=%0.2f\r\n",fdata);
    			printf("输出十六进制数data=%X\r\n",data);
    			printf("输出八进制数data=%o\r\n",data);
    			printf("输出字符串str=%s\r\n",str);
    		}
    		delay_ms(10);
    	}
    }
    
    

    最后:
    需要代码和软件的可以自行下载。资源下载链接述
    下载操作:
    在这里插入图片描述

    展开全文
  • 包含串口通讯CSerialPort.h和CSerialPort.cpp文件,串口虚拟工具和串口调试助手
  • C# 写的串口调试助手,可实现基本收发功能。
  • 接收从串口进来的数据并在窗口显示。 2.接收到的数据可按 “字符串"或"HEX十六进制” 显示。3.自动断帧功能,自动在两次数据包之间插入换行,以方便观测。 4.波形显示功能。可将按协议发送的数据显示成波形。并支持...
  • JCBus串口调试助手是最为您着想的串口调试助手:     -自动添加    CRC-16校验码   -按需存储    8条调试消息,软件关闭后自动存储 -收发对应    且时间戳精确到1毫秒,易于查找  -突出显示 ...
  • 串口调试助手、摄像头图像显示、虚拟示波器等等(十个上位机,我本科期间所用过的所有串口助手了)智能车竞赛、电赛、课程设计等可用
  • LabView串口调试助手

    2022-07-20 13:55:59
    LabView串口调试助手
  • 串口相关的软件,实用,易操作,串口相关的软件,实用,易操作,串口相关的软件,实用,易操作,串口相关的软件,实用,易操作,串口相关的软件,实用,易操作,串口相关的软件,实用,易操作,串口相关的软件,实用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,114
精华内容 845
关键字:

虚拟串口调试助手