精华内容
下载资源
问答
  • QT串口打开和读写

    千次阅读 2018-11-05 21:02:57
    关于QT串口打开和读写的程序实现 1、串口打开 串口打开包括两个过程,一是串口查找,二是设置并打开串口。具体实现见如下代码 foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) {...

    关于QT串口打开和读写的程序实现

    1、串口打开
    串口打开包括两个过程,一是串口查找,二是设置并打开串口。具体实现见如下代码

    foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
    	{
    		qDebug() << "Name        : " << info.portName();
    		qDebug() << "Description : " << info.description()
    		
           //将读取到的串口显示到界面上
    		if (ui.Com->currentText() != info.portName())
    			ui.Com->addItem(info.portName());	
    	}
    	
    	QSerialPort *serial;
    //  设置并打开串口
    	void first::UartOpen()
    {
    	//	serial->setPortName();    //设置串口名  
    	serial.setPortName(ui.Com->currentText());	 //	选取串口  
    	serial.open(QIODevice::ReadWrite);  	//打开串口  
    	serial.setBaudRate(9600);   //设置波特率  
    	serial.setDataBits(QSerialPort::Data8);  //设置数据位数  
    	serial.setParity(QSerialPort::NoParity); 	//设置奇偶校验   
    	serial.setStopBits(QSerialPort::OneStop);  	//设置停止位 
    	serial.setFlowControl(QSerialPort::NoFlowControl);	//设置流控制  
    }
    

    检测当前连接的com口,用foreach(),设置并打开串口之后,为了检验串口是否被真正打开,可以使用 isOpen()来判断。

    2、串口读写
    串口读写的过程,主要用到两个函数write() 函数和 readAll() 函数

    const QByteArray Send_temp;
    QByteArray Read_buf;
    serial->write(Send_temp);
    Read_buf = serial->readAll();
    

    3、问题发生和注意点
    1)要包含头文件

    #include "QtSerialPort\qserialport.h"
    #include "QtSerialPort\qserialportinfo.h"
    

    2)设置串口
    如果有多个串口,在设置串口时注意选取正确的串口名。

    3)读写问题
    如果发生串口消息发送失败的现象:检查下发送的 形式是否正确?文本形式还是HEX格式:是否是定时发送?发送时间太短会造成堵塞,尽量先单步调试下;收发是否异步?读写堵塞会有问题

    展开全文
  • 在调试STM32程序,突然发现只要我在串口助手上打开串口,程序就停止运行了,本来在闪的灯也不闪了。 刚开始根本想不通串口打开跟板子的程序运行会有什么影响。。。 3.3V的电源灯一直是亮着的,手上也没有USB转串口...

    记录一个蠢蠢的问题。

    在调试STM32程序,突然发现只要我在串口助手上打开串口,程序就停止运行了,本来在闪的灯也不闪了。

    刚开始根本想不通串口打开跟板子的程序运行会有什么影响。。。

    3.3V的电源灯一直是亮着的,手上也没有USB转串口,网上查了一会,只看到说TX和RX短路了就会这样,开始怀疑是板子上的串口芯片坏了,检查之后发现没问题啊。

    有点懵逼,无从下手了。

     

    先看看开发板原理图吧

    连到STM32芯片上的除了RX/TX,就是BOOT0和RESET了。

    好吧,恍然大悟。。。

    看了一眼串口助手上的两个流控制RST和DTR,果然:

    RST不知道啥时候给勾上了,导致一按打开串口,CH340的RST就让单片机保持复位了,程序就停止运行了,灯当然就不闪了。

     

    一脸黑线。。。

    展开全文
  • C# 串口打开失败,SerialPort.Open 打开异常的解决方法 问题描述:串口程序运行到serialPort.Open 时,下位机(MCU)程序会卡死,关闭串口后程序重新跑起来。 解决方法,设置串口时,加入以下两行代码: serial....

    C# 串口打开失败,SerialPort.Open 打开异常的解决方法

    问题描述:串口程序运行到serialPort.Open 时,下位机(MCU)程序会卡死,关闭串口后程序重新跑起来。

    解决方法,设置串口时,加入以下两行代码:

    serial.DtrEnable = false;
    //如果为 true,则启用数据终端就绪 (DTR);否则为 false。 默认为 false。
    serial.RtsEnable = false;
    //如果为 true,则启用请求发送 (RTS);否则为 false。 默认为 false。
    

    文档说默认为false,但是去掉这两句就会出问题。个人猜测与所使用的下位机硬件有关。
    在此仅提供一个解决问题的方向,顺便记录一下。

    展开全文
  • 串口打开失败

    2020-07-02 20:52:28
    好长时间没用了,今天烧写显示串口打开失败,这可咋整[img=https://img-bbs.csdn.net/upload/202007/02/1593694347_44718.jpg][/img]
  • Qt串口通信 串口打开 数据处理

    千次阅读 2019-08-19 17:09:40
    Ubuntu下Qt串口通信 Qt串口通信主要使用QSerialPort类,通信的数据类可以采用底层的unsigned char数组或者QByteArray类。...打开串口 if(m_serial == NULL) { m_serial = new QSerialPort(); } if(...

    Ubuntu下Qt串口通信

    Qt串口通信主要使用QSerialPort类,通信的数据类可以采用底层的unsigned char数组或者QByteArray类。下面po一段本人写的与串口相关的代码。

    • 打开串口
       	if(m_serial == NULL)
           {
               m_serial = new QSerialPort();
           }
           if(m_serial->isOpen())
           {
               disconnect(m_serial, SIGNAL(readyRead()), this, SLOT(onSerialReadData()));
               m_serial->close();
           }
           m_serial->setPortName(“SerialPortName”);
           connect(m_serial, SIGNAL(error(QSerialPort::SerialPortError)),
                   this, SLOT(onSerialError(QSerialPort::SerialPortError)));
           if(m_serial->open(QIODevice::ReadWrite))
           {
               if(!m_serial->setBaudRate(QSerialPort::Baud115200) &&
                  !m_serial->setParity(QSerialPort::NoParity) &&
                  !m_serial->setFlowControl(QSerialPort::NoFlowControl) &&
                  !m_serial->setDataBits(QSerialPort::Data8) &&
                  !m_serial->setStopBits(QSerialPort::OneStop))
               {
                   return false;
               }
               connect(m_serial, SIGNAL(readyRead()), this, SLOT(onSerialReadData()));
               return true;
           }
           else
           {
               return false;
           }
    
    • 串口组包
      有的串口通信会遇到需要组包的情况,就是串口发送的数据不一定是一整串数据,而是分段发送,比如我这边定的协议是以FFFF开头,FF结尾,有的串口数据可能是FFFF010B,下一帧才是020CFF,这其实是一条帧数据,而且这只是一种可能性。下面po一段我处理组包的代码,这里处理了一下数据堆积,我只去最后一段完整数据。
     	m_srcBuffer.append(m_serial->readAll());
        if(m_srcBuffer.indexOf(m_FFFFdata) >= 0)
        {
            int beginIndex = m_srcBuffer.lastIndexOf(m_FFFFdata);
            int endIndex = beginIndex + 2;
            if(endIndex == m_srcBuffer.length())
            {
                return;
            }
            while(endIndex < m_srcBuffer.length())
            {
                if(m_srcBuffer.at(endIndex) == char(0xff))
                {
                    m_handleBuffer.append(m_srcBuffer.mid(beginIndex, endIndex - beginIndex + 1));
                    onDataHandle();
                    m_srcBuffer.remove(beginIndex, endIndex - beginIndex + 1);
                    return;
                }
                ++endIndex;
            }
            if(m_handleBuffer.size() > 0)
            {
                m_handleBuffer.append(m_srcBuffer.mid(beginIndex, endIndex - beginIndex));
            }
        }
    
    • 数据转换
      数据我使用的是QByteArray类,在转换成相应的数据时提供了相应的接口。
    // BCD码转换成字符串
    QString SerialPort::ByteArrayToHexString(QByteArray ByteArray)
    {
        QDataStream out(&ByteArray,QIODevice::ReadWrite);   //将str的数据 读到out里面去
        QString HexString;
        HexString.clear();
        while(!out.atEnd())
        {
            qint8 outChar = 0;
            out >> outChar;   //每次一个字节的填充到 outchar
            QString str =QString("%1").arg(outChar & 0xFF, 2 ,16,QLatin1Char('0')).toLower();   //2 字符宽度
            HexString += str;
        }
        return HexString.toUpper();
    }
    // 数据转换成中文字符串
    QTextCodec gbk = QTextCodec::codecForName("gbk");
    QString _strData = gbk->toUnicode(m_handleBuffer.data());
    

    注意,QByteArray如果使用[]去取数据,取到的是是char,如果要进行int型的运算或者移位运算,按需要转换成unsigned char。

    展开全文
  • 目录 前言 串口打开失败目前遇到以下几...Android串口通信一般都是基于Google开源库的,然后在此基础上进行一系列操作的,比如打开串口,通过串口写数据,通过串口读数据,关闭串口; Google串口串口调试工具 ...
  • 串口打开和关闭

    千次阅读 2019-05-08 10:06:49
    1:全志平台打开串口。开机是按下az,进入等待命令模式。 输入efex 是烧机。 输入setenv uart0_rx_open 1; saveenv; reset \r\n 仅仅打开串口 输入setenv uart0_rx_open 1; setenv loglevel 8; saveenv; reset...
  • 问题1:串口打开失败
  • QT串口打开无响应

    千次阅读 2019-08-08 20:24:35
    QT制作串口打开串口无响应解决方案 只要在打开串口前清空缓冲区即可: serial->clear();
  • 上一篇博客分析了串口驱动初始化部分,下面逐步分析串口驱动中的打开串口,数据发送和接收! 初始化主要工作流程: 先来分析串口打开操作流程,还是先上图: 这里分析还是离不开上篇博客中的两张重要的图: ...
  • QT实现串口打开和关闭

    千次阅读 2018-11-08 19:31:20
    /第一步 查找串口***/ //下面这个循环语句用来查找可以用的串口端口 foreach (const QSerialPortInfo &amp;info,QSerialPortInfo::availablePorts()) //不确定有多少串口可用,也就不知道循环多少次,所以用...
  • 串口调试问题 串口打开失败

    千次阅读 2015-01-09 15:12:11
    一、串口通讯 在linux 下 cat /dev/ttyS0 接收. 但奇怪的是 cat /dev/ttyS0没有显示受到认识数据,反而是我的串口调试助手收到了返回!! linux端不用 cat /dev/ttyS0读的时候没有返回! 原因:1.windows要发送...
  • 关于大于9的串口打开失败的原因

    千次阅读 2012-12-25 16:34:48
    关于大于9的串口打开失败的原因 例如 打开 COM15 CreateFile参数中串口名字是: "\\\\.\\COM15" 而不是"COM15" http://www.advancedvirtualcomport.com/faq.html (该文章还有其他关于串口的问题解答) ...
  • VB 串口打开无效端口

    千次阅读 2015-04-24 08:38:07
    无效的端口打开应该提醒用户;   Private Sub Command3_Click()  If MSComm1.PortOpen = True Then  MsgBox " 串口已经打开 ", , " 警告 "  Else    MSComm1.CommPort = Combo1.
  • 串口名导致的串口打开失败

    万次阅读 2012-04-07 11:52:46
    今天遇到串口通信不稳定, 拿到别人机子上测试, 却发现他的串口打不开了.   在网上查原因. 网上说了些原因,比如串口被占用,这个被排除了,我没开其它使用串口的程序. 也有说驱动没安装好,也重新安装了下.还是不行. ...
  • 3再次打开串口,报错,System.IO.IOException: 函数不正确。 at System.IO.Ports.InternalResources.WinIOError(Int32 errorCode, String str) at System.IO.Ports.InternalResources.WinIOError() at System.IO...
  • UE4串口打开方式(4.13)

    千次阅读 2016-11-10 16:37:26
    因为做外接设备,所以被串口折腾了两天,现在将代码copy出来。 /** 初始化串口函数 * * @param: unsigned int portNo 串口编号,默认值为1,即COM1,注意,尽量不要大于9 * @param: unsigned int baud 波特率,默认为...
  • [img=https://img-bbs.csdn.net/upload/202012/15/1607996812_716833.png][/img]
  • c语言中串口打开和设置函数

    千次阅读 2012-09-22 18:01:19
    int open_port(int fd,int comport){  char *dev[]={"/dev/ttySAC0","/dev/ttySAC1","/dev/ttySAC2"};  if(comport==0)  {  //串口0  fd=open("/dev/ttySAC0",O_RDWR|O_NOCTTY|O_NDELAY
  • 具体错误信息: serial.serialutil.SerialException: [Errno 13] could not open port /dev/ttyUSB0: [Errno 13] Permission denied: ‘/dev/ttyUSB0’ 处理方法: 改变ttyUSB0的执行权限# sudo chmod 777 /dev/...
  • ![图片说明]... 从宏晶科技官网上下载了一个驱动还是不行,我是win10系统请问有没有大神youwin10的PL2303驱动,与单片机下载用的,谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢!
  • vc串口应用编程--打开串口失败

    千次阅读 2013-09-04 15:17:27
    串口打开失败原因: 1.串口被占用 2.驱动没装好 3.程序中串口打开串口名不对 程序串口名不对造成打开失败的原因: 1.COM0到COM9可直接用 "COMX" 或 "COMX:" 打开串口,在设备管理器对应com口的属性->端口设置->高级...
  • Linux串口驱动程序(3)-打开设备

    千次阅读 2019-06-12 20:36:30
    先来分析一下串口打开的过程: 1、用户调用open函数打开串口设备文件; 2、在内核中通过tty子系统,把open操作层层传递到串口驱动程序中; 3、在串口驱动程序中的xx_open最终实现这个操作。 这里主要有2个点需要...
  • Qt串口操作-打开串口

    千次阅读 2020-06-11 03:27:59
    Qt使用QSerialPort来操作串口,使用时需要在.pro文件...以下为打开串口的代码: #include "mainwindow.h" #include <QApplication> #include<QDebug> #include<QSerialPort> #include<QSerial
  • 一台机子用moxa的两块8口的串口扩展卡,扩展了16个串口,在硬件管理器里面也能看到这16个串口,但是用CreateFile打开串口时,COM10及以上的串口打开失败。解决方法如下: char szPort[50]; if (portNo < 10) { ...
  • php打开串口RS232

    千次阅读 2018-02-04 19:58:34
    php打开串口RS232 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
  • 这是我的代码。err一直是2 int _tmain(int argc, _TCHAR* argv[]) { ... if (HandlePort == ... printf("串口打开失败\n"); int err = GetLastError(); printf("%d", err); } while (true); return 0; }
  • android 串口通信打开失败

    千次阅读 2018-12-12 09:04:15
    打开失败的情况可能是没有给权限, 进入ADB SHELL之后,cd /dev 进入dev后,ls查看设备是否有ttyS0 1 2 3等串口 输入:setenforce 0 关闭防火墙 输入:chmod 777 /dev/ttyS2(串口文件) 修改权限 这样...
  • linux下串口通信主要有下面几个步骤 ...1.打开串口 代码(串口为ttyUSB0) //打开串口 int open_port(void) { int fd; fd=open("/dev/ttyUSB0",O_RDWR | O_NOCTTY | O_NONBLOCK); // printf("fd=%d\n",fd);
  •  通常使用以下函数来通过Windows系统来对外围设备进行通信,做串口方面的程序,使用CreatFile打开串口通信端口。在对串口进行操作之前,需要首先打开串口。使用C++进行串口编程,如果采用VS开发,则可以直接借助于...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 115,583
精华内容 46,233
关键字:

串口打开