Assistant de débogage réseau et port série

Table des matières Chapitre
1 Introduction1
1.1 Contexte du projet1
1.2 Statut de la recherche au pays et à l'étranger1
1.3 Contenu principal de la recherche2
1.4 Structure organisationnelle du papier2
Chapitre 2 Analyse des exigences logicielles3
2.1 Analyse de faisabilité3
2.1.1 Faisabilité économique3
2.1.2 Faisabilité technique Performance 3
2.1.3 Faisabilité opérationnelle 3
2.2 Exigences aperçu 3
2.3 Analyse des exigences fonctionnelles 6
2.3.1 Module d'équipement 6
2.3.2 Module d'informations sur l'équipement 8
2.3.3 Module d'envoi de données 9
2.3.4 Module de réception de données 12
2.3.5 Paramètres du système Module 13
2.3.5 Autres modules fonctionnels 14
2.4 Non -analyse des exigences fonctionnelles 21
2.4.1 Analyse des exigences de performance 21
2.4.2 Analyse de fiabilité 21
2.5 Résumé de ce chapitre 21
Chapitre 3 Conception du système logiciel 21
3.1 Conception globale 21
3.1.1 Conception du cadre de base 21
3.1.2 Conception de la structure fonctionnelle 22
3.1. 3 Introduction aux technologies clés 23
3.2 Conception détaillée 24
3.2.1 Module d'équipement 24
3.2.2 Module d'informations sur l'équipement 26
3.2.3 Module d'envoi de données 27
3.2.4 Module de réception de données 30
3.2.5 Module de paramétrage du système 31
3.2.6 Autres modules fonctionnels 32
3.3 Résumé de ce chapitre 36
Chapitre 4 Implémentation du logiciel 36
4.1 Interface globale 37
4.1.1 Conception de l'interface 37
4.1.2 Conception de l'architecture logicielle 37
4.2 Module Équipement 38
4.2.1 Conception de la classe MyObject 38
4.2.2 Création d'appareil 40
4.2.3 Suppression d'
appareil 42 4.3 Module d'informations sur l'appareil
44 4.4 Module d'envoi de données 46
4.4.1 Envoi unique 46
4.4.2 Envoi programmé 47
4.4.3 Envoi de set Mode 48
4.5 Module de réception des données 49
4.6 Module de paramétrage du système 49
4.7 Autres modules fonctionnels 50
4.7.1 Effacer la case de réception des données 51
4.7.2 Effacer la case d'envoi des données 51
4.7.3 Charger le fichier 51
4.7.4 Exporter les données 52
4.7.5 Mots affichés Nombre de sections et nombre de réinitialisations 52
4.7.6 Explication détaillée des fonctions 53
4.8 Résumé de ce chapitre 54
Chapitre 5 Tests logiciels 54
5.1 Principes de test 54
5.2 Environnement de test 55
5.3 Test des modules d'équipement 55
5.3.1 Créer un appareil 55
5.3.2 Supprimer un appareil 56
5.4 Test du module d'informations sur l'appareil 56 5.5
Test du module de données d'envoi 57
5.5.1 Test de la fonction d'envoi unique 57
5.6.2 Test de la fonction d'envoi programmé 58
5.6.3 Test de la fonction Définir le mode d'envoi 58
5.6 Test du module de réception de données 60
5.7 Module de configuration du système 60
5.8 Autres tests de modules fonctionnels 61
5.8.1 Test de fonction d'effacement de la boîte de réception de données 61
5.8.2 Test de fonction d'effacement de la boîte d'envoi de données 62
5.8.3 Test de fonction de chargement de fichier 63
5.8.4 Exporter des données Fonctionnel test 63
5.8.5 Test de la fonction d'affichage du numéro d'octet 64
5.8.6 Test de la fonction d'effacement du compte 64
5.8.7 Test de la fonction d'affichage du numéro d'appareil 65
Chapitre 6 Résumé et Outlook 66
6.1 Résumé 66
6.2 Outlook 66
Références 67
Remerciements 68
2.3 Analyse des exigences fonctionnelles Analyse
des exigences est un processus très important dans le cycle de vie du logiciel. Il détermine la qualité de l'ensemble du projet logiciel et constitue également le succès ou l'échec de l'ensemble du projet logiciel. Il est nécessaire que toutes les fonctions du logiciel puissent être utilisées normalement et que l'interface soit belle.
2.3.1 Module Équipement
Le module périphérique de l'assistant de débogage permet principalement aux utilisateurs de créer et de supprimer des périphériques. Pour créer des appareils, les utilisateurs peuvent choisir de créer des clients et des serveurs de type TCP ou des clients et serveurs de type UDP. Le périphérique série est automatiquement détecté et créé. Pour supprimer un appareil, l'appareil créé est supprimé. Le diagramme d'activité pour la création du périphérique est présenté dans la figure 2-2.
Insérer la description de l'image ici

#include "common.h"
#include <QDebug>
common::common(QWidget *parent) : QTextEdit(parent)
{
    
    
    connect(this,&QTextEdit::cursorPositionChanged,this,&common::changePosSLOT);
}

QString common::getCurrTime()
{
    
    
    return QTime::currentTime().toString();
}

