Qt 实时读串口数据,并将读到的数据从网口发送出去
需求:
1. 要试试从串口读取数据
2. 将读到的数据从网口发送出去
3.开机启动
4. 没有界面
第一部分
配置Qt Pro文件 需要Qt += serialport network
第二部分 -串口初始化
void Serial_To_Internet::initialize_SerialPort()
{
foreach (const QSerialPortInfo &infor, QSerialPortInfo::availablePorts())
{
QSerialPort serial;
serial.setPort(infor);
if(serial.open(QIODevice::ReadWrite))
{
ui->comboBox->addItem(infor.portName());
ui->textEdit->append(tr("检测到端口列表"));
ui->textEdit->append(infor.portName());
ui->textEdit->append(infor.description());
ui->textEdit->append(infor.manufacturer());
serial.close();
}
}
ui->comboBox_2->setCurrentIndex(0);
my_SerialPort = new QSerialPort();
my_SerialPort->setPortName("COM2");
my_SerialPort->open(QIODevice::ReadWrite);
my_SerialPort->setBaudRate(9600);
my_SerialPort->setDataBits(QSerialPort::Data8);
my_SerialPort->setParity(QSerialPort::NoParity);
my_SerialPort->setStopBits(QSerialPort::OneStop);
my_SerialPort->setFlowControl(QSerialPort::NoFlowControl);
connect(my_SerialPort,SIGNAL(readyRead()),this,SLOT(read_SerialPort())); }
第三部分-设置开机启动
void Serial_To_Internet::set_Auto_Start(bool is_auto_start)
{
QString application_name = QApplication::applicationName();
QSettings *settings = new QSettings(REG_RUN,QSettings::NativeFormat);
if(is_auto_start)
{
QString application_path = QApplication::applicationFilePath();
settings->setValue(application_name,application_path.replace("/","\\"));
}
else
{
settings->remove(application_name);
}
delete settings;
}
第四部分 设置最小化
oid Serial_To_Internet::onSystemTrayIconClisked(QSystemTrayIcon::ActivationReason reason)
{
switch (reason)
{
case QSystemTrayIcon::Trigger:
{
if(this->isHidden())
{
this->show();
this->setWindowState(Qt::WindowActive);
this->activateWindow();
}
else
{
this->hide();
}
}
break;
case QSystemTrayIcon::DoubleClick: default:
break;
}
} void Serial_To_Internet::changeEvent(QEvent *e)
{
if((e->type() == QEvent::WindowStateChange)&&this->isMinimized())
{
this->hide();
}
}
第五部分 网络部分
1. 设置静态IP
void Serial_To_Internet::set_Static_Ip()
{
QProcess process(0);
process.start("netsh interface ip set address 本地连接 static 192.168.2.63 255.255.255.0 192.168.2.254");
process.waitForStarted();
process.waitForFinished();
}
2.初始化服务端
void Serial_To_Internet::initialize_Tcp_Server()
{
tcpServer = new QTcpServer(this);
tcpServer->listen(QHostAddress::Any,8888);
connect(tcpServer,SIGNAL(newConnection()),this,SLOT(accept_Connect())); }
</pre><pre code_snippet_id="1610400" snippet_file_name="blog_20160315_7_4027708" name="code" class="cpp">void Serial_To_Internet::accept_Connect()
{
qDebug()<<"ASdsasa";
my_Socket = tcpServer->nextPendingConnection();
connect(my_Socket,SIGNAL(readyRead()),this,SLOT(read_Date_From_Internet()));
}
3当串口接收到到数据时,发送
void Serial_To_Internet::read_SerialPort()
{
QByteArray temp;
temp = my_SerialPort->readAll();
if(my_Socket)
{
my_Socket->write(temp); }
ui->textEdit->append(temp);
temp.clear();
}
源代码地址:http://download.csdn.net/detail/z609932088/9461801
Qt 实时读串口数据,并将读到的数据从网口发送出去的更多相关文章
- 第一章 在linux下python读串口 存MYSQL数据库(703N)
import MySQLdb//定义引用数据库的驱动文件 import serial import time ser = serial.Serial('/dev/ttyATH0', 115200, t ...
- Android(Linux)实时监控串口数据
之前在做WinCE车载方案时,曾做过一个小工具TraceMonitor,用于显示WinCE系统上应用程序的调试信息,特别是在实车调试时,用于监控和显示CAN盒与主机之间的串口数据.因为需要抢占市场先机 ...
- ReentrantReadWriteLock三个线程读数据,三个线程写数据
/*** * 三个线程读数据,三个线程写数据 * */ public class ReadWriteLockTest { public static void main(String[] args) ...
- Mysql综述(1)数据是如何读存的
引言 我们都知道,mysql中的索引,事务,锁等都是作为开发人员要重点掌握的知识面,但要想掌握理解好这些知识却并非易事. 其中原因之一就是这些概念都过于抽象,事实上如果都不懂mysql数据是以一种怎样 ...
- QReadWriteLock读写锁的一点测试(它是逻辑锁,并没有与实物相联系),只有锁住了读,才允许再次读,否则一概不允许
QReadWriteLock m_lock; void MyWidget::Button1(){ m_lock.lockForRead(); ShowMessage(tr("111" ...
- 探讨SELECT语句的元数据&动态取样&读一致性导致的一致性读和递归操作
前几天,论坛上的同行在讨论SELECT语句的元数据,动态取样和读一致性导致的一致性读和递归问题,今天有时间,就试着进行了测试,本人测试环境如下: win7_64+Oracle11.2.0.4_64 那 ...
- MySQL 笔记整理(20) --幻读是什么,幻读有什么问题?
笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> (本篇内图片均来自丁奇老师的讲解,如有侵权,请联系我删除) 20) --幻读是什么,幻读有什么问题? 我们先来看看表结构和初始化数据 ...
- STM32使用串口1配合DMA接收不定长数据,减轻CPU载荷
STM32使用串口1配合DMA接收不定长数据,减轻CPU载荷 http://www.openedv.com/thread-63849-1-1.html 实现思路:采 用STM32F103的串口1,并配 ...
- Qt 学习之路 2(14):对话框数据传递
Home / Qt 学习之路 2 / Qt 学习之路 2(14):对话框数据传递 Qt 学习之路 2(14):对话框数据传递 豆子 2012年9月15日 Qt 学习之路 2 53条评论 对话框 ...
随机推荐
- AQS2:可重入和阻塞
本文仅基于可重入的锁(ReentrantLock类)对AQS做分析,只考虑独占锁. 共享锁与独占锁的更多信息,以后再讨论. AQS中队列的实现 节点Node AQS的节点包含了对前置节点的引用pre, ...
- Cesium.js隐藏logo等信息
css: .cesium-widget-credits{ display:none!important;}js: var viewer = new Cesium.Viewer('cs', { anim ...
- SyncUI跨设备同步
SynUI控制代码 <script type="text/javascript"> /* SyncUI script (Learn more at http://syn ...
- redis介绍及常见问题总结
1.redis c语言编写的一个开源软件,使用字典结构存储数据,支持多种类型数据类型 数据类型:字符串,字典,列表,集合,有序集合 2.redis特点 速度快:c语言实现的,所有数据都存储在计算机内存 ...
- Openresty最佳案例 | 第9篇:Openresty实现的网关权限控制
转载请标明出处: http://blog.csdn.net/forezp/article/details/78616779 本文出自方志朋的博客 简介 采用openresty 开发出的api网关有很多 ...
- IPC进程间通信---消息队列
消息队列 消息队列:消息队列是一个存放在内核中的消息链表,每个消息队列由消息队列标识符标识.与管道不同的是消息队 列存放在内核中,只有在内核重启(即操作系统重启)或者显式地删除一个消息队列时,该消息队 ...
- Django中ORM常用字段类型及参数
常用字段: <1> CharField 字符串字段, 用于较短的字符串. CharField 要求必须有一个参数 maxlength, 用于从数据库层和Django校验层限制该字段所允许的 ...
- Jmeter的安装教程【图文】
Jmeter是一款开源的测试工具,其安装分为两大部分:JDK和Jmeter 第一部分:安装JDK 第一步: 官网下载JDK,可以按照引用地址jdk下载教程进行下载,下载完毕后,进行安装即可 第二步: ...
- 05 shell编程之正则表达式
正则表达式&&文本处理利器 学习目标: l 掌握正则表达式的运用 l 掌握sed.awk文本处理工具的使用 目录结构: 正则表达式 正则表达式概述 l 正则表达式:使用单个字 ...
- Document .load与Document .ready的区别
页面加载完成有两种事件 1.load是当页面所有资源全部加载完成后(包括DOM文档树,css文件,js文件,图片资源等),执行一个函数 问题:如果图片资源较多,加载时间较长,onload后等待执行的函 ...