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条评论 对话框 ...
随机推荐
- [19/03/16-星期六] 常用类_Date时间类&DateFormat类
一.Date时间类 计算机中 以1970 年 1 月 1 日 00:00:00定为基准时间,每个度量单位是毫秒(1秒的千分之一) 用ong类型的变量来表示时间,如当前时刻数值:long now =n ...
- Batch Normalization:Accelerating Deep Network Training by Reducing Internal Covariate Shift(BN)
internal covariate shift(ics):训练深度神经网络是复杂的,因为在训练过程中,每层的输入分布会随着之前层的参数变化而发生变化.所以训练需要更小的学习速度和careful参数初 ...
- HashMap中的equals和hashCode
HashMap的存储方式 HashMap的实现方式是数组链,不同的对象根据其哈希码(hashCode方法的返回值)找到对应的数组下标,然后存入数组.不同的对象有相同的哈希码时怎么办?这就由数组链中的链 ...
- 理解Storm可靠性消息
看过一些别人写的, 感觉有些东西没太说清楚,个人主要以源代码跟踪,参考个人理解讲述,有错误请指正. 1基本名词 1.1 Tuple: 消息传递的基本单位.很多文章中介绍都是这么说的, 个人觉得应该更详 ...
- git submodule update --init --recursive
最近在跑好几个模型,视频检测,物体检测,搭建mxnet时,有点问题,记录一下. 视频检测,mxnet需要用指定版本,git 切换到指定版本后,update了,但是依然提示说有些库找不到.想了想,应该是 ...
- ACL常用命令及工作原理
What ACL 是一系列 IOS 命令,根据数据包报头中找到的信息来控制路由器应该转发还是应该丢弃数据包.ACL 是思科 IOS 软件中最常用的功能之一. 在配置后,ACL 将执行以下任务: 限制网 ...
- Angularjs基础(十一)
ng-csp 描述:修改内容的安全策略 实例: 修改AngularJS 中关于"eval"的行为方式及内联样式: <body ng-app="" ng-c ...
- Sass学习日志
一.什么是SASS SASS是一中CSS的开发工具,提供了许多便利的写法,大大节约了设计者们的时间,使得CSS的开发,变得简单和可维护.本文总结了SASS的主要方法.我们的目标是,有了这篇文章,日常的 ...
- 记录JavaScript的util.js类库
工作中用到的, 不断做为积累, 以后能用到. 也感谢前辈们. 定义Util对象 var MyUtil = new Object(); 从url中获取参数 //从url中获取参数 function G ...
- 【TOJ 3812】Find the Lost Sock(异或)
描述 Alice bought a lot of pairs of socks yesterday. But when she went home, she found that she has lo ...