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条评论 对话框 ...
随机推荐
- caffe convert mxnet
https://github.com/apache/incubator-mxnet/tree/430ea7bfbbda67d993996d81c7fd44d3a20ef846/tools/caffe_ ...
- JavaScript基础-----数组(Array)
1.JavaScript 中创建数组的方法: (1).使用Array构造函数: var arr = new Array(); //创建一个空数组 var arr = new Array(5); //传 ...
- java各种业务解决方案总结
最近有点时间,突然感慨良多,感觉辛苦工作这么久什么都没有,总结了以前的工作,将接触的主要工具列出来,希望给大家解决问题做参考.相关工具都是实践检验过的 1.数据库 (1).内存数据库 redis (2 ...
- 【前行&赛时总结】◇第4站&赛时9◇ CF Round 513 Div1+Div2
◇第4站&赛时9◇ CF Round 513 Div1+Div2 第一次在CF里涨Rating QWQ 深感不易……作blog以记之 ( ̄▽ ̄)" +Codeforces 的门为你打 ...
- ABAP术语-Data Browser
Data Browser 原文:http://www.cnblogs.com/qiangsheng/archive/2008/01/21/1046858.html Tool for displayin ...
- 简单Maven Dos命令语句
简单Maven Dos命令语句: 打包:mvn package 编译:mvn compile 编译测试程序:mvn test-compile 清空:mvn clean 运行测试:mvn test 生成 ...
- 来自一枚初生牛犊不怕虎的小菜鸟的Mock.js使用,不足之处欢迎读者的指出 谢谢
本文章写的是基于require的mock.js的几种常用生成随机数据和ajax模拟前后端的交互信息 <script src="./app/libs/require.js"&g ...
- 二、html篇
1.<br/> 有时css实现换行比较麻烦,可以使用该标签进行换行. 2.<strong></strong> <ins></ins> & ...
- (四)启用HTTPS
安全规范中有一条是要求尽量使用https而弃用http(新Chrome将标记非HTTPS网站为不安全),其实启用https和之前的ipv6改造一样,并不是什么高难度或者工作流繁多的的改造,只需将中间件 ...
- 基于webSocket的聊天室
前言 不知大家在平时的需求中有没有遇到需要实时处理信息的情况,如站内信,订阅,聊天之类的.在这之前我们通常想到的方法一般都是采用轮训的方式每隔一定的时间向服务器发送请求从而获得最新的数据,但这样会浪费 ...