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条评论 对话框 ...
随机推荐
- 【luogu P1307 数字反转】 题解
题目链接:https://www.luogu.org/problemnew/show/P1307 刚入门的一道字符串模拟,分四种情况讨论来做比较好. #include<iostream> ...
- Android学习笔记_57_ExpandableListView控件应用
1.布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andr ...
- JavaEE权限管理系统的搭建(四)--------使用拦截器实现登录认证和apache shiro密码加密
RBAC 基于角色的权限访问控制(Role-Based Access Control)在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限.这就极大地简化了权限的管理.在一个 ...
- c语言描述的静态查找表
顺序表的查找: 直接循环依次和目标比较就行 有序表的查找(二分查找): int search(SS *T,Type key){ int mid; ; int high=T.length; while( ...
- linux命令进阶及和windows进行文件传输的所有方式
1.图例 ------>原图出处 2. 结构图 根目录说明 3.linux相关命令 cd(change directory切换目录): cd /. 进入根目录 cd .. 返回上一次目录 cd ...
- SpringCloud微服务实战:一、Eureka注册中心服务端
1.项目启动类application.java类名上增加@EnableEurekaServer注解,声明是注册中心 1 import org.springframework.boot.SpringAp ...
- 修改状态栏,电池,wifi的颜色为白色
修改状态栏,电池,wifi的颜色为白色 在info里面设置View controller-based status bar appearance,为no
- @font-face css3自定义个性化字体
使用第三方平台转换字体文件为font-face所支持的格式. TureTpe(.ttf)格式 支持浏览器:IE9+,Firefox3.5+,Chrome4+,Safari3+,Opera10+,iOS ...
- 【原创】关于skip-gram的个人理解
★skip-gram的关键术语与详细解释: [语料]—— 所有句子文档(当然会出现大量重复的单词) [词典(可用V维的onehot编码来表示)]—— 语料中出现的所有单词的集合(去除了重复词) [ ...
- 使用Cygwin在WIN系统下处理文本常用命令
1.打开Cygwin,把需要处理的文本复制你的安装目录例如:D:\cygwin\home\Administrator 使用 ls命令查看根目录文件 2.现在我们就可以对1.txt文本进行操作, 3.我 ...