QByteArray common::hexStrToByteArray(const QString &str)
{
    
    
    /*qDebug()<<"hexStrToByteArray::str="<<str;
    QByteArray senddata;
    int hexdata, lowhexdata;
    int hexdatalen = 0;
    int len = str.length();
    senddata.resize(len / 2);
    char lstr, hstr;

    for (int i = 0; i < len;) {
        hstr = str.at(i).toLatin1();

        if (hstr == ' ') {
            i++;
            continue;
        }
        i++;
        if (i >= len) {
            break;
        }

        lstr = str.at(i).toLatin1();
        hexdata = convertHexChar(hstr);
        lowhexdata = convertHexChar(lstr);
        qDebug()<<"hexStrToByteArray::hexdata="<<str;
        qDebug()<<"hexStrToByteArray::lowhexdata="<<str;
        if ((hexdata == 16) || (lowhexdata == 16)) {
            break;
        } else {
            hexdata = hexdata * 16 + lowhexdata;
        }

        i++;
        qDebug()<<"hexStrToByteArray::data="<<(char)hexdata;
        senddata[hexdatalen] = (char)hexdata;
        hexdatalen++;
    }

    senddata.resize(hexdatalen);
    */
        bool ok;
        QByteArray ret;
        QString str1;
        QStringList sl;
        QString str2;
        qDebug()<<"str.length="<<str.length();
        for(int i=1;i<=str.length();i++)
        {
    
    
            qDebug()<<"i="<<i;
            str2.append(str.at(i-1));
            qDebug()<<"str2="<<str2;
            if(i%2==0)//每两个字符放一起
            {
    
    
                sl.append(str2);
                str2.clear();
            }
        }

        foreach (QString s, sl) {
    
    
            if(!s.isEmpty())
            {
    
    
                //byte类型的数字要&0xff再赋值给int类型,其本质原因就是想保持二进制补码的一致性。
                char c = s.toInt(&ok,16)&0xFF;//任何一个数&0xFF都是它本身,这里为了保持补码的一致性(由byte(8位)-》int(32位))
                char d= 10;
                qDebug()<<"d="<<d;
                if(ok){
    
    
                    ret.append(c);
                }else{
    
    
                    qDebug()<<"非法的16进制字符:"<<s;
                }
            }
        }
    return ret;
}

/*char common::convertHexChar(char ch)
{
    if ((ch >= '0') && (ch <= '9')) {
        return ch - 0x30;
    } else if ((ch >= 'A') && (ch <= 'F')) {
        return ch - 'A' + 10;
    }else {
        return (-1);
    }
}*/

//只能输入16进制数和回退符
void common::keyPressEvent(QKeyEvent *event)
{
    
    
    if(event->key()==Qt::Key_0||event->key()==Qt::Key_1||event->key()==Qt::Key_2||event->key()==Qt::Key_3||event->key()==Qt::Key_4||event->key()==Qt::Key_5||event->key()==Qt::Key_6||event->key()==Qt::Key_7||event->key()==Qt::Key_8||event->key()==Qt::Key_9||event->key()==Qt::Key_A||event->key()==Qt::Key_B||event->key()==Qt::Key_C||event->key()==Qt::Key_D||event->key()==Qt::Key_E||event->key()==Qt::Key_F)
    {
    
    
        QString str=this->toPlainText();//保存已经有的
        str.append(event->text().toUpper());//添加新传来的
        this->clear();
        this->append(str);
    }
    else if(event->key()==Qt::Key_Backspace) {
    
    
        QString str=this->toPlainText();
        QString str1=str.remove(str.length()-1,1);
        this->clear();
        this->append(str1);
    }
}

//限制中文输入
void common::changePosSLOT()
{
    
    
    QString str=this->toPlainText();
    if(str=="")
        return;
    QString ch=str.at(str.length()-1);
    QChar ch1=str.at(str.length()-1);
    char ch2=ch1.toLatin1();
    qDebug()<<"str="<<str<<"  ch="<<ch;
    if((ch2>='A')&&(ch2<='F'))
    {
    
    
        //ch正常AF";
    }
    else if ((ch2>='0')&&(ch2<='9')) {
    
    
        //正常09";
    }
    else {
    
    
        //ch错误";
        if(!isFile)
        {
    
    
            str.remove(str.length()-1,1);
            this->clear();
            this->append(str);
        }
    }
}

Insérer la description de l'image ici
Insérer la description de l'image ici
Insérer la description de l'image ici
Insérer la description de l'image ici
Insérer la description de l'image ici
Insérer la description de l'image ici
Insérer la description de l'image ici
Insérer la description de l'image ici
Insérer la description de l'image ici
Insérer la description de l'image ici
Insérer la description de l'image ici
Insérer la description de l'image ici
Insérer la description de l'image ici
Insérer la description de l'image ici
Insérer la description de l'image ici
Insérer la description de l'image ici
Insérer la description de l'image ici
Insérer la description de l'image ici
Insérer la description de l'image ici
Insérer la description de l'image ici
Insérer la description de l'image ici
Insérer la description de l'image ici
Insérer la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/newlw/article/details/133064664
conseillé
Classement