1. 程式人生 > >基於QT的串列埠傳輸漢字

基於QT的串列埠傳輸漢字

//----------------------------protocl.h-----------------------------

typedef struct{

    char str1 ;//1
    char str2 ;//2
    char str3 ;//3
    char str4 ;//4
    char str5 ;//5
    char str6 ;//6
    char str7 ;//7
    char str8 ;//8
    char str9 ;//9
    char str10 ;//10

    }__attribute__((packed)) CarInfo;

//-----------------------tran.h--------------------------------------------------

Q_PROPERTY(QByteArray str1 MEMBER m_str1 NOTIFY str1Changed))

void str1Changed(QByteArray);

QByteArray m_str1;

//-----------------------------------tran.qml-------------------------------------

TextField{
                id:str1
                Component.onCompleted: text = 0
                onTextChanged: SerialTran.str1 = text

            }

//-------------------------------tran.cpp-----------------------------

int len = m_str1.length();
    downFrame.carInfo.rpm = m_rpm.toInt(&ok,10);

    QString temp_str = QString::fromLocal8Bit(m_str1);

//-------------------debug--------------start------------------------

    QByteArray byte_str = temp_str.toLatin1();
    qDebug()<<m_str1<<"**************m_str1***********";
    qDebug()<<temp_str<<"**************temp_str***********";

    qDebug()<<byte_str<<"***************byte_str**********";

//-------------------------debug ----end-----------------------------

    for(int i =0;i<len;i++)
    {
        if(i==0)
        downFrame.carInfo.str1 = m_str1.at(0);
        if(i==1)
        downFrame.carInfo.str2 =  m_str1.at(1);
        if(i==2)
        downFrame.carInfo.str3 =  m_str1.at(2);
        if(i==3)
        downFrame.carInfo.str4 =  m_str1.at(3);
        if(i==4)
        downFrame.carInfo.str5 =  m_str1.at(4);
        if(i==5)
        downFrame.carInfo.str6 =  m_str1.at(5);
        if(i==6)
        downFrame.carInfo.str7 =  m_str1.at(6);
        if(i==7)
        downFrame.carInfo.str8 =  m_str1.at(7);
        if(i==8)
        downFrame.carInfo.str9 =  m_str1.at(8);
        if(i==9)
        downFrame.carInfo.str10 =  m_str1.at(9);

    }

//----------------------------------recv.h----------------------------

Q_PROPERTY(QByteArray str1 MEMBER m_str1  NOTIFY str1Changed)
Q_PROPERTY(QString str MEMBER m_str  NOTIFY strChanged)

signals:
    void str1Changed(QByteArray);

    void strChanged(QString);

private:
    QByteArray m_str1;
    QString m_str;

//----------------------recv.cpp-----------------------

 m_str1.append(data.str1);
    m_str1.append(data.str2);
    m_str1.append(data.str3);
    m_str1.append(data.str4);
    m_str1.append(data.str5);
    m_str1.append(data.str6);
    m_str1.append(data.str7);
    m_str1.append(data.str8);
    m_str1.append(data.str9);
    m_str1.append(data.str10);

   emit str1Changed(m_str1);

//---------------------way 2----------------------------------

    m_str = QString::fromLocal8Bit(m_str1);
    qDebug()<<m_str1<<"++++++++++++++++m_str1++++++++++++++++++++++";
    qDebug()<<m_str<<"++++++++++++++++m_str++++++++++++++++++++++";

    emit strChanged(m_str);

//----------------------------------------------------------------------

    m_str1.clear();//清空內容

//-------------------recv.qml-------------------------

Text {
        id: test1
        text: CarStatus.str1
        color: "red"
        font.pixelSize: 40

    }

Text {
        id: text2
        text: CarStatus.str
        color: "red"
        font.pixelSize: 40
    }

相關推薦

基於QT串列傳輸漢字

//----------------------------protocl.h-----------------------------typedef struct{    char str1 ;//1    char str2 ;//2    char str3 ;//3 

定時器IO模擬串列傳輸

