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模块的使用相关推荐

  1. 单片机控制GSM模块实现短信收发的软件设计

    摘要:借助系统模型,阐明GSM模块收发短信的基本概念以及串口控制SMS的基本原理.详细介绍单片机控制GSM模块工作的软件实现过程,对怎样用单片机控制GSM模块收发短信进行探讨,也对程序设计的主体思想作 ...

  2. GSM模块的调试(一)

    概述 此次我使用的GSM是基于SIM900A芯片的通信模块,其功能和800A兼容(800系列是900系列的升级款)可以实现打电话,发短信,和服务器发送指令等功能.接下来将从GSM的工作原理及通过USB ...

  3. android qt 串口通信,Qt串口通信开发之QSerialPort模块详细使用方法与实例

    Qt串口通信开发之QSerialPort模块详细使用方法与实例 发布时间:2020-10-23 12:19:05 来源:脚本之家 阅读:111 作者:沧海一笑-dj Qt串口通信基础及名词说明 串口通 ...

  4. Linux下QT串口通过无线模块收发十六进制数据

    前段时间写了一个关于WiMi-Net简要的收发码以及CRC校验的博客(http://blog.csdn.net/u011348999/article/details/16803829) 然后一直说把Q ...

  5. QT开发(五十)——QT串口编程基础

    QT开发(五十)--QT串口编程基础 一.QtSerialPort简介 1.串口通信基础 目前使用最广泛的串口为DB9接口,适用于较近距离的通信.一般小于10米.DB9接口有9个针脚. 串口通信的主要 ...

  6. 单片机与gsm通信c语言,gsm模块如何与单片机通信?

    51单片机与GSM模块实现通信 1.检测串口线的好坏 1)将串口线插在电脑上,用短路子短接串口的2脚和3脚 2)打开串口调试助手 3)点击自动发送,在自动发送的窗口中随便发个数据,看看能不能接收到若能 ...

  7. 基于STM32与GSM模块发送中英文短信

    基于STM32与GSM模块发送中英文短信 最近在做毕业设计有用到GSM模块进行短信报警,模块的功能比较多这里就不介绍了,一般的拨打电话都很简单就只需要一条指令即可,发送英文短信也很简单也只要几条命令也 ...

  8. 单片机与gsm通信c语言,实现51单片机与GSM模块通信介绍

    51单片机与GSM模块实现通信 1.检测串口线的好坏 1)将串口线插在电脑上,用短路子短接串口的2脚和3脚 2)打开串口调试助手 3)点击自动发送,在自动发送的窗口中随便发个数据,看看能不能接收到若能 ...

  9. GSM模块的调试(二)

    概述 上次介绍了GSM模块直接与电脑进行通信,这次我来向大家介绍GSM与51单片机进行通信,实现打电话功能.这里建议大家最好先使用GSM模块与电脑通信,再来使用单片机与模块通信. 1.SIM900A ...

最新文章

  1. 【iOS-cocos2d-X 游戏开发之十四】cocos2dx(c++)中访问object函数
  2. bzoj 1007 : [HNOI2008]水平可见直线 计算几何
  3. curl get请求_Linux curl 常用示例你都 Get 了吗?| CSDN 博文精选
  4. win10 后台运行jar包_win10系统设置双击jar文件直接运行的处理教程
  5. cap理论具体含义_架构设计之「 CAP 定理 」
  6. 机器学习实践一 logistic regression regularize
  7. 使用Powershell批量获取Exchange 2013邮箱用户容量使用量
  8. mysql的其中连接方式_MySQL选择连接中的位置,但不在其中
  9. hp android 平板,惠普三款Android平板电脑新产品曝光
  10. 人工智能的未来:杀戮还是治愈?
  11. 6个常用的Python编程开发工具
  12. java读取propertiies文件例子
  13. 剧院在线选座票务系统
  14. 遨博机械臂——末端工具ROS驱动
  15. simon手册翻译_part1
  16. 去除el-input四周白边
  17. 【它山之玉】Trump:让人们发出噢、啊的惊叹声!—科学网马臻
  18. 2020年度总结-送你一张腾讯视频VIP月卡
  19. 实现倒计时的几种方案汇总
  20. 进出口贸易管理系统丨汇信

热门文章

  1. 推荐CUDA程序优化的15个策略
  2. Ubunt16.04 搭建 GPU 显卡驱动 + CUDA9.0 + cuDNN7 详细教程
  3. 完结篇 | 吴恩达《序列模型》精炼笔记(3)-- 序列模型和注意力机制
  4. Python机器学习(1)-- 自己设计一个感知机(Perceptron)分类算法
  5. php怎么运行网页_PHP的作用是什么?
  6. matlab神经网络1:功能特色
  7. Delphi判断文件是否正在被使用
  8. wireshark抓包过滤指定的字节数据
  9. java中static{}语句块详解
  10. Unity3D:创建对象