串列埠通訊中的float型資料的處理

2021-07-13 02:35:16 字數 964 閱讀 9784

1、將串列埠接收的資料轉換為float型資料

float cxxdlg::fourchar2float(char* szbuf,              //hex asc資料

bool bbigendian = false) //指示是否是big endian結構

float4byte;

float4byte f4b;

if(bbigendian) //大端模式 調整資料順序(因為pc機是小端模式)

else

return f4b.f; //返回浮點數資料

}

2、將float型資料轉換成cstring顯示,精確到小數點ndigit位

void cxxdlg::float2cstring(float fin, cstring& csout, int ndigit)

; //fin四捨五入,保留小數點後ndigit位

float ftimes = pow((float)10, ndigit);

int ntmp = (int)(fin*ftimes + 0.5);

fin = ntmp/ftimes;

sprintf_s(sztmp, sizeof(sztmp), "%f", fin);//將fin轉為字串

cstring cstmp = sztmp;

int npos = 0;

npos = cstmp.find(".");

csout = cstmp.left(npos);//小數點左邊的部分

csout += cstmp.mid(npos, ndigit+1);//小數點後面ndigit位,包括小數點

}

注:

變數f為float型,n為int型別,則能實現將f中的數值保留小數點後兩位,第三位四捨五入運算的表示式是

n=f*100+0.5,f=n/100.0

串列埠通訊中垃圾資料的處理

在雙機串列埠通訊中,開關機 串列埠開閉 期間傳送方有時候會發一些無效的垃圾資料,同時因為有的協議解析只有接收到一定數量才能解析。這就會出現乙個現象 如果開頭的資料是錯誤的,又沒有及時丟棄,後面正確的資料接著位置儲存,最終造成解析失敗。現象就是有時候資料互動正確,有時候錯誤 冷啟動第一次出現錯誤的機率...

串列埠通訊中整型和浮點型資料的處理和傳送

在做下位機通訊時往往會用到串列埠,包括下位機將資料傳輸給上位機,或者是下位機與下位機之間進行資料傳輸,這時候就會遇到傳送資料的問題,微控制器通過串列埠 傳送資料時往往是一次乙個位元組 8位 如果傳輸char 8位 型資料則很好辦,只需要直接傳送就可以了,但是在傳送int型資料和float型資料時 就...

互斥鎖在串列埠通訊中的簡單應用

嵌入式開發 硬體資源 互斥鎖 freertos作業系統 串列埠通訊 互斥鎖 英文 mutual exclusion,常縮寫為mutex,是一種常用在多執行緒程式設計中,防止多個執行緒對乙個公共資源做讀寫操作的機制,以保證共享操作的資料的完整性。互斥鎖是最基本的程序或者執行緒間同步的方法,用來保護臨界...