字模上位机实现

Posted steven_lg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字模上位机实现相关的知识,希望对你有一定的参考价值。

具体功能

1.对输入的文字取模,得到每个文字16x16的数据32byte。

2.将32byte数据写入到文件中并保存下来。

捕获

#include "mainwidget.h"

mainWidget::mainWidget(QWidget *parent)
    : QWidget(parent)
{
    paintArea = new PaintArea;        //定义控键设置参数
    pLineEdit = new QLineEdit;
    pTextBrower = new QTextBrowser;
    pPushButton = new QPushButton;
    pPushBtn    = new QPushButton;
    plabel = new QLabel;
    //pinputString = new QString;
    pLineEdit->setFixedWidth(500);
    pLineEdit->setFixedHeight(25);
    plabel->setText("请输入内容");


    pPushButton->setText("取模");
    pPushButton->setFixedHeight(25);
    pPushBtn->setText("保存");
    pPushBtn->setFixedHeight(25);
    pTextBrower->setFixedHeight(300);

    rightLayout = new QGridLayout;        //划分窗口
    rightLayout->addWidget(pLineEdit,0,0);
    rightLayout->addWidget(pPushButton,0,1);
    rightLayout->addWidget(plabel,1,0);
    rightLayout->addWidget(pPushBtn,1,1);

    QVBoxLayout *pv1Layout = new QVBoxLayout(this);
    pv1Layout->addLayout(rightLayout);
    pv1Layout->addWidget(pTextBrower);

    connect(pPushButton,SIGNAL(clicked()),this,SLOT(pushbutton_clicked()));    //取模按键槽函数连接
    connect(pPushBtn,SIGNAL(clicked()),this,SLOT(pushbt_clicked()));        //保存按键槽函数链接
}

mainWidget::~mainWidget()
{

}

void mainWidget::pushbutton_clicked()