@far @interrupt void TIM2_isr(void) { TIM2->SR1 &= 0x7E; TIM2->CNTRH = 0; TIM2->CNTRL = 0; if(mBT.status == BT_STATE_TX) // 傳輸 {

linux串列傳輸檔案

#include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <string.h> #include <sys/types.

C#串列傳輸中文字元

傳送:  Encoding gb = System.Text.Encoding.GetEncoding("gb2312");  byte[] bytes = gb.GetBytes("中文"); &n

串列傳輸檔案來啟動系統

原文:http://www.cnblogs.com/lidabo/p/4780866.html 假設有一種開發環境,一塊板子,除了串列埠,沒有任何外部出入輸出裝置,沒有sd卡,沒有網線,這個時候如果你想跟這塊板子傳輸互動檔案,要怎麼辦? 根據modem所採用的檔案傳輸

串列傳輸檔案(YModem協議)

需求:通過串列埠線實現應用程式韌體燒錄到微控制器的flash中開發語言:C#串列埠設定:串列埠號,波特率:115200;檔案傳輸函式如下: //燒錄檔案函式 public bool YmodemUploadFile() {

串列傳輸工具sz和rz的安裝與使用

超級終端和SecureCRT支援Zmodem方式來進行檔案的收發(當然是通過串列埠線),使用他們在個人電腦(Host)和開發板(Target)之間傳檔案,要確保開發板已經安裝了sz和rz這兩個工具。使用方法很簡單: # rz (回車) 超級終端會彈出對話方塊讓你選擇檔案,你

樹莓派+Qt+影象識別+串列傳輸

CAMsearch.pro QT += core QT -= gui TARGET = test CONFIG += console CONFIG -= app_bundle TEMPLATE = app SOURCES += main.cpp

交叉編譯lrzsz(用於串列傳輸檔案)

 交叉編譯lrzsz 2016-03-20 1. 系統環境: Distributor ID:    Ubuntu Description:    Ubuntu 14.04.1 LTS Release:    14.04 Codename:    trusty 2. 原始碼

基於虛擬串列的新RobotFramework測試環境

現狀 系統測試使用RobotFramework。 CI伺服器在機房,雖然也有串列埠,但是,機房不適合拜訪測試裝置。 因此,在實驗區,額外放了一臺RobotFramework測試主機(CI伺服器的從機),由CI伺服器排程它幹活。見下圖 期望 由於對簡

Kinect V2 與 V1 的區別 和 V1 骨骼資料 串列傳輸時卡死解決。

        相對於第一代Kinect for Windows,第二代Kinect for Windows感應器具備了更高的解析度和色彩識別度,使識別更加精準,為開發者製作更精良的畫面提供了良好支援。通過更高的深度保真和大幅改進的噪聲基底,第二代Kinect for W

keil編譯的程式 “漢字顯示不全、串列傳送漢字接收後亂碼缺失”問題

今天知道一個keil的bug,就是當漢字的機內碼包含0xfd時,keil就會自動丟棄fd,mark一下。 解決方法: 1、遇到帶有fd的漢字採用機內碼替代, 2.給keil打補丁。具體過程可百度

Ubuntu下安裝和使用lrzsz,實現串列傳輸檔案&&minicom

一、安裝配置minicom 1、安裝minicom:sudo apt-get install minicom 2、配置minicom:sudo minicom -s ,        A.進入Serial port setup 選擇相應的埠和頻率。       (將選項A的

嵌入式linux開發板 與主機linux 串列傳輸檔案

一  在嵌入式linux和主機linux下可以通過minicom       1)安裝minicom  有的系統沒有安裝minicom    fedora下只需 yum install minicom即可       2)配置minicom             第一次執

windows下C語言版串列接收程式(基於VS2017)

#include "pch.h" #define _CRT_SECURE_NO_WARNINGS  #include <iostream> #include <stdio.h> #include <windows.h> #include <s

windows下C語言版串列傳送程式(基於VS2017)

#include "pch.h" #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <windows.h> #include <string.h> #include <conio.h&

如何在串列除錯助手上,使用printf()函式顯示十進位制的資料及漢字說明(c語言版)

估計很多人和我一樣,很想直接在串列埠除錯助手上顯示十進位制資料,我最近在做一個專案,當然本人也是小白,但這個問題已經被我解決了,希望幫助需要的人。 我們都知道,串列埠助手一般都只能顯示十六進位制資料和字元,如果我們想將控制器的實時資料通過串列埠傳送到上位機,方便監測,最好直接顯示十進位制資料。廢

基於C# Winform的串列資料接收

https://blog.csdn.net/woolnil/article/details/78048272 今天,我分享一篇文章,講述 基於C# Winform的串列埠資料接收程式設計(適合大概明白WinForm程式設計的同學,沒有接觸過WinForm的同學下載原始碼學習)

基於51 微控制器的串列收發資料

在進行串列埠的收發資料過程中一定要注意波特率的問題。 大多數51微控制器用的都是11m晶振而只有少部分用的是奇葩的12m(樓主的就是),在12m晶振進行串列埠通訊時切忌要將波特率設定為4800以下,應為12m晶振的波特率在9600以上誤差很大容易丟失資料,動手能力強的可以折騰一下用定時器輸出96

QT開發的串列通訊軟體(基於qextserialport工具)

研一上了楊迎澤老師的一門《列車網路與通訊》課程,課程的最後老師給我們分配的小作業居然是寫上位機控制一臺程控電流源,我在查閱了這臺程控電流源的手冊後,發現它的通訊方式是串列埠,而且在串列埠通訊的基礎上指定了一套詳細的通訊協議,基於此,我花了小半天的時間做了一個上位機,完成了任務,這裡主要分享一下基