QT串口2--控制GSM模块的使用
1、首先介绍下所用的gsm模块,YYROBOT_SIM800C 模块是一款高性能高性价比工业级的 GSM/GPRS 模块(开发板)。本模块采用 SIMCOM 公司的工业级四频 850/900/1800/1900MHz SIM800 芯片, 可以低功耗实现语音、SMS、数据和传真信息的传输。
注: SIM800 支持 4 频,通俗讲就是可以全球使用,而老版本的 SIM900A 仅支持双频,只能大陆使用。
2、QT串口程序设计:基于QT串口1的修改点击打开链接
3、程序:.h文件
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();private slots:void on_openportButton_clicked();void read_Com();void on_sendButton_clicked();void on_clearpushButton_clicked();void QStringtoHex(QByteArray& sendData,QString str);char ConvertHexChar(char ch);void on_msgButton_clicked();void on_pushButton_clicked();void on_pushButton_2_clicked();private:Ui::Widget *ui;QSerialPort serial; //声明串口类//QByteArray sendData;
};#endif // WIDGET_H
.cpp文件
#include "widget.h"
#include "ui_widget.h"
#include<QMessageBox>
#include <QThread>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);}Widget::~Widget()
{delete ui;
}void Widget::on_openportButton_clicked()
{if(ui->portNameComboBox->isEnabled()){ui->openportButton->setText("ClosePort"); //按下“OpenPort”后,按键显示为“ClosePort”ui->portNameComboBox->setDisabled(true); //按下“OpenPort”后,禁止再修改COM口serial.setPortName(ui->portNameComboBox->currentText()); //设置COM口serial.setBaudRate(QSerialPort::Baud9600,QSerialPort::AllDirections);//设置波特率和读写方向serial.setDataBits(QSerialPort::Data8); //数据位为8位serial.setFlowControl(QSerialPort::NoFlowControl);//无流控制serial.setParity(QSerialPort::NoParity); //无校验位serial.setStopBits(QSerialPort::OneStop); //一位停止位serial.close(); //先关串口,再打开,可以保证串口不被其它函数占用。if(serial.open(QIODevice::ReadWrite)) //以可读写的方式打开串口{connect(&serial,SIGNAL(readyRead()),this,SLOT(read_Com())); //把串口的readyRead()信号绑定到read_Com()这个槽函数上}} else {ui->openportButton->setText("OpenPort"); //按下“ClosePort”后,按键显示为“OpenPort”ui->portNameComboBox->setEnabled(true); //按下“ClosePort”后,COM口可被修改serial.close(); //关串口}
}
void Widget::read_Com()
{QByteArray temp=serial.read(1);//在缓冲区中读一个byteif(!temp.isEmpty())//如果读到的数据不为空{ui->recvTextEdit->insertPlainText("0x");ui->recvTextEdit->insertPlainText(temp.toHex());//显示接收到的数据的十六进制ui->recvTextEdit->insertPlainText(" ");}
}void Widget::on_sendButton_clicked()
{//ui->ASCIIcheckBox->setChecked(true);// ui->HexcheckBox->setChecked(true);// ui->newlinecheckBox->setChecked(true);//发送ASCII字符if(ui->ASCIIcheckBox->isChecked()){QString sendData= ui->sendEdit->toPlainText().toLatin1();//以ASCII码的形式通过串口发送出去。QByteArray send;sendData += "\r\n";send=sendData.toLatin1();serial.write(send);}//发送16进制字符else if(ui->HexcheckBox->isChecked()){//读取要发送的数据QString sendData = ui->sendEdit->toPlainText().toLatin1();//是否显示发送消息// displaysend(sendData);// HexToStringQByteArray sendbuff;//方法一//QStringtoHex(sendbuff,sendData);//方法二sendData +="\r\n";sendbuff = QByteArray::fromHex(sendData.toLatin1().data());serial.write(sendbuff);}}void Widget::on_msgButton_clicked()
{QString moshi="AT+CSCS='GSM'"; QByteArray send;moshi += "\r\n";send=moshi.toLatin1();serial.write(send); QThread::msleep( 1000 );// 休息1秒//QString wenben=' AT+CMGF=1"\r\n"';//QString haoma='AT+CMGS="18053301936""\r\n"';//QString xinxi= 'ROBOT"\r\n"';QString wenben= "AT+CMGF=1";QByteArray send1;wenben += "\r\n";send1=wenben.toLatin1();serial.write(send1);QThread::msleep( 1000 );// 休息1秒/*QString haoma="AT+CMGS='18053301936'";ui->sendEdit->setPlainText("haoma");//以ASCII码的形式通过串口发送出去。haoma += "\r\n";QByteArray send2;send2=haoma.toLatin1();serial.write(send2);ui->sendEdit->clear();
*/}void Widget::on_clearpushButton_clicked()
{ui->sendEdit->clear();ui->recvTextEdit->clear();
}char Widget::ConvertHexChar(char ch)
{if(ch>='a'&&ch<='f'){return ch-'a'+10;}else if(ch>='A'&&ch<='F'){return ch-'A'+10;}else if(ch>='0'&&ch<='9'){return ch-'0';}else{return -1;}
}
void Widget::QStringtoHex(QByteArray& sendData,QString str)
{char hstr,lstr,hdata,ldata;int len = str.length();int sendnum = 0;QByteArray temp;temp.resize(len/2);//设置大小,len/2会大于实际16进制字符//sendData.resize(len/2);for(int i=0;i<len;){//hstr = str[i].toAscii();hstr = str[i].toLatin1();if(hstr == ' '){++i;continue;}++i;if(i >= len){break;}lstr = str[i].toLatin1();hdata = ConvertHexChar(hstr);ldata = ConvertHexChar(lstr);if(-1 == hdata || -1 == ldata){break;}++i;temp[sendnum] = hdata<<4|ldata;sendnum++;}sendData.reserve(sendnum);sendData = temp.left(sendnum);//去掉多余字符
}void Widget::on_pushButton_clicked()
{QString xinxi= "ROBOT";xinxi += "\r\n";QByteArray send;send=xinxi.toLatin1();serial.write(send);QString sendData = "1A"; QByteArray sendbuff;sendData +="\r\n";sendbuff = QByteArray::fromHex(sendData.toLatin1().data());serial.write(sendbuff);
}void Widget::on_pushButton_2_clicked()
{QString haoma="AT+CMGS='18053301936'";ui->sendEdit->setPlainText("haoma");//以ASCII码的形式通过串口发送出去。haoma += "\r\n";QByteArray send2;send2=haoma.toLatin1();serial.write(send2);ui->sendEdit->clear();}
界面:
QT串口2--控制GSM模块的使用相关推荐
- 单片机控制GSM模块实现短信收发的软件设计
摘要:借助系统模型,阐明GSM模块收发短信的基本概念以及串口控制SMS的基本原理.详细介绍单片机控制GSM模块工作的软件实现过程,对怎样用单片机控制GSM模块收发短信进行探讨,也对程序设计的主体思想作 ...
- GSM模块的调试(一)
概述 此次我使用的GSM是基于SIM900A芯片的通信模块,其功能和800A兼容(800系列是900系列的升级款)可以实现打电话,发短信,和服务器发送指令等功能.接下来将从GSM的工作原理及通过USB ...
- android qt 串口通信,Qt串口通信开发之QSerialPort模块详细使用方法与实例
Qt串口通信开发之QSerialPort模块详细使用方法与实例 发布时间:2020-10-23 12:19:05 来源:脚本之家 阅读:111 作者:沧海一笑-dj Qt串口通信基础及名词说明 串口通 ...
- Linux下QT串口通过无线模块收发十六进制数据
前段时间写了一个关于WiMi-Net简要的收发码以及CRC校验的博客(http://blog.csdn.net/u011348999/article/details/16803829) 然后一直说把Q ...
- QT开发(五十)——QT串口编程基础
QT开发(五十)--QT串口编程基础 一.QtSerialPort简介 1.串口通信基础 目前使用最广泛的串口为DB9接口,适用于较近距离的通信.一般小于10米.DB9接口有9个针脚. 串口通信的主要 ...
- 单片机与gsm通信c语言,gsm模块如何与单片机通信?
51单片机与GSM模块实现通信 1.检测串口线的好坏 1)将串口线插在电脑上,用短路子短接串口的2脚和3脚 2)打开串口调试助手 3)点击自动发送,在自动发送的窗口中随便发个数据,看看能不能接收到若能 ...
- 基于STM32与GSM模块发送中英文短信
基于STM32与GSM模块发送中英文短信 最近在做毕业设计有用到GSM模块进行短信报警,模块的功能比较多这里就不介绍了,一般的拨打电话都很简单就只需要一条指令即可,发送英文短信也很简单也只要几条命令也 ...
- 单片机与gsm通信c语言,实现51单片机与GSM模块通信介绍
51单片机与GSM模块实现通信 1.检测串口线的好坏 1)将串口线插在电脑上,用短路子短接串口的2脚和3脚 2)打开串口调试助手 3)点击自动发送,在自动发送的窗口中随便发个数据,看看能不能接收到若能 ...
- GSM模块的调试(二)
概述 上次介绍了GSM模块直接与电脑进行通信,这次我来向大家介绍GSM与51单片机进行通信,实现打电话功能.这里建议大家最好先使用GSM模块与电脑通信,再来使用单片机与模块通信. 1.SIM900A ...
最新文章
- 【iOS-cocos2d-X 游戏开发之十四】cocos2dx(c++)中访问object函数
- bzoj 1007 : [HNOI2008]水平可见直线 计算几何
- curl get请求_Linux curl 常用示例你都 Get 了吗?| CSDN 博文精选
- win10 后台运行jar包_win10系统设置双击jar文件直接运行的处理教程
- cap理论具体含义_架构设计之「 CAP 定理 」
- 机器学习实践一 logistic regression regularize
- 使用Powershell批量获取Exchange 2013邮箱用户容量使用量
- mysql的其中连接方式_MySQL选择连接中的位置,但不在其中
- hp android 平板,惠普三款Android平板电脑新产品曝光
- 人工智能的未来:杀戮还是治愈?
- 6个常用的Python编程开发工具
- java读取propertiies文件例子
- 剧院在线选座票务系统
- 遨博机械臂——末端工具ROS驱动
- simon手册翻译_part1
- 去除el-input四周白边
- 【它山之玉】Trump:让人们发出噢、啊的惊叹声!—科学网马臻
- 2020年度总结-送你一张腾讯视频VIP月卡
- 实现倒计时的几种方案汇总
- 进出口贸易管理系统丨汇信