{
    pTextBrower->setPlainText(" ");            //清除空间显示
    if(pLineEdit->text() == NULL)            //输入控件为空则返回
    {
        return;
    }
    qDebug() << "button clocked";            //取目标文字
    qDebug() << pLineEdit->text();
    pinputString = pLineEdit->text();
    qDebug() << QString(pinputString[0]);
    qDebug() << QString(pinputString[1]);
    qDebug() << pinputString.size();

    QSize size(16,16);                //设置图片大小
    QImage image(size,QImage::Format_ARGB32);        //设置图片格式    
    hanzicode = 0;

    image.fill(Qt::white);                //填充白色背景

    QPainter painter(&image);                //为图片定义画笔并设置
    painter.setCompositionMode(QPainter::CompositionMode_SourceOver);
    QPen ppen = painter.pen();
    ppen.setColor(Qt::black);        
    QFont pfont = painter.font();                //定义字体        
    pfont.setBold(true);
    pfont.setPixelSize(16);                //字体大小
    painter.setPen(ppen);
    painter.setFont(pfont);


    for(uchar k = 0;k < pinputString.size(); k++)        //遍历输入文字
    {
        image.fill(Qt::white);
        painter.drawText(image.rect(),Qt::AlignLeft | Qt::AlignVCenter,QString(pinputString[k]));        //将目标文字写入图片中
        image.save("C:/Users/Administrator/Desktop/LED_ARY/build-codeary-Desktop_Qt_5_9_9_MinGW_32bit-Debug/debug/myImage.png");

        for(unsigned char i = 0;i < 16;i++)            //对目标图片像素遍历,让图片二值化
        {
            hanzicode = 0;
            for(unsigned char j = 0;j < 16; j++)
            {
                hanzicode >>= 1;
                if(image.pixel(i,j) == 0xff000000)
                {
                    hanzicode |= 0x8000;
                }
            }

            //qDebug("%",hanzicode);
            qDebug("%s",qPrintable(QString::number(hanzicode,2).rightJustified(16,\'0\')));
            hziCode[2*i+1] = uchar(hanzicode >>8);      //内围PIN 1,3,5,7,9...        //将得到数值存储到字模数组中
            hziCode[2*i] =uchar( hanzicode);            //外围PIN 0,2,4,6,8...   
        }                                    //得到数据显示字符串
        pstring = "0x"+QString::number(hziCode[0],16).rightJustified(2,\'0\') + "," + "0x"+QString::number(hziCode[1],16).rightJustified(2,\'0\') + "," +"0x"+QString::number(hziCode[2],16).rightJustified(2,\'0\')+ "," + "0x"+QString::number(hziCode[3],16).rightJustified(2,\'0\') + "," \\
            + "0x"+QString::number(hziCode[4],16).rightJustified(2,\'0\') + "," + "0x"+QString::number(hziCode[5],16).rightJustified(2,\'0\') + "," + "0x"+QString::number(hziCode[6],16).rightJustified(2,\'0\') + "," + "0x"+QString::number(hziCode[7],16).rightJustified(2,\'0\') + "," \\
            + "0x"+QString::number(hziCode[8],16).rightJustified(2,\'0\') + "," + "0x"+QString::number(hziCode[9],16).rightJustified(2,\'0\') + "," + "0x"+QString::number(hziCode[10],16).rightJustified(2,\'0\') + "," + "0x"+QString::number(hziCode[11],16).rightJustified(2,\'0\') + "," \\
            + "0x"+QString::number(hziCode[12],16).rightJustified(2,\'0\') + "," + "0x"+QString::number(hziCode[13],16).rightJustified(2,\'0\') + "," + "0x"+QString::number(hziCode[14],16).rightJustified(2,\'0\') + "," + "0x"+QString::number(hziCode[15],16).rightJustified(2,\'0\') + "," + "\\n" \\
            + "0x"+QString::number(hziCode[16],16).rightJustified(2,\'0\') + "," + "0x"+QString::number(hziCode[17],16).rightJustified(2,\'0\') + "," + "0x"+QString::number(hziCode[18],16).rightJustified(2,\'0\') + "," + "0x"+QString::number(hziCode[19],16).rightJustified(2,\'0\') + "," \\
            + "0x"+QString::number(hziCode[20],16).rightJustified(2,\'0\') + "," + "0x"+QString::number(hziCode[21],16).rightJustified(2,\'0\') + "," + "0x"+QString::number(hziCode[22],16).rightJustified(2,\'0\') + "," + "0x"+QString::number(hziCode[23],16).rightJustified(2,\'0\') + "," \\
            + "0x"+QString::number(hziCode[24],16).rightJustified(2,\'0\') + "," + "0x"+QString::number(hziCode[25],16).rightJustified(2,\'0\') + "," + "0x"+QString::number(hziCode[26],16).rightJustified(2,\'0\') + "," + "0x"+QString::number(hziCode[27],16).rightJustified(2,\'0\') + "," \\
            + "0x"+QString::number(hziCode[28],16).rightJustified(2,\'0\') + "," + "0x"+QString::number(hziCode[29],16).rightJustified(2,\'0\') + "," + "0x"+QString::number(hziCode[30],16).rightJustified(2,\'0\') + "," + "0x"+QString::number(hziCode[31],16).rightJustified(2,\'0\') + "," ;

        if(k == 0)                                //显示字符数据
        {
            pTextBrower->setPlainText(pstring);

        }
        else
        {
            pTextBrower->append(pstring);
        }
    }
    plabel->setText("取模完成");
}

void mainWidget::pushbt_clicked()
{
    qDebug() << "保存文件";                            //将数据保存到目标文件中
    QFile file("out.txt");

    if(file.open(QFile::WriteOnly | QFile::Truncate))
    {
        QTextStream out(&file);
        out << pTextBrower->toPlainText() << qSetFieldWidth(10) << center <<endl;
    }
    plabel->setText("文件已保存为out.txt");
}
上位机使用效果

捕获

点击保存后会在软件根目录生成out.txt的保存文件。

以上是关于字模上位机实现的主要内容,如果未能解决你的问题,请参考以下文章

怎样用labview编写上位机软件?

怎样用vc编写上位机软件

如何编程使上位机(界面c#)与下位机(单片机keil c)通过TCP/UDP协议来实现通信,最好有源代码,谢谢~~

上位机用USB做虚拟串口,总算抓到一个纯代码的总结了,没有坑的完美解决。

zigbee上位机和网关通信代码以及代码应该放在啥部分,涉及到操作系统的

C#上位机自动获取机器人日志与报警